<?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>46883</bug_id>
          
          <creation_ts>2010-09-30 02:18:52 -0700</creation_ts>
          <short_desc>IDBDatabase::createObjectStore/removeObjectStore and IDBObjectStore::createIndex/removeIndex should be synchronous.</short_desc>
          <delta_ts>2010-10-05 10:11:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Popescu">andreip</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bulach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>287444</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-09-30 02:18:52 -0700</bug_when>
    <thetext>IDBDatabase::createObjectStore/removeObjectStore and IDBObjectStore::createIndex/removeIndex should be synchronous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287456</commentid>
    <comment_count>1</comment_count>
      <attachid>69321</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-09-30 02:41:24 -0700</bug_when>
    <thetext>Created attachment 69321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287462</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-30 03:11:04 -0700</bug_when>
    <thetext>Attachment 69321 did not build on chromium:
Build output: http://queues.webkit.org/results/4177027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287468</commentid>
    <comment_count>3</comment_count>
      <attachid>69323</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-09-30 03:21:27 -0700</bug_when>
    <thetext>Created attachment 69323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287474</commentid>
    <comment_count>4</comment_count>
      <attachid>69321</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-30 03:32:57 -0700</bug_when>
    <thetext>Comment on attachment 69321
Patch

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

&gt; WebCore/storage/IDBDatabase.cpp:68
&gt; +    m_backend-&gt;removeObjectStore(name);

this needs the transaction

&gt; WebCore/storage/IDBDatabaseBackendImpl.cpp:172
&gt; +void IDBDatabaseBackendImpl::removeObjectStore(const String&amp; name)

need the transaction passed in

&gt; WebCore/storage/IDBObjectStoreBackendImpl.cpp:92
&gt; +    , m_id(0),

maybe make an invalid id constant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287475</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-30 03:33:05 -0700</bug_when>
    <thetext>couple comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287476</commentid>
    <comment_count>6</comment_count>
      <attachid>69323</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-30 03:40:35 -0700</bug_when>
    <thetext>Comment on attachment 69323
Patch

besides previous comment, lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288401</commentid>
    <comment_count>7</comment_count>
      <attachid>69498</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-10-01 12:09:02 -0700</bug_when>
    <thetext>Created attachment 69498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288402</commentid>
    <comment_count>8</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-10-01 12:11:20 -0700</bug_when>
    <thetext>I rebased my patch after http://trac.webkit.org/changeset/68795 and the conflict resolving was non-trivial. Also modified the layout tests and updated the expected tests output. I would therefore be grateful if I could get another review. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289014</commentid>
    <comment_count>9</comment_count>
      <attachid>69498</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-04 11:16:43 -0700</bug_when>
    <thetext>Comment on attachment 69498
Patch


close


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

&gt; LayoutTests/storage/indexeddb/objectstore-cursor.html:67
&gt; +    if (window.nextToAdd &gt; 0)

hu?

&gt; LayoutTests/storage/indexeddb/resources/shared.js:82
&gt; +    onfinished();

ugh!  I&apos;m so stupid...I just made this change...should have realized it&apos;s worthless (and not made the change in my last patch).  Maybe put in a FIXME to make this function sync and not do a callback like this.

&gt; WebCore/storage/IDBDatabaseBackendImpl.cpp:191
&gt; +    RefPtr&lt;IDBTransactionBackendInterface&gt; rpTransaction = transaction;

transactionPtr...here and elsewhere

&gt; WebCore/storage/IDBIndexBackendImpl.cpp:55
&gt; +    , m_id(0)

use a constant instead of 0 maybe?

&gt; WebCore/storage/IDBIndexBackendImpl.h:52
&gt; +    int64_t id() const { return m_id; }

ditto to all comments below

&gt; WebCore/storage/IDBObjectStoreBackendImpl.cpp:335
&gt; +    transaction-&gt;didCompleteTaskEvents();

Wait...why do we need this?  Isn&apos;t this implicit whenever a task&apos;s events finish?

&gt; WebCore/storage/IDBObjectStoreBackendImpl.h:55
&gt;      int64_t id() const { return m_id; }

Assert the id is valid maybe?  ...here and everywhere that id is used?

Please put in a comment here describing the subtleties of this..and how stuff using id should only be queued asyncly.

We should put a fixme or actual code into the transaction coordinator to make sure that it blocks any transactions on this object store on this current transaction finishing....

&gt; WebCore/storage/IDBTransactionBackendImpl.cpp:146
&gt; +void IDBTransactionBackendImpl::taskEventTimerFired(Timer&lt;IDBTransactionBackendImpl&gt;*)

Hm...this still seems a bit fragile...but I guess it&apos;s good enough for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289268</commentid>
    <comment_count>10</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-10-04 16:24:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 69498 [details])
&gt; 
&gt; close
&gt; 
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69498&amp;action=review
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/objectstore-cursor.html:67
&gt; &gt; +    if (window.nextToAdd &gt; 0)
&gt; 
&gt; hu?
&gt; 

It&apos;s the same pattern used elsewhere for loading data into an object store.

&gt; &gt; LayoutTests/storage/indexeddb/resources/shared.js:82
&gt; &gt; +    onfinished();
&gt; 
&gt; ugh!  I&apos;m so stupid...I just made this change...should have realized it&apos;s worthless (and not made the change in my last patch).  Maybe put in a FIXME to make this function sync and not do a callback like this.
&gt; 

Added.

&gt; &gt; WebCore/storage/IDBDatabaseBackendImpl.cpp:191
&gt; &gt; +    RefPtr&lt;IDBTransactionBackendInterface&gt; rpTransaction = transaction;
&gt; 
&gt; transactionPtr...here and elsewhere
&gt; 
&gt; &gt; WebCore/storage/IDBIndexBackendImpl.cpp:55
&gt; &gt; +    , m_id(0)
&gt; 
&gt; use a constant instead of 0 maybe?
&gt; 
&gt; &gt; WebCore/storage/IDBIndexBackendImpl.h:52
&gt; &gt; +    int64_t id() const { return m_id; }
&gt; 
&gt; ditto to all comments below
&gt;

You mean above? Done.
 
&gt; &gt; WebCore/storage/IDBObjectStoreBackendImpl.cpp:335
&gt; &gt; +    transaction-&gt;didCompleteTaskEvents();
&gt; 
&gt; Wait...why do we need this?  Isn&apos;t this implicit whenever a task&apos;s events finish?
&gt; 

It isn&apos;t. These tasks don&apos;t have any events.

&gt; &gt; WebCore/storage/IDBObjectStoreBackendImpl.h:55
&gt; &gt;      int64_t id() const { return m_id; }
&gt; 
&gt; Assert the id is valid maybe?  ...here and everywhere that id is used?
&gt; 

Asserting.

&gt; Please put in a comment here describing the subtleties of this..and how stuff using id should only be queued asyncly.
&gt; 
&gt; We should put a fixme or actual code into the transaction coordinator to make sure that it blocks any transactions on this object store on this current transaction finishing....
&gt;


Yep, that should happen once we have a thread per transaction and we will implement locking. The object store will be locked until the setVersion transaction commits, thereby guaranteeing that no other transaction can use its backend while it has the invalid ID.

 
&gt; &gt; WebCore/storage/IDBTransactionBackendImpl.cpp:146
&gt; &gt; +void IDBTransactionBackendImpl::taskEventTimerFired(Timer&lt;IDBTransactionBackendImpl&gt;*)
&gt; 
&gt; Hm...this still seems a bit fragile...but I guess it&apos;s good enough for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289289</commentid>
    <comment_count>11</comment_count>
      <attachid>69715</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-10-04 16:37:33 -0700</bug_when>
    <thetext>Created attachment 69715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289347</commentid>
    <comment_count>12</comment_count>
      <attachid>69728</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-10-04 18:44:23 -0700</bug_when>
    <thetext>Created attachment 69728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289357</commentid>
    <comment_count>13</comment_count>
      <attachid>69728</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-04 19:44:24 -0700</bug_when>
    <thetext>Comment on attachment 69728
Patch

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

&gt; WebCore/storage/IDBIndexBackendImpl.h:54
&gt; +        ASSERT(m_id != InvalidId);

ditto

&gt; WebCore/storage/IDBObjectStoreBackendImpl.h:60
&gt; +    void setId(int64_t id) { m_id = id; }

assert it&apos;s not valid to begin with?

also, i wonder if these should be un-inlined


r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289678</commentid>
    <comment_count>14</comment_count>
      <attachid>69728</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-05 09:55:11 -0700</bug_when>
    <thetext>Comment on attachment 69728
Patch

sitll looks fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289703</commentid>
    <comment_count>15</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-10-05 10:11:32 -0700</bug_when>
    <thetext>Committed r69121.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69321</attachid>
            <date>2010-09-30 02:41:24 -0700</date>
            <delta_ts>2010-10-01 12:08:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46883-20100930104121.patch</filename>
            <type>text/plain</type>
            <size>42693</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjY0YTc3ZDZkZGFiZGQzMTA1MTY2N2UyNjc4MDI2MmNlMWMxNWM3MC4uOTVjZWU0MGJlODZjNDEy
ZTBhMzYwZjBmZjFmODUyYjg0NTJkY2ZmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOS0zMCAgQW5k
cmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3Jl
L3JlbW92ZU9iamVjdFN0b3JlIGFuZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgvcmVtb3Zl
SW5kZXggc2hvdWxkIGJlIHN5bmNocm9ub3VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4ODMKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BT
ISkKKworICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRh
YmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAqIHN0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6SURC
SW5kZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6aWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6c2V0SWQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleCk6Cisg
ICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpzZXRJZCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaDoKKwogMjAxMC0wOS0yOSAgSm/Do28gUGF1bG8gUmVjaGkgVml0YSAgPGpw
cnZpdGFAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDBlYTdhYzI5MjY3NGNlYTYwOTcwMzVmYTVm
ZTVjODk3ZjQ0ZGI2YjcuLmJhMGI2MDRmYTdkOGNiMjI4NzUwOWNhOGMyNjhlNTNiN2U1ZThkMjkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtNDgsMTEgKzQ4LDExIEBAIElEQkRhdGFiYXNl
Ojp+SURCRGF0YWJhc2UoKQogewogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50KQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcykpOwotICAgIG1fYmFja2Vu
ZC0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgcmVxdWVz
dCk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgLy8gRklYTUU6IFJhaXNlIGEgTk9UX0FMTE9X
RURfRVJSIGlmIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uIGlzIDAuCisgICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2JhY2tlbmQtPmNyZWF0
ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG1fc2V0VmVyc2lvblRy
YW5zYWN0aW9uLmdldCgpKTsKKyAgICByZXR1cm4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmpl
Y3RTdG9yZS5yZWxlYXNlKCksIDApOwogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgbWV0aG9k
LgpAQCAtNjMsMTEgKzYzLDkgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJh
c2U6Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQKICAgICByZXR1cm4g
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmplY3RTdG9yZS5yZWxlYXNlKCksIDApOwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIElE
QkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcykpOwotICAgIG1fYmFja2VuZC0+cmVtb3ZlT2JqZWN0U3RvcmUo
bmFtZSwgcmVxdWVzdCk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgbV9iYWNrZW5kLT5yZW1v
dmVPYmplY3RTdG9yZShuYW1lKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRh
YmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHZlcnNpb24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2Uu
aCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCmluZGV4IGRjNzAxMTQ0OWIxODRmZmM1
Njg1OTRiZTBkZTExNGU2ODJiYTZjYjUuLjQ4ZjRhMjVhODFmODI1ZjJkYzBlMDQ2YzA3ZjMwMWZl
NWI1NGYwNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dmVyc2lvbigp
OyB9CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmQtPm9iamVjdFN0b3JlcygpOyB9CiAKLSAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IGNyZWF0ZU9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCA9IFN0cmluZygpLCBib29sIGF1
dG9JbmNyZW1lbnQgPSBmYWxzZSk7CisgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgg
PSBTdHJpbmcoKSwgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2UpOwogICAgIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQg
c2hvcnQgbW9kZSA9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwotICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gcmVtb3ZlT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gc2V0VmVyc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRE9N
U3RyaW5nTGlzdCogc3RvcmVOYW1lcyA9IDAsIHVuc2lnbmVkIHNob3J0IG1vZGUgPSBJREJUcmFu
c2FjdGlvbjo6UkVBRF9PTkxZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IDApOyAvLyBGSVhNRTogd2hhdCBzaG91bGQg
dGhlIGRlZmF1bHQgdGltZW91dCBiZT8KQEAgLTY2LDYgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBJ
REJEYXRhYmFzZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogCiAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fc2V0VmVyc2lvblRyYW5zYWN0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlLmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwK
aW5kZXggMzQ3YjNhN2M4NDFmOTdkNWFiNDFlZGE2MjVmMjRiZTNhMTE5MWNkYy4uMjIzZjljYWUw
MWQ5NTlmOTc2YjhkYzIzMGVlNzU1MzY5ZjQ5ZmQ1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRs
CkBAIC0zMywxMCArMzMsMTAgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZXM7CiAKIAotICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBjcmVhdGVPYmplY3RTdG9yZShp
biBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBhdXRvSW5jcmVtZW50KTsK
KyAgICAgICAgSURCT2JqZWN0U3RvcmUgY3JlYXRlT2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5h
bWUsIGluIFtPcHRpb25hbCwgQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBrZXlQ
YXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0b0luY3JlbWVudCk7CiAgICAgICAgIC8vIEZJ
WE1FOiBvYmplY3RTdG9yZSBuZWVkcyB0byBiZSBhYmxlIHRvIHJhaXNlIGFuIElEQkRhdGFiYXNl
RXhjZXB0aW9uLgogICAgICAgICBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZShpbiBET01TdHJp
bmcgbmFtZSwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKLSAgICAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgcmVtb3ZlT2JqZWN0U3Rv
cmUoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGlu
IERPTVN0cmluZyBuYW1lKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIElEQlJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJpbmcgdmVyc2lvbik7CiAgICAgICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2Fj
dGlvbiAoaW4gW09wdGlvbmFsXSBET01TdHJpbmdMaXN0IHN0b3JlTmFtZXMsIGluIFtPcHRpb25h
bF0gdW5zaWduZWQgc2hvcnQgbW9kZSwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIHRpbWVv
dXQpOwogICAgICAgICAvLyBGSVhNRTogQWRkIGNsb3NlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IGI4ZmU5YjUwNjJmNmQ2MDMwNWJjMWQ1YzYwMTVk
ZDAwMjJmYzc1NDEuLmNhNDg3ZWRlM2Y2Zjg3MDA2Y2EyMDU1YTMxYTNiZTg0NTk5NDhkODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEyNSwxMyAr
MTI1LDE4IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b2JqZWN0U3RvcmVzKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0U3RvcmVOYW1lcy5yZWxl
YXNlKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK1Bhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBz
ZXRWZXJzaW9uVHJhbnNhY3Rpb24pCiB7CiAgICAgaWYgKG1fb2JqZWN0U3RvcmVzLmNvbnRhaW5z
KG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiQW4gb2JqZWN0U3Rv
cmUgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIC8vIEZJWE1FOiBUaHJvdyBDT05TVFJBSU5UX0VSUiBpbiB0aGlzIGNhc2UuCisgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlz
LCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBBU1NFUlQob2JqZWN0U3RvcmUt
Pm5hbWUoKSA9PSBuYW1lKTsKKyAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZSwgb2JqZWN0U3Rv
cmUpOworCisgICAgLy8gRklYTUU6IFJ1biB0aGUgU1FMIGluIGEgdHJhbnNhY3Rpb24uCiAgICAg
U1FMaXRlU3RhdGVtZW50IGluc2VydChzcWxpdGVEYXRhYmFzZSgpLCAiSU5TRVJUIElOVE8gT2Jq
ZWN0U3RvcmVzIChuYW1lLCBrZXlQYXRoLCBkb0F1dG9JbmNyZW1lbnQpIFZBTFVFUyAoPywgPywg
PykiKTsKICAgICBib29sIG9rID0gaW5zZXJ0LnByZXBhcmUoKSA9PSBTUUxSZXN1bHRPazsKICAg
ICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxpbmcu
CkBAIC0xNDEsMTEgKzE0Niw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmCiAgICAgb2sgPSBp
bnNlcnQuc3RlcCgpID09IFNRTFJlc3VsdERvbmU7CiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2sp
OyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgogICAgIGludDY0X3QgaWQgPSBzcWxp
dGVEYXRhYmFzZSgpLmxhc3RJbnNlcnRSb3dJRCgpOworICAgIG9iamVjdFN0b3JlLT5zZXRJZChp
ZCk7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUg
PSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgaWQsIG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQpOwotICAgIEFTU0VSVChvYmplY3RTdG9yZS0+bmFtZSgpID09IG5h
bWUpOwotICAgIG1fb2JqZWN0U3RvcmVzLnNldChuYW1lLCBvYmplY3RTdG9yZSk7Ci0gICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3Mob2JqZWN0U3RvcmUuZ2V0KCkpOworICAgIHJldHVybiBvYmplY3RT
dG9yZS5yZWxlYXNlKCk7CiB9CiAKIC8vIEZJWE1FOiBEbyBub3QgZXhwb3NlIHRoaXMgbWV0aG9k
IHZpYSBJREwuCkBAIC0xNjYsMTEgKzE2OSwxMSBAQCBzdGF0aWMgdm9pZCBkb0RlbGV0ZShTUUxp
dGVEYXRhYmFzZSYgZGIsIGNvbnN0IGNoYXIqIHNxbCwgaW50NjRfdCBpZCkKICAgICBBU1NFUlRf
VU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCiB9CiAKLXZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gbV9v
YmplY3RTdG9yZXMuZ2V0KG5hbWUpOwogICAgIGlmICghb2JqZWN0U3RvcmUpIHsKLSAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIk5vIG9iamVjdFN0b3JlIHdpdGggdGhhdCBuYW1lIGV4
aXN0cy4iKSk7CisgICAgICAgIC8vIEZJWE1FOiBSYWlzZSBOT1RfRk9VTkRfRVJSLgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xODMsNyArMTg2LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SUQKICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKIAogICAgIG1fb2JqZWN0U3RvcmVzLnJl
bW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQogCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmgKaW5kZXggN2UwOGFkNjVhZmU0NmNhM2U0MzYzZWFlZjYwYjI1NzA1M2Nl
MzNiMS4uNGVmZjBmODU4YTA1MTUyYmFlZWE0NjBhZTQxNWM3YjRkOTJhNjk1OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01Niw5ICs1Niw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9u
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3Jlcygp
IGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNp
Z25lZCBzaG9ydCBtb2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBz
aG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYTJlMDQyYWUyMDAwMGE0MWMyZjZk
NTA1MDlmZGE0NzVmNzU1Mzg0NS4uNmQ2YWI4N2E2ZDg0MDkxOWFkOWNjMTUzZjQ4MzhmYzk3ZGRj
ZTVmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aApAQCAtNTQsOSArNTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0
U3RvcmVzKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1l
bnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihE
T01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBs
b25nIHRpbWVvdXQpID0gMDsKICAgICAvLyBGSVhNRTogQWRkIGNsb3NlLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IDZmNjk4YzY0ODUzNDA3MTU2MTc1NWVkNWI0
YWRkZjZhZGUxOGY0MDYuLmIzN2MyODYyMzYyNzA1ZTU3YjQ4ZTA0MDcwYjc4NGU3ODg1OWJjYzgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTQ5LDYgKzQ5LDE1
IEBAIElEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsCiB7CiB9CiAKK0lEQkluZGV4QmFja2VuZEltcGw6
OklEQkluZGV4QmFja2VuZEltcGwoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3Rv
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSkKKyAgICA6IG1fb2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCisgICAgLCBtX2lkKDApCisgICAg
LCBtX25hbWUobmFtZSkKKyAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQorICAgICwgbV91bmlxdWUo
dW5pcXVlKQoreworfQorCiBJREJJbmRleEJhY2tlbmRJbXBsOjp+SURCSW5kZXhCYWNrZW5kSW1w
bCgpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1w
bC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCBhOThlZDJh
OGUzZGQwNzBhYjVjZDdjOTRiMzkyMGE1ODE0NTE4Y2MxLi40ZDUyYjYwZWZiNGNmMmU0ODIzNjgx
NWI1MjQ2Mzk0MjA1NjcwNzgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhC
YWNrZW5kSW1wbC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgK
QEAgLTQyLDkgKzQyLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChvYmplY3RTdG9yZSwgaWQsIG5hbWUsIGtleVBhdGgs
IHVuaXF1ZSkpOwogICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bXBsPiBjcmVhdGUoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChvYmplY3RT
dG9yZSwgbmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7CisgICAgfQogICAgIHZpcnR1YWwgfklEQklu
ZGV4QmFja2VuZEltcGwoKTsKIAotICAgIGludDY0X3QgaWQoKSB7IHJldHVybiBtX2lkOyB9Cisg
ICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGlu
dDY0X3QgaWQpIHsgbV9pZCA9IGlkOyB9CisKICAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoSURC
S2V5Kik7CiAKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4QmFja2VuZEludGVyZmFjZS4KQEAg
LTYyLDYgKzY4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIElEQkluZGV4QmFja2VuZElt
cGwoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSk7CisgICAgSURCSW5kZXhC
YWNrZW5kSW1wbChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKTsKIAogICAgIFNRTGl0ZURhdGFi
YXNlJiBzcWxpdGVEYXRhYmFzZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cAppbmRleCA0YzVjZjM0MGVkOTNkODM5YzIxOTM2MDJhYTFkMmYyNDUzYjQ3ODI2Li5iMTA2MDNm
YWQwOWZmMDg2YTUyYzljYWQ3ZWY3ZGQ3NzlkNjQzMjhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZS5jcHAKQEAgLTkwLDExICs5MCwxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpyZW1vdmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUAogICAg
IHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCitQYXNzUmVm
UHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQogewotICAgIFJlZlB0cjxJ
REJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6
Y3JlYXRlKHRoaXMpKTsKLSAgICBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQ
YXRoLCB1bmlxdWUsIHJlcXVlc3QpOwotICAgIHJldHVybiByZXF1ZXN0OworICAgIFJlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5k
ZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBpZiAo
IWluZGV4KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSURCSW5kZXg6OmNyZWF0ZShp
bmRleC5yZWxlYXNlKCkpOwogfQogCiBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTA2LDExICsxMDcsOSBAQCBQYXNzUmVm
UHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIHJldHVybiBJREJJbmRleDo6Y3JlYXRlKGluZGV4LnJlbGVhc2UoKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgSURCT2JqZWN0
U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSk7Ci0gICAgbV9vYmplY3RTdG9yZS0+cmVtb3ZlSW5kZXgobmFtZSwgcmVxdWVz
dCk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgbV9vYmplY3RTdG9yZS0+cmVtb3ZlSW5kZXgo
bmFtZSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
bikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggZGY1YjNmNzUwYjlkNjI2OGNmNzIwOWI3
MjkxODU4MjY5OWRhNGZiMi4uYTE3M2I2OGE1N2VhNzJhMDM0NmU1ODNkOTZmMGMxYWEzM2M0YTQ4
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKQEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXkgPSAwKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSk7CiAKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUgPSBmYWxzZSk7
CisgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlID0gZmFsc2UpOwogICAgIFBhc3NS
ZWZQdHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiByZW1vdmVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+ID0gMCwgdW5zaWduZWQgc2hvcnQgZGly
ZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlLmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwK
aW5kZXggY2NkMDMxMWM4MGJlYjVmMGVjODQwNzA0ZDZmZDJlN2U5NGI3MDk2Yi4uMWVhNTRiYmQ4
OGE2YjA2MDI0OWQzZDA1NWQ4ZDllMDg0OGFiMzM2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmUuaWRsCkBAIC0zNCwxMCArMzQsMTAgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBwdXQoaW4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIHZhbHVlLCBpbiBbT3B0aW9uYWxdIElEQktleSBrZXkpOwogICAgICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCByZW1vdmUoaW4gSURC
S2V5IGtleSk7CiAgICAgICAgIC8vIEZJWE1FOiB3cml0ZSBvcGVuQ3Vyc29yCi0gICAgICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNyZWF0ZUluZGV4KGlu
IERPTVN0cmluZyBuYW1lLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBr
ZXlQYXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdW5pcXVlKTsKKyAgICAgICAgSURCSW5kZXgg
Y3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1bmlxdWUpOwogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byByYWlzZSBhbiBJREJEYXRhYmFzZUV4Y2VwdGlv
biBvbiBlcnJvcnMuCiAgICAgICAgIElEQkluZGV4IGluZGV4KGluIERPTVN0cmluZyBuYW1lKTsK
LSAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgcmVt
b3ZlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZUluZGV4KGlu
IERPTVN0cmluZyBuYW1lKTsKIAogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFu
Z2UsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDE4ZDZiMGMyODA2
YTI5N2Y5NjI0ODFkNGY3ZDZhMDNmMTA1ZTQxOGIuLmZlYmRmZjdkNTEzYTNlZDA0ODk0N2ZiOGY2
NTNiNjI3MTE0ZDk4NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAKQEAgLTg3LDYgKzg3LDE1IEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0CiAg
ICAgbG9hZEluZGV4ZXMoKTsKIH0KIAorSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCkKKyAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCisgICAgLCBtX2lkKDApLAorICAgICwgbV9u
YW1lKG5hbWUpCisgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKKyAgICAsIG1fYXV0b0luY3JlbWVu
dChhdXRvSW5jcmVtZW50KQoreworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CkBAIC0y
NTcsMTMgKzI2NiwxOCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZShQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbAogICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5p
cXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKICAgICBp
ZiAobV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJ
TlRfRVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgLy8gRklYTUU6IFJhaXNlIENPTlNUUkFJTlRfRVJSLgorICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJ
bmRleEJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgbmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKKyAg
ICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKKyAgICBtX2luZGV4ZXMuc2V0KG5hbWUs
IGluZGV4KTsKKworICAgIC8vIEZJWE1FOiBydW4gdGhpcyBTUUwgaW4gYSB0cmFuc2FjdGlvbiB0
YXNrLgogICAgIFNRTGl0ZVN0YXRlbWVudCBpbnNlcnQoc3FsaXRlRGF0YWJhc2UoKSwgIklOU0VS
VCBJTlRPIEluZGV4ZXMgKG9iamVjdFN0b3JlSWQsIG5hbWUsIGtleVBhdGgsIGlzVW5pcXVlKSBW
QUxVRVMgKD8sID8sID8sID8pIik7CiAgICAgYm9vbCBvayA9IGluc2VydC5wcmVwYXJlKCkgPT0g
U1FMUmVzdWx0T2s7CiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVy
IGVycm9yIGhhbmRsaW5nLgpAQCAtMjc0LDExICsyODgsOCBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZQogICAgIG9rID0gaW5zZXJ0LnN0ZXAoKSA9PSBTUUxSZXN1bHREb25lOwogICAgIEFTU0VS
VF9VTlVTRUQob2ssIG9rKTsgLy8gRklYTUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KICAgICBp
bnQ2NF90IGlkID0gc3FsaXRlRGF0YWJhc2UoKS5sYXN0SW5zZXJ0Um93SUQoKTsKLQotICAgIFJl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNy
ZWF0ZSh0aGlzLCBpZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKLSAgICBBU1NFUlQoaW5kZXgt
Pm5hbWUoKSA9PSBuYW1lKTsKLSAgICBtX2luZGV4ZXMuc2V0KG5hbWUsIGluZGV4KTsKLSAgICBj
YWxsYmFja3MtPm9uU3VjY2VzcyhpbmRleC5nZXQoKSk7CisgICAgaW5kZXgtPnNldElkKGlkKTsK
KyAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lKQpAQCAtMjk2LDE0ICszMDcsMTUgQEAgc3RhdGljIHZvaWQgZG9EZWxldGUoU1FM
aXRlRGF0YWJhc2UmIGRiLCBjb25zdCBjaGFyKiBzcWwsIGludDY0X3QgaWQpCiAgICAgQVNTRVJU
X1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgogfQogCi12
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHNldFZlcnNpb25UcmFuc2FjdGlvbikKIHsKICAgICBS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KG5hbWUpOwog
ICAgIGlmICghaW5kZXgpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIkluZGV4
IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOworICAgICAgICAvLyBGSVhNRTogUmFpc2UgTk9UX0ZP
VU5EX0VSUi4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBSdW4gdGhp
cyBTUUwgaW4gYSB0cmFuc2FjdGlvbiB0YXNrLgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKHNxbGl0ZURhdGFiYXNlKCkpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAgICAg
ZG9EZWxldGUoc3FsaXRlRGF0YWJhc2UoKSwgIkRFTEVURSBGUk9NIEluZGV4ZXMgV0hFUkUgaWQg
PSA/IiwgaW5kZXgtPmlkKCkpOwpAQCAtMzExLDcgKzMyMyw2IEBAIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PElEQkNhCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CiAKICAgICBtX2luZGV4ZXMucmVtb3Zl
KG5hbWUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5n
ZSwgdW5zaWduZWQgc2hvcnQgdG1wRGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgK
aW5kZXggMzZjMDAxNDRhMDdmZDQxODcxMGYxYTRkNWUwZGQ0NzRhNzk1OGFhMy4uYjI1NmIwMmUw
YTM4ZWZmMWJiNWNlMmJkYmYxMDkyODk0NmFhMGQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC00NSw5ICs0NSwxNCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwo
ZGF0YWJhc2UsIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChkYXRhYmFzZSwgbmFtZSwg
a2V5UGF0aCwgYXV0b0luY3JlbWVudCkpOworICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbCgpOwogCiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAg
ICB2b2lkIHNldElkKGludDY0X3QgaWQpIHsgbV9pZCA9IGlkOyB9CiAgICAgU3RyaW5nIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhO
YW1lcygpIGNvbnN0OwpAQCAtNTYsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXQoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBib29sIGFkZE9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBy
ZW1vdmUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsK
IAotICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIFBh
c3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVtb3ZlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZvaWQg
cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqKTsKIAogICAgIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBy
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
OwogCkBAIC02Niw2ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsKElEQkRhdGFiYXNlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
KTsKKyAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkRhdGFiYXNlQmFja2VuZEltcGwq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50KTsKIAogICAgIHZvaWQgbG9hZEluZGV4ZXMoKTsKICAgICBTUUxpdGVEYXRhYmFzZSYg
c3FsaXRlRGF0YWJhc2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBjMTk4NTVjNzZkZTFlNjI1MjQzODU5MjE3N2U5
YzAxZjc3MjMyMTlkLi42MDFhNmU4ODI0N2UyYzhiZjE5ZmQyMTMxNDBmZjdjNzMwYzlmM2ViIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5o
CkBAIC00OSwxMyArNDksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4
TmFtZXMoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGJv
b2wgYWRkT25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSopID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ2MTM4MTQ0MjhmODdhMDhi
NDJlODFjZmFlYWEwMmIwZDRjZTFiOGMuLjhlMTI0MTFiOGNjNmVmNmFmZGY1MzYyMDYwOWQ3ZDRl
N2YyN2M3YmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTA5LTMwICBBbmRy
ZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUv
cmVtb3ZlT2JqZWN0U3RvcmUgYW5kIElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleC9yZW1vdmVJ
bmRleCBzaG91bGQgYmUgc3luY2hyb25vdXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00Njg4MworCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFi
YXNlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6
CisgICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0
U3RvcmUpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5Lmg6CisgICAgICAgICogc3Jj
L0lEQk9iamVjdFN0b3JlUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmVQcm94eTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVQ
cm94eTo6cmVtb3ZlSW5kZXgpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZVByb3h5Lmg6
CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJEYXRhYmFzZUltcGw6OnJlbW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4
KToKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisKIDIwMTAtMDktMjkg
IEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGFkZGluZyBvbmUgbW9yZSBtaXNzaW5nIGNoYW5nZSBmcm9tIHRoZSBsYXN0IHBhdGNoLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDRlNWNkY2JjZDE4ZTIy
MGYwNWVjZmRmMjUwNTc0YmFmNjdhZjQwZWIuLmJmZjM3NTI5ZmQ4NjA1M2RmODU5ODg2ZjA4MDU3
Nzg3MGIyNTIwNjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0
YWJhc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAg
LTYxLDE0ICs2MSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZ0xpc3QoKTsKICAgICB9CisgICAgLy8g
RklYTUU6IFJlbW92ZSBhZnRlciBXZWJLaXQgcm9sbC4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpCisgICAgeyAK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCT2JqZWN0U3Rv
cmUgdG8gdGhlIGNhbGxlci4KICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RT
dG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiAgICAgewog
ICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIFdlYktpdCByb2xsLgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNh
bGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNp
b24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBUcmFuc2ZlcnMgb3duZXJz
aGlwIG9mIHRoZSBXZWJJREJUcmFuc2FjdGlvbiB0byB0aGUgY2FsbGVyLgogICAgIHZpcnR1YWwg
V2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5h
bWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmggYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXggMTllZmQ0ODljZjFiN2Qw
ZTg2NDM4NDU2ODhlMzliNzZlYzdkZjkyZS4uMzFjNWZjZTQ4YjRkN2FiMWE5MmQ1NzEzYjQwMjlj
MjBjNTdkZGI5NCAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aApAQCAtODYsMTQgKzg2LDIyIEBAIHB1YmxpYzoKICAgICAgICAgV2ViSURCVHJhbnNhY3Rpb24g
dHJhbnNhY3Rpb247CiAgICAgICAgIHJlbW92ZShrZXksIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24p
OwogICAgIH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIFdlYktpdCByb2xsLgogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpCisgICAgeworICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICAvLyBU
cmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBXZWJJREJJbmRleCB0byB0aGUgY2FsbGVyLgogICAg
IHZpcnR1YWwgV2ViSURCSW5kZXgqIGluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKICAgICB7
CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgV2ViS2l0IHJvbGwuCiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlv
biYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9w
ZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlv
biYpCiAgICAgewogICAgICAgICBvcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNr
cyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAppbmRleCBjZTVlMGE2
Y2NmZDMyMGJiZTYzN2UzZGY3YmFjMjc5YThiZmIzOGQ2Li5jYjYzMjhlNWYzNzI2NDE1ODBhMTY5
Yjc1ZmU1ZWYwNTM3M2FkZGUwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94
eS5jcHAKQEAgLTc2LDkgKzc2LDEzIEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2VQcm94eTo6b2JqZWN0U3RvcmVzKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJREJEYXRh
YmFzZS0+b2JqZWN0U3RvcmVzKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK1Bh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uKQogewotICAgIG1fd2ViSURCRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3Jl
KG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNh
bGxiYWNrcykpOworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQg
dG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisg
ICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2Jq
ZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9
IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOwor
ICAgIFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV93ZWJJREJEYXRh
YmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgKnRy
YW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCkpOworICAgIHJldHVybiBJREJP
YmplY3RTdG9yZVByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOwogfQogCiBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VQcm94eTo6b2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQpAQCAtODksOSArOTMs
OSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJh
c2VQcm94eTo6b2JqZWN0U3RvcmUoY29uc3QgUwogICAgIHJldHVybiBJREJPYmplY3RTdG9yZVBy
b3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOwogfQogCi12b2lkIElEQkRhdGFiYXNlUHJveHk6OnJl
bW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIG1fd2ViSURCRGF0YWJhc2UtPnJlbW92ZU9iamVj
dFN0b3JlKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1f
d2ViSURCRGF0YWJhc2UtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUpOwogfQogCiB2b2lkIElEQkRh
dGFiYXNlUHJveHk6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZVByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJv
eHkuaAppbmRleCBmZmZkMjNlZTg1MmE2MTM2YzQxYTVjZWJlMGEwOGRjNGRkYWY2NWFiLi5kZmI4
OGQ1Yzc1MzZmZDJmYTAyNmYxOWRmZjQ2Njg3OGIxMTYxMDg0IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlUHJveHkuaApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAKICAgICAvLyBG
SVhNRTogQWRkIHNldFZlcnNpb24uCiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFt
ZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3BwCmluZGV4IDgyY2E1ZjY2Y2Yw
OTdmYzM5MDg2ZGJlNjQzZTYzZGFiNmZmOGZjZmQuLjMwNWIxNWFjZDNhMGE3NGUzODhhMzRlYjRj
YmU1M2ViYjE5ZDkyZjIgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVBy
b3h5LmNwcApAQCAtOTAsOSArOTAsMTUgQEAgdm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpyZW1v
dmUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3MKICAgICBt
X3dlYklEQk9iamVjdFN0b3JlLT5yZW1vdmUoa2V5LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitQYXNzUmVmUHRyPElEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewotICAgIG1fd2ViSURCT2JqZWN0
U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMg
Z3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSBy
ZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFy
ZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2Fj
dGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFu
c2FjdGlvbik7CisgICAgV2ViS2l0OjpXZWJJREJJbmRleCogaW5kZXggPSBtX3dlYklEQk9iamVj
dFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsICp0cmFuc2FjdGlvblBy
b3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKKyAgICBpZiAoIWluZGV4KQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleCk7
CiB9CiAKIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9y
ZVByb3h5OjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xMDMsOSArMTA5LDEyIEBAIFBh
c3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZVByb3h5Ojpp
bmRleChjb25zdCBTdHJpbmcmIG5hCiAgICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFByb3h5Ojpj
cmVhdGUoaW5kZXgpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OnJlbW92ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
K3ZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewotICAgIG1f
d2ViSURCT2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJ
bXBsKGNhbGxiYWNrcykpOworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJh
bnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVy
ZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJv
eHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Q
cm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rp
b24pOworICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsICp0cmFuc2Fj
dGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKIH0KIAogdm9pZCBJREJPYmplY3RT
dG9yZVByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5oCmluZGV4IDEzZGZlMjM2
ZGU2ZWU0NWM1YTVmMThjNDY2NzYxNjdkNDQyMzBiYjIuLjZhZTI5Y2EyNTIyZjY4NTVkYjE3MzI5
MmRiNTE2MGMxZjNkMjBjYTEgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQ
cm94eS5oCkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGJv
b2wgYWRkT25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIHJlbW92ZShQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCi0gICAg
dm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKik7CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdm9pZCByZW1vdmVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSop
OwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDg4
NzBmZjk0Y2ViOTJlYjY5YTQyYjlmMWZhODBmNDQ2OTI1MTNkMmYuLmNmMjE0MzM2NDM4YWIxYjdj
NjQ0MjA5NDdlZWVkN2M2ZTdhNjA3NDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5jcHAKQEAgLTY5LDkgKzY5LDEyIEBAIFdlYkRPTVN0cmluZ0xpc3QgV2ViSURC
RGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZXMoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGFiYXNl
QmFja2VuZC0+b2JqZWN0U3RvcmVzKCk7CiB9CiAKLXZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykK
K1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAg
ICBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0
b0luY3JlbWVudCwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpKTsKKyAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fZGF0
YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVt
ZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSk7Cisg
ICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBX
ZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOwogfQogCiBXZWJJREJPYmplY3RTdG9y
ZSogV2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IHVuc2lnbmVkIHNob3J0IG1vZGUpCkBAIC04Miw5ICs4NSw5IEBAIFdlYklEQk9iamVjdFN0b3Jl
KiBXZWJJREJEYXRhYmFzZUltcGw6Om9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
dW5zaWduCiAgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0U3RvcmUp
OwogfQogCi12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV2ViSURC
RGF0YWJhc2VJbXBsOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsIElEQkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPnJl
bW92ZU9iamVjdFN0b3JlKG5hbWUpOwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6c2V0
VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJh
Y2tzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
aCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggZTBlYWFh
NThiZjllZTAzNmEyY2U4MjVmMmI5MzRiNGU2MTIxMjE0OC4uYjU4ZGY5NmJhMjExN2I1NTJmMDVh
ZTFkMzgyYmI0N2U4YmVmNDU5YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
SW1wbC5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2
ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3Jl
cygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1l
bnQsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKTsKKyAgICB2aXJ0dWFsIFdlYklEQk9iamVj
dFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pOwogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIG9iamVj
dFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hvcnQgbW9kZSk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RT
dG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9u
KGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwog
ICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0
cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVv
dXQpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAK
aW5kZXggMzZkOGFjZTRlOWQyZWYwNDExMmI0ZjJjMTAwOGY3OGVlY2JkYWM2YS4uNWY4YTcxOGI1
ZjNjYWExMDhhODUzMzM3OTQ2MmYwYmJmNWY4MTNmNiAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtODEsOSArODEsMTIgQEAgdm9pZCBXZWJJ
REJPYmplY3RTdG9yZUltcGw6OnJlbW92ZShjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmEKICAgICBtX29iamVjdFN0b3JlLT5yZW1vdmUoa2V5LCBJREJDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcykpOwogfQogCi12b2lkIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKK1dlYklE
QkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIG1fb2JqZWN0U3RvcmUtPmNyZWF0
ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShj
YWxsYmFja3MpKTsKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9
IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgdHJhbnNh
Y3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOworICAgIGlmICghaW5k
ZXgpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgV2ViSURCSW5kZXhJbXBsKGlu
ZGV4KTsKIH0KIAogV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXgoY29u
c3QgV2ViU3RyaW5nJiBuYW1lKQpAQCAtOTQsOSArOTcsOSBAQCBXZWJJREJJbmRleCogV2ViSURC
T2JqZWN0U3RvcmVJbXBsOjppbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJu
IG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOwogfQogCi12b2lkIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3Mq
IGNhbGxiYWNrcykKK3ZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJbmRleChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
IHsKLSAgICBtX29iamVjdFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCBJREJDYWxsYmFja3NQcm94
eTo6Y3JlYXRlKGNhbGxiYWNrcykpOworICAgIG1fb2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5h
bWUsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKIH0K
IAogdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6Om9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5
UmFuZ2UmIGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNr
cyogY2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBs
LmgKaW5kZXggYTlmMTIwMGM5ZmM0ZDg2MWQyZWY1Zjc5ZTk0NDIxOTYxM2U2NDY5OS4uZjJiNjY2
N2NhY2Q5OGMyMzI5MDE5Yzc2YzJhOGFkYTNhMTEwMTEwMyAxMDA3NTUKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHB1dChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBX
ZWJJREJLZXkmIGtleSwgYm9vbCBhZGRPbmx5LCBXZWJJREJDYWxsYmFja3MqKTsKICAgICB2b2lk
IHJlbW92ZShjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKik7CiAKLSAgICB2
b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOworICAgIFdl
YklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CiAg
ICAgV2ViSURCSW5kZXgqIGluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBy
ZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJh
Y2tzKTsKKyAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mKTsKIAogICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJJREJL
ZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69323</attachid>
            <date>2010-09-30 03:21:27 -0700</date>
            <delta_ts>2010-10-01 12:08:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46883-20100930112125.patch</filename>
            <type>text/plain</type>
            <size>43590</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjY0YTc3ZDZkZGFiZGQzMTA1MTY2N2UyNjc4MDI2MmNlMWMxNWM3MC4uOTVjZWU0MGJlODZjNDEy
ZTBhMzYwZjBmZjFmODUyYjg0NTJkY2ZmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOS0zMCAgQW5k
cmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3Jl
L3JlbW92ZU9iamVjdFN0b3JlIGFuZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgvcmVtb3Zl
SW5kZXggc2hvdWxkIGJlIHN5bmNocm9ub3VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4ODMKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BT
ISkKKworICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRh
YmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAqIHN0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6SURC
SW5kZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6aWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6c2V0SWQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleCk6Cisg
ICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpzZXRJZCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaDoKKwogMjAxMC0wOS0yOSAgSm/Do28gUGF1bG8gUmVjaGkgVml0YSAgPGpw
cnZpdGFAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDBlYTdhYzI5MjY3NGNlYTYwOTcwMzVmYTVm
ZTVjODk3ZjQ0ZGI2YjcuLjA3NTA3YTdiNDVjYWVhYzlmNmFlZWU2NGNiOThmZTVlNmFmM2FhMDkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtNDgsMTEgKzQ4LDExIEBAIElEQkRhdGFiYXNl
Ojp+SURCRGF0YWJhc2UoKQogewogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50KQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcykpOwotICAgIG1fYmFja2Vu
ZC0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgcmVxdWVz
dCk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgLy8gRklYTUU6IFJhaXNlIGEgTk9UX0FMTE9X
RURfRVJSIGlmIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uIGlzIDAuCisgICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2JhY2tlbmQtPmNyZWF0
ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG1fc2V0VmVyc2lvblRy
YW5zYWN0aW9uLmdldCgpKTsKKyAgICByZXR1cm4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmpl
Y3RTdG9yZS5yZWxlYXNlKCksIDApOwogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgbWV0aG9k
LgpAQCAtNjMsMTEgKzYzLDkgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJh
c2U6Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQKICAgICByZXR1cm4g
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmplY3RTdG9yZS5yZWxlYXNlKCksIDApOwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIElE
QkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcykpOwotICAgIG1fYmFja2VuZC0+cmVtb3ZlT2JqZWN0U3RvcmUo
bmFtZSwgcmVxdWVzdCk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgbV9iYWNrZW5kLT5yZW1v
dmVPYmplY3RTdG9yZShuYW1lLCBtX3NldFZlcnNpb25UcmFuc2FjdGlvbi5nZXQoKSk7CiB9CiAK
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuaAppbmRleCBkYzcwMTE0NDliMTg0ZmZjNTY4NTk0YmUwZGUxMTRlNjgyYmE2Y2I1Li40
OGY0YTI1YTgxZjgyNWYyZGMwZTA0NmMwN2YzMDFmZTViNTRmMDYxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuaApAQCAtNTUsOSArNTUsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmQtPnZlcnNpb24oKTsgfQogICAgIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gb2JqZWN0U3RvcmVzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5vYmplY3RT
dG9yZXMoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGVPYmplY3RTdG9y
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGggPSBTdHJpbmcoKSwgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2UpOworICAg
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoID0gU3RyaW5nKCksIGJvb2wgYXV0b0luY3Jl
bWVudCA9IGZhbHNlKTsKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUgPSBJREJUcmFuc2FjdGlv
bjo6UkVBRF9PTkxZKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZU9iamVjdFN0
b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZv
aWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgdmVyc2lvbik7CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMgPSAw
LCB1bnNpZ25lZCBzaG9ydCBtb2RlID0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVv
dXQgPSAwKTsgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHRoZSBkZWZhdWx0IHRpbWVvdXQgYmU/CkBA
IC02Niw2ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBtX3NldFZlcnNpb25UcmFuc2FjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCmluZGV4IDM0N2IzYTdjODQxZjk3ZDVhYjQx
ZWRhNjI1ZjI0YmUzYTExOTFjZGMuLjIyM2Y5Y2FlMDFkOTU5Zjk3NmI4ZGMyMzBlZTc1NTM2OWY0
OWZkNTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApAQCAtMzMsMTAgKzMzLDEwIEBAIG1vZHVs
ZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3Qgb2Jq
ZWN0U3RvcmVzOwogCiAKLSAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IElEQlJlcXVlc3QgY3JlYXRlT2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRp
b25hbCwgQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBrZXlQYXRoLCBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gYXV0b0luY3JlbWVudCk7CisgICAgICAgIElEQk9iamVjdFN0b3JlIGNy
ZWF0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBib29sZWFu
IGF1dG9JbmNyZW1lbnQpOwogICAgICAgICAvLyBGSVhNRTogb2JqZWN0U3RvcmUgbmVlZHMgdG8g
YmUgYWJsZSB0byByYWlzZSBhbiBJREJEYXRhYmFzZUV4Y2VwdGlvbi4KICAgICAgICAgSURCT2Jq
ZWN0U3RvcmUgb2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbF0gdW5z
aWduZWQgc2hvcnQgbW9kZSk7Ci0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBJREJSZXF1ZXN0IHJlbW92ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lKTsKKyAg
ICAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSk7CiAgICAgICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHNldFZlcnNpb24o
aW4gRE9NU3RyaW5nIHZlcnNpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24gKGluIFtPcHRpb25hbF0gRE9NU3Ry
aW5nTGlzdCBzdG9yZU5hbWVzLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IG1vZGUsIGlu
IFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKICAgICAgICAgLy8gRklYTUU6IEFk
ZCBjbG9zZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCBiOGZlOWI1MDYyZjZkNjAzMDViYzFkNWM2MDE1ZGQwMDIyZmM3NTQxLi4wYzJhYzI2MTFkZDkw
YTAwOTdkZGZkZWViMTNlMTc1YWU2NGJiMWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMjUsMTMgKzEyNSwxOCBAQCBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQogCi12b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogc2V0VmVyc2lvblRyYW5zYWN0aW9uKQogewog
ICAgIGlmIChtX29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpDT05TVFJBSU5UX0VSUiwgIkFuIG9iamVjdFN0b3JlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkg
ZXhpc3RzLiIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBGSVhNRTogVGhyb3cgQ09O
U1RSQUlOVF9FUlIgaW4gdGhpcyBjYXNlLgorICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgbmFtZSwga2V5UGF0aCwgYXV0b0luY3Jl
bWVudCk7CisgICAgQVNTRVJUKG9iamVjdFN0b3JlLT5uYW1lKCkgPT0gbmFtZSk7CisgICAgbV9v
YmplY3RTdG9yZXMuc2V0KG5hbWUsIG9iamVjdFN0b3JlKTsKKworICAgIC8vIEZJWE1FOiBSdW4g
dGhlIFNRTCBpbiBhIHRyYW5zYWN0aW9uLgogICAgIFNRTGl0ZVN0YXRlbWVudCBpbnNlcnQoc3Fs
aXRlRGF0YWJhc2UoKSwgIklOU0VSVCBJTlRPIE9iamVjdFN0b3JlcyAobmFtZSwga2V5UGF0aCwg
ZG9BdXRvSW5jcmVtZW50KSBWQUxVRVMgKD8sID8sID8pIik7CiAgICAgYm9vbCBvayA9IGluc2Vy
dC5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7CiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAv
LyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgpAQCAtMTQxLDExICsxNDYsOSBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJgogICAgIG9rID0gaW5zZXJ0LnN0ZXAoKSA9PSBTUUxSZXN1bHRE
b25lOwogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklYTUU6IEJldHRlciBlcnJvciBo
YW5kbGluZy4KICAgICBpbnQ2NF90IGlkID0gc3FsaXRlRGF0YWJhc2UoKS5sYXN0SW5zZXJ0Um93
SUQoKTsKKyAgICBvYmplY3RTdG9yZS0+c2V0SWQoaWQpOwogCi0gICAgUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y3JlYXRlKHRoaXMsIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKLSAgICBB
U1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsKLSAgICBtX29iamVjdFN0b3Jlcy5z
ZXQobmFtZSwgb2JqZWN0U3RvcmUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKG9iamVjdFN0
b3JlLmdldCgpKTsKKyAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQogCiAvLyBG
SVhNRTogRG8gbm90IGV4cG9zZSB0aGlzIG1ldGhvZCB2aWEgSURMLgpAQCAtMTY2LDE0ICsxNjks
MTUgQEAgc3RhdGljIHZvaWQgZG9EZWxldGUoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBjaGFy
KiBzcWwsIGludDY0X3QgaWQpCiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTog
QmV0dGVyIGVycm9yIGhhbmRsaW5nLgogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHNldFZlcnNpb25UcmFuc2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlcy5nZXQobmFtZSk7CiAgICAg
aWYgKCFvYmplY3RTdG9yZSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSLCAiTm8g
b2JqZWN0U3RvcmUgd2l0aCB0aGF0IG5hbWUgZXhpc3RzLiIpKTsKKyAgICAgICAgLy8gRklYTUU6
IFJhaXNlIE5PVF9GT1VORF9FUlIuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBG
SVhNRTogUnVuIHRoZSBTUUwgYmVsb3cgaW4gYSB0cmFuc2FjdGlvbi4KICAgICBTUUxpdGVUcmFu
c2FjdGlvbiB0cmFuc2FjdGlvbihzcWxpdGVEYXRhYmFzZSgpKTsKICAgICB0cmFuc2FjdGlvbi5i
ZWdpbigpOwogICAgIGRvRGVsZXRlKHNxbGl0ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBPYmpl
Y3RTdG9yZXMgV0hFUkUgaWQgPSA/Iiwgb2JqZWN0U3RvcmUtPmlkKCkpOwpAQCAtMTgzLDcgKzE4
Nyw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElECiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7
CiAKICAgICBtX29iamVjdFN0b3Jlcy5yZW1vdmUobmFtZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNv
bnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDdlMDhhZDY1YWZl
NDZjYTNlNDM2M2VhZWY2MGIyNTcwNTNjZTMzYjEuLjFiNDk0YjE0ZDEwM2NhMTk1OWQ5NWVjMzlj
ZGI4ZGIyYTk4ZTQxOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aApAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hvcnQgbW9kZSk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQg
c2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGEyZTA0MmFlMjAwMDBhNDFjMmY2
ZDUwNTA5ZmRhNDc1Zjc1NTM4NDUuLjc1YTlhZDBhOTI2ZTI0NDcxMTdkMWI4YjM0MTA0ZjczMWQw
ZThjY2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
LmgKQEAgLTU0LDkgKzU0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24o
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlcygpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1l
cywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KSA9IDA7CiAgICAg
Ly8gRklYTUU6IEFkZCBjbG9zZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eEJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAppbmRleCA2ZjY5OGM2NDg1MzQwNzE1NjE3NTVlZDViNGFkZGY2YWRlMThmNDA2Li5iMzdjMjg2
MjM2MjcwNWU1N2I0OGUwNDA3MGI3ODRlNzg4NTliY2M4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQklu
ZGV4QmFja2VuZEltcGwuY3BwCkBAIC00OSw2ICs0OSwxNSBAQCBJREJJbmRleEJhY2tlbmRJbXBs
OjpJREJJbmRleEJhY2tlbmRJbXBsKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0
b3JlLAogewogfQogCitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgOiBtX29iamVjdFN0b3Jl
KG9iamVjdFN0b3JlKQorICAgICwgbV9pZCgwKQorICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBt
X2tleVBhdGgoa2V5UGF0aCkKKyAgICAsIG1fdW5pcXVlKHVuaXF1ZSkKK3sKK30KKwogSURCSW5k
ZXhCYWNrZW5kSW1wbDo6fklEQkluZGV4QmFja2VuZEltcGwoKQogewogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9J
REJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggYTk4ZWQyYThlM2RkMDcwYWI1Y2Q3Yzk0YjM5MjBh
NTgxNDUxOGNjMS4uNGQ1MmI2MGVmYjRjZjJlNDgyMzY4MTViNTI0NjM5NDIwNTY3MDc4MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oCkBAIC00Miw5ICs0MiwxNSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZElt
cGwob2JqZWN0U3RvcmUsIGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUpKTsKICAgICB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwob2JqZWN0U3RvcmUsIG5hbWUsIGtleVBhdGgsIHVu
aXF1ZSkpOworICAgIH0KICAgICB2aXJ0dWFsIH5JREJJbmRleEJhY2tlbmRJbXBsKCk7CiAKLSAg
ICBpbnQ2NF90IGlkKCkgeyByZXR1cm4gbV9pZDsgfQorICAgIGludDY0X3QgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChpbnQ2NF90IGlkKSB7IG1faWQgPSBpZDsg
fQorCiAgICAgYm9vbCBhZGRpbmdLZXlBbGxvd2VkKElEQktleSopOwogCiAgICAgLy8gSW1wbGVt
ZW50cyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuCkBAIC02Miw2ICs2OCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUpOworICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSk7CiAKICAgICBTUUxpdGVEYXRhYmFzZSYgc3FsaXRlRGF0YWJhc2UoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNGM1Y2YzNDBlZDkzZDgz
OWMyMTkzNjAyYWExZDJmMjQ1M2I0NzgyNi4uYjEwNjAzZmFkMDlmZjA4NmE1MmM5Y2FkN2VmN2Rk
Nzc5ZDY0MzI4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNw
cAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC05MCwxMSArOTAs
MTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cmVtb3ZlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAot
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSkKIHsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElE
QlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSk7Ci0gICAgbV9v
YmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCByZXF1ZXN0KTsK
LSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1
ZSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIElEQkluZGV4OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgpKTsKIH0KIAog
UGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSkKQEAgLTEwNiwxMSArMTA3LDkgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0
U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gSURCSW5kZXg6OmNy
ZWF0ZShpbmRleC5yZWxlYXNlKCkpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpyZW1vdmVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcykpOwotICAgIG1fb2Jq
ZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsIHJlcXVlc3QpOwotICAgIHJldHVybiByZXF1ZXN0
OworICAgIG1fb2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5oCmluZGV4IGRmNWIzZjc1MGI5ZDYyNjhjZjcyMDliNzI5MTg1ODI2OTlkYTRmYjIuLmExNzNi
NjhhNTdlYTcyYTAzNDZlNTgzZDk2ZjBjMWFhMzNjNGE0OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZS5oCkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IHB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5ID0gMCk7CiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiByZW1vdmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXkpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGVJbmRl
eChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlID0gZmFsc2UpOworICAgIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSA9IGZhbHNlKTsKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcmVtb3ZlSW5k
ZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9p
ZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiA9IDAsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVY
VCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IGNjZDAzMTFjODBiZWI1ZjBl
Yzg0MDcwNGQ2ZmQyZTdlOTRiNzA5NmIuLjFlYTU0YmJkODhhNmIwNjAyNDlkM2QwNTVkOGQ5ZTA4
NDhhYjMzNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbApAQCAtMzQsMTAgKzM0LDEw
IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlJlcXVlc3QgcHV0KGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZSwgaW4g
W09wdGlvbmFsXSBJREJLZXkga2V5KTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQlJlcXVlc3QgcmVtb3ZlKGluIElEQktleSBrZXkpOwogICAgICAgICAvLyBG
SVhNRTogd3JpdGUgb3BlbkN1cnNvcgotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCUmVxdWVzdCBjcmVhdGVJbmRleChpbiBET01TdHJpbmcgbmFtZSwgaW4gW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVuaXF1ZSk7CisgICAgICAgIElEQkluZGV4IGNyZWF0ZUluZGV4KGluIERPTVN0cmlu
ZyBuYW1lLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBrZXlQYXRoLCBp
biBbT3B0aW9uYWxdIGJvb2xlYW4gdW5pcXVlKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVl
ZHMgdG8gcmFpc2UgYW4gSURCRGF0YWJhc2VFeGNlcHRpb24gb24gZXJyb3JzLgogICAgICAgICBJ
REJJbmRleCBpbmRleChpbiBET01TdHJpbmcgbmFtZSk7Ci0gICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHJlbW92ZUluZGV4KGluIERPTVN0cmluZyBu
YW1lKTsKKyAgICAgICAgdm9pZCByZW1vdmVJbmRleChpbiBET01TdHJpbmcgbmFtZSk7CiAKICAg
ICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1
cnNvcihpbiBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJhbmdlLCBpbiBbT3B0aW9uYWxdIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCAxOGQ2YjBjMjgwNmEyOTdmOTYyNDgxZDRmN2Q2YTAzZjEw
NWU0MThiLi4zZTlhNmQ4NmQzMDliYTE2ZTc2OTdkODBmNWU2N2NmZGVlYzc1ZjJkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC04Nyw2ICs4
NywxNSBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdAogICAgIGxvYWRJbmRleGVzKCk7CiB9CiAK
K0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgOiBtX2RhdGFiYXNlKGRh
dGFiYXNlKQorICAgICwgbV9pZCgwKQorICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBtX2tleVBh
dGgoa2V5UGF0aCkKKyAgICAsIG1fYXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KQoreworfQor
CiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Omlu
ZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVz
ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CkBAIC0yNTcsMTMgKzI2NiwxOCBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPElEQkNhbAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiB9CiAKLXZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKICAgICBpZiAobV9pbmRleGVzLmNvbnRhaW5zKG5h
bWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiSW5kZXggbmFtZSBhbHJl
YWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRklYTUU6IFJhaXNl
IENPTlNUUkFJTlRfRVJSLgorICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUo
dGhpcywgbmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKKyAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9
PSBuYW1lKTsKKyAgICBtX2luZGV4ZXMuc2V0KG5hbWUsIGluZGV4KTsKKworICAgIC8vIEZJWE1F
OiBydW4gdGhpcyBTUUwgaW4gYSB0cmFuc2FjdGlvbiB0YXNrLgogICAgIFNRTGl0ZVN0YXRlbWVu
dCBpbnNlcnQoc3FsaXRlRGF0YWJhc2UoKSwgIklOU0VSVCBJTlRPIEluZGV4ZXMgKG9iamVjdFN0
b3JlSWQsIG5hbWUsIGtleVBhdGgsIGlzVW5pcXVlKSBWQUxVRVMgKD8sID8sID8sID8pIik7CiAg
ICAgYm9vbCBvayA9IGluc2VydC5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7CiAgICAgQVNTRVJU
X1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgpAQCAtMjc0
LDExICsyODgsOCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZQogICAgIG9rID0gaW5zZXJ0LnN0
ZXAoKSA9PSBTUUxSZXN1bHREb25lOwogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklY
TUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KICAgICBpbnQ2NF90IGlkID0gc3FsaXRlRGF0YWJh
c2UoKS5sYXN0SW5zZXJ0Um93SUQoKTsKLQotICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZCwgbmFtZSwga2V5
UGF0aCwgdW5pcXVlKTsKLSAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKLSAgICBt
X2luZGV4ZXMuc2V0KG5hbWUsIGluZGV4KTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpbmRl
eC5nZXQoKSk7CisgICAgaW5kZXgtPnNldElkKGlkKTsKKyAgICByZXR1cm4gaW5kZXgucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMjk2LDE0ICsz
MDcsMTUgQEAgc3RhdGljIHZvaWQgZG9EZWxldGUoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBj
aGFyKiBzcWwsIGludDY0X3QgaWQpCiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhN
RTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3Zl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHNldFZlcnNpb25UcmFuc2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1w
bD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KG5hbWUpOwogICAgIGlmICghaW5kZXgpIHsKLSAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikp
OworICAgICAgICAvLyBGSVhNRTogUmFpc2UgTk9UX0ZPVU5EX0VSUi4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBSdW4gdGhpcyBTUUwgaW4gYSB0cmFuc2FjdGlvbiB0
YXNrLgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKHNxbGl0ZURhdGFiYXNlKCkp
OwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAgICAgZG9EZWxldGUoc3FsaXRlRGF0YWJhc2Uo
KSwgIkRFTEVURSBGUk9NIEluZGV4ZXMgV0hFUkUgaWQgPSA/IiwgaW5kZXgtPmlkKCkpOwpAQCAt
MzExLDcgKzMyMyw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhCiAgICAgdHJhbnNhY3Rpb24u
Y29tbWl0KCk7CiAKICAgICBtX2luZGV4ZXMucmVtb3ZlKG5hbWUpOwotICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKCk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdG1wRGly
ZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggMzZjMDAxNDRhMDdmZDQxODcx
MGYxYTRkNWUwZGQ0NzRhNzk1OGFhMy4uYjI1NmIwMmUwYTM4ZWZmMWJiNWNlMmJkYmYxMDkyODk0
NmFhMGQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
CkBAIC00NSw5ICs0NSwxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2UsIGlkLCBuYW1lLCBrZXlQ
YXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRh
YmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbChkYXRhYmFzZSwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCkp
OworICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCgpOwogCiAgICAgaW50NjRf
dCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGludDY0X3QgaWQp
IHsgbV9pZCA9IGlkOyB9CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KICAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAg
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwpAQCAtNTYsOSAr
NjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBib29sIGFkZE9ubHksIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAotICAgIHZvaWQgY3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwog
ICAgIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJp
bmcmIG5hbWUpOwotICAgIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKIAogICAgIHZvaWQgb3Bl
bkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGly
ZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCkBAIC02Niw2ICs3MSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkRhdGFi
YXNlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKElEQkRhdGFiYXNlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKIAogICAgIHZvaWQgbG9h
ZEluZGV4ZXMoKTsKICAgICBTUUxpdGVEYXRhYmFzZSYgc3FsaXRlRGF0YWJhc2UoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApp
bmRleCBjMTk4NTVjNzZkZTFlNjI1MjQzODU5MjE3N2U5YzAxZjc3MjMyMTlkLi42MDFhNmU4ODI0
N2UyYzhiZjE5ZmQyMTMxNDBmZjdjNzMwYzlmM2ViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCkBAIC00OSwxMyArNDksMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdCA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGJvb2wgYWRkT25seSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogfTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGQ2MTM4MTQ0MjhmODdhMDhiNDJlODFjZmFlYWEwMmIwZDRjZTFiOGMu
LjhlMTI0MTFiOGNjNmVmNmFmZGY1MzYyMDYwOWQ3ZDRlN2YyN2M3YmQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDEwLTA5LTMwICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUvcmVtb3ZlT2JqZWN0U3RvcmUgYW5kIElE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleC9yZW1vdmVJbmRleCBzaG91bGQgYmUgc3luY2hyb25v
dXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njg4
MworCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICogcHVibGljL1dlYklE
Qk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRl
eCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNyYy9J
REJEYXRhYmFzZVByb3h5Lmg6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3ZlSW5kZXgpOgorICAg
ICAgICAqIHNyYy9JREJPYmplY3RTdG9yZVByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OnJl
bW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6Cisg
ICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmg6CisKIDIwMTAtMDktMjkgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZGluZyBvbmUgbW9yZSBtaXNz
aW5nIGNoYW5nZSBmcm9tIHRoZSBsYXN0IHBhdGNoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oCmluZGV4IDRlNWNkY2JjZDE4ZTIyMGYwNWVjZmRmMjUwNTc0YmFmNjdhZjQw
ZWIuLjNkMDZiMDBiNmUwYWUwMjY2YWI0MTM5NWYxOThjNWE0MmQ5NTVjZGEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTYxLDE0ICs2MSwyMiBAQCBwdWJsaWM6
CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFdl
YkRPTVN0cmluZ0xpc3QoKTsKICAgICB9CisgICAgLy8gRklYTUU6IFJlbW92ZSBhZnRlciBXZWJL
aXQgcm9sbC4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwg
V2ViSURCQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYpCisgICAgeyAKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgLy8gVHJhbnNmZXJz
IG93bmVyc2hpcCBvZiB0aGUgV2ViSURCT2JqZWN0U3RvcmUgdG8gdGhlIGNhbGxlci4KICAgICB2
aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICAvLyBGSVhNRTogUmVt
b3ZlIGFmdGVyIFdlYktpdCByb2xsLgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9y
ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmpl
Y3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVy
c2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tz
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIC8vIFRyYW5zZmVycyBvd25l
cnNoaXAgb2YgdGhlIFdlYklEQlRyYW5zYWN0aW9uIHRvIHRoZSBjYWxsZXIuCiAgICAgdmlydHVh
bCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYg
bmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCAxOWVmZDQ4OWNmMWI3
ZDBlODY0Mzg0NTY4OGUzOWI3NmVjN2RmOTJlLi4zMWM1ZmNlNDhiNGQ3YWIxYTkyZDU3MTNiNDAy
OWMyMGM1N2RkYjk0IDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9i
amVjdFN0b3JlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9y
ZS5oCkBAIC04NiwxNCArODYsMjIgQEAgcHVibGljOgogICAgICAgICBXZWJJREJUcmFuc2FjdGlv
biB0cmFuc2FjdGlvbjsKICAgICAgICAgcmVtb3ZlKGtleSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bik7CiAgICAgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgV2ViS2l0IHJvbGwuCiAgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViSURCQ2FsbGJhY2tzKikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJ
bmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikKKyAgICB7CisgICAgICAgIFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIC8v
IFRyYW5zZmVycyBvd25lcnNoaXAgb2YgdGhlIFdlYklEQkluZGV4IHRvIHRoZSBjYWxsZXIuCiAg
ICAgdmlydHVhbCBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQogICAg
IHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CisgICAgLy8gRklYTUU6IFJlbW92ZSBhZnRlciBXZWJLaXQgcm9sbC4KICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxs
YmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
b3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJikKICAgICB7CiAgICAgICAgIG9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJh
Y2tzKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCmluZGV4IGNlNWUw
YTZjY2ZkMzIwYmJlNjM3ZTNkZjdiYWMyNzlhOGJmYjM4ZDYuLmY5ZWQzNDgzMDEzMzBlNzkyNWY4
OTMzZmM0ODI1YTFlYjVhNWY4NTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVBy
b3h5LmNwcApAQCAtNzYsOSArNzYsMTMgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJE
YXRhYmFzZVByb3h5OjpvYmplY3RTdG9yZXMoKSBjb25zdAogICAgIHJldHVybiBtX3dlYklEQkRh
dGFiYXNlLT5vYmplY3RTdG9yZXMoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZVByb3h5OjpjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJv
eHk6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb24pCiB7Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3Rv
cmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwo
Y2FsbGJhY2tzKSk7CisgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwK
KyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBv
YmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5
ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7
CisgICAgV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX3dlYklEQkRh
dGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCAq
dHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7CisgICAgcmV0dXJuIElE
Qk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZShvYmplY3RTdG9yZSk7CiB9CiAKIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5OjpvYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpCkBAIC04OSw5ICs5
MywxMiBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0
YWJhc2VQcm94eTo6b2JqZWN0U3RvcmUoY29uc3QgUwogICAgIHJldHVybiBJREJPYmplY3RTdG9y
ZVByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOwogfQogCi12b2lkIElEQkRhdGFiYXNlUHJveHk6
OnJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uKQogewotICAgIG1fd2ViSURCRGF0YWJhc2UtPnJlbW92ZU9iamVjdFN0b3JlKG5h
bWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIC8vIFRoZSB0cmFu
c2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkg
b2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBv
ZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCRGF0YWJhc2UtPnJlbW92
ZU9iamVjdFN0b3JlKG5hbWUsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlv
bigpKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZVByb3h5OjpzZXRWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKaW5kZXggZmZmZDIzZWU4NTJhNjEzNmM0MWE1Y2Vi
ZTBhMDhkYzRkZGFmNjVhYi4uZTM4ODQ2ZTY0NzM4ZTkyZmEzNzUxMzI3MTE0OGMzNWE0NGRjZjQ4
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKQEAgLTQ5LDkgKzQ5LDkg
QEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IEFkZCBzZXRWZXJzaW9uLgogCi0gICAgdmlydHVh
bCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcAppbmRleCA4MmNhNWY2NmNmMDk3
ZmMzOTA4NmRiZTY0M2U2M2RhYjZmZjhmY2ZkLi4zMDViMTVhY2QzYTBhNzRlMzg4YTM0ZWI0Y2Jl
NTNlYmIxOWQ5MmYyIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94
eS5jcHAKQEAgLTkwLDkgKzkwLDE1IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3Zl
KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzCiAgICAgbV93
ZWJJREJPYmplY3RTdG9yZS0+cmVtb3ZlKGtleSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2Fs
bGJhY2tzKSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX3dlYklEQk9iamVjdFN0
b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG5ldyBXZWJJREJDYWxsYmFj
a3NJbXBsKGNhbGxiYWNrcykpOworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1
YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVu
ZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUg
cHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rp
b25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNh
Y3Rpb24pOworICAgIFdlYktpdDo6V2ViSURCSW5kZXgqIGluZGV4ID0gbV93ZWJJREJPYmplY3RT
dG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCAqdHJhbnNhY3Rpb25Qcm94
eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoaW5kZXgpOwog
fQogCiBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVQ
cm94eTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTAzLDkgKzEwOSwxMiBAQCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVQcm94eTo6aW5k
ZXgoY29uc3QgU3RyaW5nJiBuYQogICAgIHJldHVybiBJREJJbmRleEJhY2tlbmRQcm94eTo6Y3Jl
YXRlKGluZGV4KTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpyZW1vdmVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2
b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX3dl
YklEQk9iamVjdFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1w
bChjYWxsYmFja3MpKTsKKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50
ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVy
LAorICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5
IG9iamVjdHMuCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJv
eHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9u
KTsKKyAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCAqdHJhbnNhY3Rp
b25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3Rv
cmVQcm94eTo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaAppbmRleCAxM2RmZTIzNmRl
NmVlNDVjNWE1ZjE4YzQ2Njc2MTY3ZDQ0MjMwYmIyLi42YWUyOWNhMjUyMmY2ODU1ZGIxNzMyOTJk
YjUxNjBjMWYzZDIwY2ExIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVj
dFN0b3JlUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJv
eHkuaApAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBib29s
IGFkZE9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCByZW1vdmUoUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAotICAgIHZv
aWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOwogICAgIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBp
bmRleChjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZvaWQgcmVtb3ZlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJh
bmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA4ODcw
ZmY5NGNlYjkyZWI2OWE0MmI5ZjFmYTgwZjQ0NjkyNTEzZDJmLi4xMmRmYmNiYmE2M2I2OTc3ZmFl
ODI2NmE5ZjBlNjQyMDM5MjVhNmYwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwCkBAIC02OSw5ICs2OSwxMiBAQCBXZWJET01TdHJpbmdMaXN0IFdlYklEQkRh
dGFiYXNlSW1wbDo6b2JqZWN0U3RvcmVzKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhYmFzZUJh
Y2tlbmQtPm9iamVjdFN0b3JlcygpOwogfQogCi12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCitX
ZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAg
bV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9J
bmNyZW1lbnQsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSk7CisgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2RhdGFi
YXNlQmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVu
dCwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOworICAg
IGlmICghb2JqZWN0U3RvcmUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgV2Vi
SURCT2JqZWN0U3RvcmVJbXBsKG9iamVjdFN0b3JlKTsKIH0KIAogV2ViSURCT2JqZWN0U3RvcmUq
IFdlYklEQkRhdGFiYXNlSW1wbDo6b2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCB1
bnNpZ25lZCBzaG9ydCBtb2RlKQpAQCAtODIsOSArODUsOSBAQCBXZWJJREJPYmplY3RTdG9yZSog
V2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVu
c2lnbgogICAgIHJldHVybiBuZXcgV2ViSURCT2JqZWN0U3RvcmVJbXBsKG9iamVjdFN0b3JlKTsK
IH0KIAotdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdlYklEQkRh
dGFiYXNlSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgbV9kYXRhYmFzZUJhY2tl
bmQtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2Fs
bGJhY2tzKSk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUs
IHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKIH0KIAog
dm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJz
aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5oCmluZGV4IGUwZWFhYTU4YmY5ZWUwMzZhMmNlODI1ZjJiOTM0YjRlNjEy
MTIxNDguLjYyNDQ2OWIyYWJhMGE2MDgxNmYyZDZmZTg5ZTM4NTk4OGRmMjI1YjggMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDksOSArNDksOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwg
V2ViRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cyk7CisgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKICAgICB2aXJ0dWFsIFdlYklEQk9i
amVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmlu
ZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwogICAgIHZpcnR1YWwgV2Vi
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggMzZkOGFjZTRl
OWQyZWYwNDExMmI0ZjJjMTAwOGY3OGVlY2JkYWM2YS4uNWY4YTcxOGI1ZjNjYWExMDhhODUzMzM3
OTQ2MmYwYmJmNWY4MTNmNiAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmNwcApAQCAtODEsOSArODEsMTIgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OnJlbW92ZShjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmEK
ICAgICBtX29iamVjdFN0b3JlLT5yZW1vdmUoa2V5LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGNhbGxiYWNrcykpOwogfQogCi12b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKK1dlYklEQkluZGV4KiBXZWJJREJP
YmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogewotICAgIG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtl
eVBhdGgsIHVuaXF1ZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpKTsKKyAg
ICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUt
PmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOworICAgIGlmICghaW5kZXgpCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBuZXcgV2ViSURCSW5kZXhJbXBsKGluZGV4KTsKIH0KIAogV2Vi
SURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXgoY29uc3QgV2ViU3RyaW5nJiBu
YW1lKQpAQCAtOTQsOSArOTcsOSBAQCBXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBs
OjppbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG5ldyBXZWJJREJJbmRl
eEltcGwoaW5kZXgpOwogfQogCi12b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKK3Zv
aWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX29iamVj
dFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxi
YWNrcykpOworICAgIG1fb2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsIHRyYW5zYWN0aW9u
LmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKIH0KIAogdm9pZCBXZWJJREJP
YmplY3RTdG9yZUltcGw6Om9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdl
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggYTlmMTIw
MGM5ZmM0ZDg2MWQyZWY1Zjc5ZTk0NDIxOTYxM2U2NDY5OS4uZjJiNjY2N2NhY2Q5OGMyMzI5MDE5
Yzc2YzJhOGFkYTNhMTEwMTEwMyAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVj
dFN0b3JlSW1wbC5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dChjb25z
dCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtleSwg
Ym9vbCBhZGRPbmx5LCBXZWJJREJDYWxsYmFja3MqKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBX
ZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKik7CiAKLSAgICB2b2lkIGNyZWF0ZUluZGV4
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVu
aXF1ZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOworICAgIFdlYklEQkluZGV4KiBjcmVh
dGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CiAgICAgV2ViSURCSW5kZXgq
IGluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCByZW1vdmVJbmRleChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKTsKKyAgICB2b2lk
IHJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mKTsKIAogICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69498</attachid>
            <date>2010-10-01 12:09:02 -0700</date>
            <delta_ts>2010-10-04 16:37:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46883-20101001200859.patch</filename>
            <type>text/plain</type>
            <size>95886</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMjgzMjc3Y2U4ZTdiYzdjOWMwNTRjZDk5MTcwMWIxYmVjZGMxYTQ3Li43NzY0NTFm
ZTU1MWQ0Y2FlY2U5YjMxYjdjMTgyMjgyZjdjZDQ1MThjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMTAtMDEgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZS9yZW1vdmVPYmplY3RTdG9yZSBhbmQgSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4L3JlbW92ZUluZGV4IHNob3VsZCBiZSBzeW5jaHJvbm91cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2ODgzCisKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtY3Vyc29yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1jdXJzb3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWN1cnNvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKGRlbGV0ZUFsbE9iamVjdFN0
b3Jlcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNp
Y3MuaHRtbDoKKwogMjAxMC0xMC0wMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIGEgdGVzdCBJIGp1c3QgZml4ZWQgZnJvbSB0aGUgU2tpcHBlZCBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNp
Y3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Ut
YmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA5N2VjNzIxOTI4MjcwMzgwZjNmNGE0ZGVjYzk5MDI1
NWJjMWI5MDZhLi5kMDU0Nzc4YTdmMTVkOTI3Y2IzZDFmNTY0MWQwYThmYjNkNDcxNzk5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJh
c2ljcy1leHBlY3RlZC50eHQKQEAgLTQxLDYgKzQxLDcgQEAgUEFTUyBldmVudC50YXJnZXQucmVh
ZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQogCiB0cmFucyA9IGV2ZW50LnJlc3VsdAogUEFT
UyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogVGVz
dGluZyBzZXRWZXJzaW9uLgogZGIuc2V0VmVyc2lvbigidmVyc2lvbiBhIikKIFBBU1MgJ29uc3Vj
Y2VzcycgaW4gcmVzdWx0IGlzIHRydWUKQEAgLTgyLDIyICs4Myw2IEBAIFBBU1MgZGIub2JqZWN0
U3RvcmVzIGlzIFtdCiBQQVNTIGRiLm9iamVjdFN0b3Jlcy5sZW5ndGggaXMgMAogUEFTUyBkYi5v
YmplY3RTdG9yZXMuY29udGFpbnMoJycpIGlzIGZhbHNlCiBkYi5jcmVhdGVPYmplY3RTdG9yZSgi
dGVzdDEyMyIpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVy
cm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRy
dWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJl
ZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQg
aXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2Un
IGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFT
UyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05F
Ci0KIFBBU1MgZGIub2JqZWN0U3RvcmVzIGlzIFsndGVzdDEyMyddCiBQQVNTIGRiLm9iamVjdFN0
b3Jlcy5sZW5ndGggaXMgMQogUEFTUyBkYi5vYmplY3RTdG9yZXMuY29udGFpbnMoJycpIGlzIGZh
bHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1i
YXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2lj
cy5odG1sCmluZGV4IDg1MGQzMGRiNDZhMWY1ZGRmMWM1ZjE0N2M5NTdhNWIwMjFjZTdhMzguLjJl
YmNmMGI3ODJiZGUxMzk5NmI0YzgwMGE2OTFlOTcxNDE3NjMzYjEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sCkBAIC01MCw3ICs1
MCw3IEBAIGZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uKCkKICAgICByZXN1bHQgPSBldmFsQW5kTG9n
KCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGEiKScpOwogICAgIHZlcmlmeVJlc3VsdChyZXN1bHQp
OwogICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uQWdhaW47Ci0gICAgcmVzdWx0Lm9u
RXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogfQogCiBmdW5jdGlvbiBzZXRWZXJzaW9uQWdhaW4oKQpA
QCAtNjAsNyArNjAsNyBAQCBmdW5jdGlvbiBzZXRWZXJzaW9uQWdhaW4oKQogICAgIHJlc3VsdCA9
IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gYiIpJyk7CiAgICAgdmVyaWZ5UmVz
dWx0KHJlc3VsdCk7CiAgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOwot
ICAgIHJlc3VsdC5vbkVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKIH0KIAogZnVuY3Rpb24gY3JlYXRl
T2JqZWN0U3RvcmUoKQpAQCAtNzIsMTUgKzcyLDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0
b3JlKCkKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVzLmxlbmd0aCIsICIwIik7CiAgICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3Jlcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKIAotICAg
IHJlc3VsdCA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsK
LSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tP
YmplY3RTdG9yZTsKLSAgICByZXN1bHQub25FcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRl
c3QxMjMiKScpOw0KKyAgICBjaGVja09iamVjdFN0b3JlKG9iamVjdFN0b3JlKTsKIH0KIAotZnVu
Y3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCitmdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKG9iamVj
dFN0b3JlKQogewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CiAgICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlcyIsICJbJ3Rlc3QxMjMnXSIpOwogICAgIHNob3VsZEJlKCJkYi5vYmpl
Y3RTdG9yZXMubGVuZ3RoIiwgIjEiKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVzLmNv
bnRhaW5zKCcnKSIsICJmYWxzZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggZDhkNmRjYzU3YmEwMmVj
MmJiMGIzODY5YjQ4MjNkYmMyODFmYzlhMS4uOGY5MjZkMDRhY2M3ZmRjYWNhNzhmMmJiM2VmNDli
ZDVkMzBhN2Q3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC00MSw0MyArNDEsOSBAQCBQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKIHRyYW5zID0gZXZlbnQu
cmVzdWx0CiBQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCiBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKLVBBU1MgJ29u
c3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0
cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxk
IGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBp
biBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVz
c2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQot
UEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2
ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQu
dGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKLQotc3RvcmUgPSBldmVudC5y
ZXN1bHQKLWV2ZW50LnJlc3VsdC5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnKQotUEFTUyAn
b25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlz
IHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91
bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQn
IGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdt
ZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVl
Ci1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVu
dC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCi1QQVNTIGV2ZW50LnJl
c3VsdCA9PT0gbnVsbCBpcyBmYWxzZQotaW5kZXhPYmplY3QgPSBldmVudC5yZXN1bHQKK3N0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpCiBQQVNTICduYW1lJyBpbiBpbmRleE9iamVj
dCBpcyB0cnVlCiBQQVNTIGluZGV4T2JqZWN0Lm5hbWUgaXMgImluZGV4TmFtZSIKIFBBU1MgJ3N0
b3JlTmFtZScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQpAQCAtOTAsNyArNTYsNyBAQCBQQVNTICdv
cGVuT2JqZWN0Q3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTICdvcGVuQ3Vyc29y
JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTICdnZXRPYmplY3QnIGluIGluZGV4T2JqZWN0
IGlzIHRydWUKIFBBU1MgJ2dldCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQotZXZlbnQuc291cmNl
LmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykKK3N0b3JlLmFkZCh7eDogJ3ZhbHVl
JywgeTogJ3p6eid9LCAna2V5JykKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUK
IFBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdyZWFkeVN0YXRlJyBpbiBy
ZXN1bHQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1i
YXNpY3MuaHRtbAppbmRleCAzYzhhNjAxZTM1OWEzODBmMTMwNDJlNjE4NWE0MWI4YWEwNjE2NzMw
Li44ZjZkODg3NTI1YTlhOWQ0YmY2YWRjOWE2MDI4Y2MwMGI2OTkyNjY5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbApAQCAtNDEsMzMgKzQx
LDE4IEBAIGZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKICAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CiAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwogCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjcmVhdGVPYmplY3RTdG9yZSk7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICB2ZXJp
ZnlSZXN1bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY3JlYXRlSW5kZXg7Ci0g
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0ZUluZGV4KTsKIH0KIAogZnVuY3Rpb24gY3JlYXRlSW5k
ZXgoKQotewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0gICAgd2luZG93LnN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVudC5yZXN1bHQiKTsKLQotICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImV2ZW50LnJlc3VsdC5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnKSIpOwot
ICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBhZGREYXRh
OwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit7DQorICAg
IHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnLCBudWxsKSIpOworICAgIHdpbmRvdy5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpIik7CisgICAgYWRkRGF0YSgpOwogfQogCiBm
dW5jdGlvbiBhZGREYXRhKCkKIHsKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwotICAg
IHNob3VsZEJlRmFsc2UoImV2ZW50LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHdpbmRvdy5pbmRl
eE9iamVjdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0ID0gZXZlbnQucmVzdWx0Iik7CiAgICAg
c2hvdWxkQmVUcnVlKCInbmFtZScgaW4gaW5kZXhPYmplY3QiKTsKICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImluZGV4T2JqZWN0Lm5hbWUiLCAiaW5kZXhOYW1lIik7CiAgICAgc2hvdWxkQmVU
cnVlKCInc3RvcmVOYW1lJyBpbiBpbmRleE9iamVjdCIpOwpAQCAtODEsNyArNjYsNyBAQCBmdW5j
dGlvbiBhZGREYXRhKCkKICAgICBzaG91bGRCZVRydWUoIidnZXRPYmplY3QnIGluIGluZGV4T2Jq
ZWN0Iik7CiAgICAgc2hvdWxkQmVUcnVlKCInZ2V0JyBpbiBpbmRleE9iamVjdCIpOwogCi0gICAg
cmVzdWx0ID0gZXZhbEFuZExvZygiZXZlbnQuc291cmNlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6
eid9LCAna2V5JykiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2
YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CiAg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZE1vcmU7CiAgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWN1cnNvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbmRleC1jdXJzb3ItZXhwZWN0ZWQudHh0CmluZGV4IDk3MjRmZDA2NzkzODJiM2Q3
ZDhlZWYyNTJjYWE1YWFhNDc2NDEwNTEuLmFlZmRjZDBhMzVhMmNiMWRkYTc2OTdkOTU5MDQzZmFh
NzdiOWIzYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LWN1cnNvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtY3Vyc29yLWV4cGVjdGVkLnR4dApAQCAtNDAsNTMgKzQwLDkgQEAgUEFTUyBldmVudC50
YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQogCiB0cmFucyA9IGV2ZW50LnJl
c3VsdAogUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitEZWxldGVkIGFsbCBvYmplY3Qgc3Rv
cmVzLgogZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpCi1QQVNTICdvbnN1
Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1
ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3VsZCBm
aXJlIHNob3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4g
ZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3Nh
Z2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBB
U1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVu
dC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
LVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRh
cmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLW9iamVjdFN0b3JlID0gZXZl
bnQucmVzdWx0CiBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUluZGV4JywgJ3gnKQotUEFT
UyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0
IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBz
aG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1
bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNT
ICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0
cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2Vzcycg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBl
dmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCi1pbmRleE9iamVj
dCA9IGV2ZW50LnJlc3VsdAotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4g
ZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3Nh
Z2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBB
U1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVu
dC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
LVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRh
cmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KIG9iamVjdFN0b3JlLmFkZCh7
J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKQogUEFTUyAnb25zdWNjZXNzJyBp
biByZXN1bHQgaXMgdHJ1ZQogUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKaW5kZXggNjZi
NmRjNjMwMTVjM2Q0Y2E2MjdhOWYxZjcxOTc4ZDQ1ODc4YzQ1Yi4uNWYyY2RlNjc4NGJlNGEzMzgy
NzJmNmViOWJhMTlmYjM5MTY5NjIyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKQEAgLTUzLDQxICs1MywyMSBAQCBmdW5jdGlvbiBkZWxl
dGVFeGlzdGluZygpCiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwogICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIAotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYiwgY3JlYXRlT2JqZWN0U3RvcmVzKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
T2JqZWN0U3RvcmVzKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKLSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsK
LSAgICByZXN1bHQub25zdWNjZXNzID0gb3BlbkluZGV4OwotICAgIHJlc3VsdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5JbmRleCgpCi17Ci0g
ICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICB3aW5kb3cub2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGV2ZW50LnJlc3VsdCIpOwotCi0gICAgcmVzdWx0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykiKTsK
LSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gc3RhcnRB
ZGRpbmdEYXRhOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBzdGFydEFkZGluZ0RhdGEpOwogfQogIAog
ZnVuY3Rpb24gc3RhcnRBZGRpbmdEYXRhKCkKIHsKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZl
bnQpOwotICAgIHdpbmRvdy5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0ID0g
ZXZlbnQucmVzdWx0Iik7Ci0KKyAgICB3aW5kb3cub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICB3aW5kb3cuaW5k
ZXhPYmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUluZGV4
JywgJ3gnKSIpOwogICAgIHdpbmRvdy5uZXh0VG9BZGQgPSAwOwogICAgIGFkZERhdGEoKTsKIH0K
IAogZnVuY3Rpb24gYWRkRGF0YSgpCiB7Ci0gICAgLy8gV2UgY2hlYXQgd2hlbiBjYWxsZWQgZm9y
IHRoZSBmaXJzdCB0aW1lOyB3ZSdyZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgb2JqZWN0U3RvcmUg
c3VjY2VzcyBldmVudC4KLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIGlmICh3
aW5kb3cubmV4dFRvQWRkID4gMCkKKyAgICAgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsK
IAogICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0
YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIpOwogICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFz
aWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggMWRmNWE0ZWE3ZmFlOGI4NWU1YWYwNDNiNTAz
NGFlM2Y0ZWVjYzA5OC4uOWYyMWRlMDkxY2NiMTZhNmJmYzhlOWMyZDFhMmMxNzI1ZTFhMzIzOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFz
aWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC00MiwyNSArNDIsOSBAQCBQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKIHRyYW5zID0gZXZlbnQu
cmVzdWx0CiBQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKLWRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnLCBudWxsKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQot
UEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJl
c3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLWNyZWF0ZVN1
Y2Nlc3MoKToKLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlz
IHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBl
dmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50
LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdy
ZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVh
ZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCi1zdG9yZSA9IGV2ZW50LnJlc3VsdAorRGVs
ZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK2NyZWF0T2JqZWN0U3RvcmUoKToKK3N0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCiBzdG9yZU5hbWVzID0gZGIub2Jq
ZWN0U3RvcmVzCiBQQVNTIHN0b3JlLm5hbWUgaXMgInN0b3JlTmFtZSIKIFBBU1Mgc3RvcmUua2V5
UGF0aCBpcyBudWxsCkBAIC02OSwzNCArNTMsMTggQEAgUEFTUyBzdG9yZU5hbWVzLmxlbmd0aCBp
cyAxCiBBc2sgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0OgogaW5kZXggPSBzdG9yZS5p
bmRleCgnYXNkZicpCiBQQVNTIGluZGV4IGlzIG51bGwKLUZBSUwgQXNraW5nIGZvciBhIHN0b3Jl
IHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQgaGF2ZSB0aHJvd24uCi1ldmVudC5yZXN1bHQuY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JywgdHJ1ZSkKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVz
dWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFk
eVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4u
LgotCi1hZGRJbmRleFN1Y2Nlc3MoKToKLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1
bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNT
ICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0
cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2Vzcycg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBl
dmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCi1QQVNTIGV2ZW50
LnJlc3VsdCAhPT0gbnVsbCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZS5pbmRleE5hbWVzLmNv
bnRhaW5zKCdpbmRleE5hbWUnKSBpcyB0cnVlCi1pbmRleCA9IGV2ZW50LnNvdXJjZS5pbmRleCgn
aW5kZXhOYW1lJykKK1BBU1MgaW5kZXggaXMgbnVsbAorY3JlYXRlSW5kZXgoKToKK3N0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHRydWUpCitQQVNTIGluZGV4ICE9PSBudWxsIGlz
IHRydWUKK1BBU1Mgc3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykgaXMgdHJ1
ZQoraW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhOYW1lJykKIFBBU1MgaW5kZXggIT09IG51bGwg
aXMgdHJ1ZQogQXNrIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdDoKIGluZGV4ID0gc3Rv
cmUuaW5kZXgoJ2FzZGYnKQogUEFTUyBpbmRleCBpcyBudWxsCi1GQUlMIEFza2luZyBmb3IgYSBz
dG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLgotZXZlbnQuc291cmNl
LmFkZCh7eDogJ3ZhbHVlJ30sICdrZXknKQorUEFTUyBpbmRleCBpcyBudWxsLgorc3RvcmUuYWRk
KHt4OiAndmFsdWUnfSwgJ2tleScpCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVl
CiBQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAncmVhZHlTdGF0ZScgaW4g
cmVzdWx0IGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKaW5kZXggOWIwMDk0NjMyYWRhNWIxZTVhYTBkODE1YTY0
NmY0MjNkZDVhYWMzNy4uZDkzMGY0YmY2NThjNDk3YmI3YjA3N2Q2ZDRhMjE2ZWJmMjEyNDM4ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFz
aWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
YmFzaWNzLmh0bWwKQEAgLTQyLDIyICs0MiwxMyBAQCBmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vz
cygpCiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwogICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIAotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYiwgZGVsZXRlU3VjY2Vzcyk7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjcmVh
dGVPYmplY3RTdG9yZSk7CiB9Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewotICAgIHJl
c3VsdCA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KSIpOwotICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBj
cmVhdGVTdWNjZXNzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJjcmVhdGVT
dWNjZXNzKCk6Iik7Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGV2ZW50LnJlc3VsdCIpOworDQorZnVuY3Rpb24gY3Jl
YXRlT2JqZWN0U3RvcmUoKQorew0KKyAgICBkZWJ1ZygiY3JlYXRPYmplY3RTdG9yZSgpOiIpOw0K
KyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnLCBudWxsKSIpOwogICAgIHZhciBzdG9yZU5hbWVzID0gZXZhbEFuZExvZygi
c3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlcyIpOwogCiAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzdG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOwpAQCAtNjgsNDAgKzU5LDM3IEBAIGZ1bmN0
aW9uIGNyZWF0ZVN1Y2Nlc3MoKQogCiAgICAgZGVidWcoIkFzayBmb3IgYSBzdG9yZSB0aGF0IGRv
ZXNuJ3QgZXhpc3Q6Iik7CiAgICAgdHJ5IHsKLSAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJp
bmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykiKTsKLSAgICAgICAgc2hvdWxkQmVOdWxsKCJpbmRl
eCIpOyAvLyBSZXR1cm5pbmcgbnVsbCBpcyB3cm9uZywgYnV0IGxlc3Mgd3JvbmcgdGhhbiByZXR1
cm5pbmcgYW4gYWN0dWFsIG9iamVjdCEKLSAgICAgICAgdGVzdEZhaWxlZCgiQXNraW5nIGZvciBh
IHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQgaGF2ZSB0aHJvd24uIik7CisgICAgICAg
IGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpIik7DQorICAg
ICAgICBzaG91bGRCZU51bGwoImluZGV4Iik7IC8vIFJldHVybmluZyBudWxsIGlzIHdyb25nLCBi
dXQgbGVzcyB3cm9uZyB0aGFuIHJldHVybmluZyBhbiBhY3R1YWwgb2JqZWN0IQ0KKyAgICAgICAg
dGVzdFBhc3NlZCgiaW5kZXggaXMgbnVsbCIpOworICAgICAgICAvLyBGSVhNRTogdGVzdEZhaWxl
ZCgiQXNraW5nIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQgaGF2ZSB0aHJv
d24uIik7CiAgICAgfSBjYXRjaCAoZXJyKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIHRo
cm93bi4iKTsKICAgICAgICAgLy8gRklYTUU6IFZlcmlmeSB0aGUgY29ycmVjdCBleGNlcHRpb24g
dGhyb3duLgotICAgIH0KLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImV2ZW50LnJlc3VsdC5j
cmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnLCB0cnVlKSIpOyAvLyB0cnVlID09IHVuaXF1ZSBy
ZXF1aXJlbWVudC4KLSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNj
ZXNzID0gYWRkSW5kZXhTdWNjZXNzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgfQ0KKw0KKyAgICBjcmVhdGVJbmRleCgpOwogfQogCi1mdW5jdGlv
biBhZGRJbmRleFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRJbmRleFN1Y2Nlc3MoKToiKTsK
LSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQu
cmVzdWx0ICE9PSBudWxsIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC5zb3VyY2UuaW5kZXhO
YW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gZXZlbnQuc291cmNlLmluZGV4KCdpbmRleE5hbWUnKSIpOworZnVuY3Rpb24gY3JlYXRl
SW5kZXgoKQorew0KKyAgICBkZWJ1ZygiY3JlYXRlSW5kZXgoKToiKTsNCisgICAgd2luZG93Lmlu
ZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JywgdHJ1
ZSkiKTsgLy8gdHJ1ZSA9PSB1bmlxdWUgcmVxdWlyZW1lbnQuCisgICAgc2hvdWxkQmVUcnVlKCJp
bmRleCAhPT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250
YWlucygnaW5kZXhOYW1lJykiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3Rv
cmUuaW5kZXgoJ2luZGV4TmFtZScpIik7CiAgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPT0gbnVs
bCIpOwogCiAgICAgZGVidWcoIkFzayBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7
CiAgICAgdHJ5IHsKLSAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmlu
ZGV4KCdhc2RmJykiKTsKLSAgICAgICAgc2hvdWxkQmVOdWxsKCJpbmRleCIpOyAvLyBSZXR1cm5p
bmcgbnVsbCBpcyB3cm9uZywgYnV0IGxlc3Mgd3JvbmcgdGhhbiByZXR1cm5pbmcgYW4gYWN0dWFs
IG9iamVjdCEKLSAgICAgICAgdGVzdEZhaWxlZCgiQXNraW5nIGZvciBhIHN0b3JlIHRoYXQgZG9l
c24ndCBleGlzdCBzaG91bGQgaGF2ZSB0aHJvd24uIik7CisgICAgICAgIGluZGV4ID0gZXZhbEFu
ZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpIik7DQorICAgICAgICBzaG91bGRCZU51
bGwoImluZGV4Iik7IC8vIFJldHVybmluZyBudWxsIGlzIHdyb25nLCBidXQgbGVzcyB3cm9uZyB0
aGFuIHJldHVybmluZyBhbiBhY3R1YWwgb2JqZWN0IQ0KKyAgICAgICAgdGVzdFBhc3NlZCgiaW5k
ZXggaXMgbnVsbC4iKTsKKyAgICAgICAgLy8gRklYTUU6IHRlc3RGYWlsZWQoIkFza2luZyBmb3Ig
YSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOwogICAgIH0g
Y2F0Y2ggKGVycikgewotICAgICAgICB0ZXN0UGFzc2VkKCJFcnJvciB0aHJvd24uIik7CiAgICAg
ICAgIC8vIEZJWE1FOiBWZXJpZnkgdGhlIGNvcnJlY3QgZXhjZXB0aW9uIHRocm93bi4KICAgICB9
CiAKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJldmVudC5zb3VyY2UuYWRkKHt4OiAndmFsdWUn
fSwgJ2tleScpIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFs
dWUnfSwgJ2tleScpIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CiAgICAgcmVzdWx0Lm9u
c3VjY2VzcyA9IGFkZFN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWN1cnNvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3ItZXhwZWN0ZWQudHh0CmluZGV4IGYxZjEzYWUzODYzYzRi
NzBiMDE5ZmI5MjlkMWE2ZjcxYzNhZWE5ZDIuLmZmZTZjZDcyNTM1MzI2YzdjYThiMWE4YjljOTky
OTk3Zjk1ODk3NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWN1cnNvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4cGVjdGVkLnR4dApAQCAtNDAsMzUgKzQwLDgg
QEAgUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQogCiB0
cmFucyA9IGV2ZW50LnJlc3VsdAogUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitEZWxldGVk
IGFsbCBvYmplY3Qgc3RvcmVzLgogZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9y
ZScpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBp
biByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFu
IGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBB
U1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFs
c2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2
ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25z
dWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
Ci1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLW9i
amVjdFN0b3JlID0gZXZlbnQucmVzdWx0Ci1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVz
dWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFT
UyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMg
dHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3Mn
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQg
aXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1Mg
ZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKLQogb2JqZWN0U3Rv
cmUuYWRkKCcnLCB0ZXN0RGF0YVtuZXh0VG9BZGRdKQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1
bHQgaXMgdHJ1ZQogUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKaW5k
ZXggNzAyMDc2Zjc2ZTdhYmFiOTljMzBlNWEzYWQ5NmVlODM4YTk1NTJjZC4uOTJjMWE3YzY1ZDBl
ZGJmNzhlYmRhZDk5ZWJiNDg5YmZjNmI1ZjA4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKQEAgLTUyLDMwICs1Miwy
MCBAQCBmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOwogICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
IAotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgb3Blbk9iamVjdFN0b3JlKTsKLX0KLQot
ZnVuY3Rpb24gb3Blbk9iamVjdFN0b3JlKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKLSAgICB2ZXJpZnlSZXN1
bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gc3RhcnRBZGRpbmdEYXRhOwotICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiLCBzdGFydEFkZGluZ0RhdGEpOwogfQogIAogZnVuY3Rpb24gc3RhcnRB
ZGRpbmdEYXRhKCkKIHsKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwotICAgIHdpbmRv
dy5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZXZlbnQucmVzdWx0Iik7
Ci0KKyAgICB3aW5kb3cub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKICAgICB3aW5kb3cubmV4dFRvQWRkID0gMDsKICAg
ICBhZGREYXRhKCk7CiB9CiAKIGZ1bmN0aW9uIGFkZERhdGEoKQogewotICAgIC8vIFdlIGNoZWF0
IHdoZW4gY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZTsgd2UncmUgaW4gdGhlIGNvbnRleHQgb2Yg
dGhlIG9iamVjdFN0b3JlIHN1Y2Nlc3MgZXZlbnQuCi0gICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2
ZW50KTsKKyAgICBpZiAod2luZG93Lm5leHRUb0FkZCA+IDApCisgICAgICAgIHZlcmlmeVN1Y2Nl
c3NFdmVudChldmVudCk7CiAKICAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5h
ZGQoJycsIHRlc3REYXRhW25leHRUb0FkZF0pIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1y
ZW1vdmVvYmplY3RzdG9yZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS1leHBlY3RlZC50eHQKaW5kZXggYjUz
ZTQ3ZGNjYmM5NWI4ZWNjODVhMDc1ZjAzZDVjOGM1NTY4ZTY1NS4uMzg0NThiZDE3ZTA2YWE3MzRj
ZmQxN2E5OWNmZThmYTFiODY4NGFlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0
b3JlLWV4cGVjdGVkLnR4dApAQCAtNDAsMjQgKzQwLDkgQEAgUEFTUyBldmVudC50YXJnZXQucmVh
ZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQogCiB0cmFucyA9IGV2ZW50LnJlc3VsdAogUEFT
UyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JywgbnVsbCkKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJy
b3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1
ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNzIGV2ZW50IGZpcmVk
OgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBp
cyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScg
aW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNT
ICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlz
IHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUK
LQotZXZlbnQucmVzdWx0LmFkZCgndmFsdWUnLCAna2V5JykKK0RlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQor
c3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMg
dHJ1ZQogUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1MgJ3JlYWR5U3RhdGUn
IGluIHJlc3VsdCBpcyB0cnVlCkBAIC05NSwyMiArODAsNiBAQCBQQVNTIGV2ZW50LnRhcmdldC5y
ZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKIFBBU1MgZXZlbnQucmVzdWx0IGlzICJ2
YWx1ZSIKIGV2ZW50LnNvdXJjZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpCi1QQVNTICdv
bnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMg
dHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3Vs
ZCBmaXJlIHNob3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcg
aW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21l
c3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUK
LVBBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KIFBBU1MgZXZlbnQuc291
cmNlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRydWUKIGRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKQEAg
LTEzMiwzOSArMTAxLDcgQEAgUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50
YXJnZXQuRE9ORQogdHJhbnMgPSBldmVudC5yZXN1bHQKIFBBU1MgdHJhbnMgIT09IG51bGwgaXMg
dHJ1ZQogZGIucmVtb3ZlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1QQVNTICdvbnN1Y2Nlc3Mn
IGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFT
UyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNo
b3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQg
aXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGlu
IGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZl
bnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1Mg
J3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5y
ZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFT
UyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3Vs
dCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZl
bnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGlu
IGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAn
c291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRy
dWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJy
b3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJn
ZXQuRE9ORQotCiBkYi50cmFuc2FjdGlvbigpCiBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKQogc3RvcmUuZ2V0KCdrZXknKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0
b3JlLmh0bWwKaW5kZXggOTNkY2JmNmQ5ZDdhNWRkMTNhMjFmODFiM2JiZDJjYmRiM2I1MGM4My4u
Mzg3N2IxZTRkNzhkNDI1OTlhNThhNTdkNTQ5MjE3ZWY4ODI5ZDE4YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1v
dmVvYmplY3RzdG9yZS5odG1sCkBAIC0zOSwyMiArMzksMTMgQEAgZnVuY3Rpb24gZGVsZXRlRXhp
c3RpbmcoKQogICAgIHdpbmRvdy50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQucmVz
dWx0Iik7CiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwogCi0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiLCBjcmVhdGVPYmplY3RTdG9yZSk7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiLCBjcmVhdGVPYmplY3RTdG9yZUFuZEFkZFZhbHVlKTsKIH0KIAotZnVuY3Rp
b24gY3JlYXRlT2JqZWN0U3RvcmUoKQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBbmRBZGRW
YWx1ZSgpCiB7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IGFkZFZhbHVlOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFZhbHVlKCkKLXsKLSAgICB2ZXJpZnlT
dWNjZXNzRXZlbnQoZXZlbnQpOwotCi0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZXZlbnQucmVz
dWx0LmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJl
c3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKICAgICB2ZXJp
ZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0VmFsdWU7CiAgICAg
cmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKQEAgLTc5LDE1ICs3MCw3
IEBAIGZ1bmN0aW9uIGFkZEluZGV4KCkKICAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwog
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQucmVzdWx0IiwgInZhbHVlIik7CiAKLSAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJldmVudC5zb3VyY2UuY3JlYXRlSW5kZXgoJ2luZGV4TmFt
ZScsICcnKSIpOwotICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nl
c3MgPSBjb21taXRUcmFuc2FjdGlvbjsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjb21taXRUcmFuc2FjdGlvbigpCi17Ci0gICAg
dmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cuaW5kZXggPSBldmFsQW5kTG9n
KCJldmVudC5zb3VyY2UuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwogICAgIHNob3Vs
ZEJlVHJ1ZSgiZXZlbnQuc291cmNlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7
CiAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBjb21taXQuCiAgICAgd2luZG93LnNldFRpbWVv
dXQoJ3NlY29uZFNldFZlcnNpb24oKScsIDApOwpAQCAtMTA4LDI2ICs5MSwxOCBAQCBmdW5jdGlv
biByZW1vdmVPYmplY3RTdG9yZSgpCiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
OwogICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIAotICAgIHJl
c3VsdCA9IGV2YWxBbmRMb2coImRiLnJlbW92ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwot
ICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjcmVhdGVP
YmplY3RTdG9yZUFnYWluOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7DQorICAgIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKTsKIH0KIAogZnVuY3Rpb24gY3JlYXRl
T2JqZWN0U3RvcmVBZ2FpbigpCiB7Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLQot
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
LCBudWxsKSIpOwotICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nl
c3MgPSBnZXRWYWx1ZUFnYWluOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScsIG51bGwpIik7CisgICAgZ2V0VmFsdWVBZ2FpbigpOwogfQogCiBmdW5jdGlvbiBnZXRWYWx1
ZUFnYWluKCkKIHsKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwotCiAgICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbigpIik7CiAgICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAgIHZhciBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBl
Y3RlZC50eHQKaW5kZXggNDhhNjg5ZjA4MWJmYzhjZjJkNDI3MmZiNDE5ZWRlMTg4ZjNmNjMxMi4u
MGU1NWJlNzczZWRhYWZmMzc2YTAzNDU1NzgwOWRhODI3NDc1ZjU3YyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dApA
QCAtNDEsMjQgKzQxLDggQEAgUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50
YXJnZXQuRE9ORQogCiB0cmFucyA9IGV2ZW50LnJlc3VsdAogUEFTUyB0cmFucyAhPT0gbnVsbCBp
cyB0cnVlCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpCi1QQVNTICdvbnN1Y2Nlc3MnIGlu
IHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAn
cmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0
bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMg
dHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2
ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQu
c291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQg
aXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3Jl
YWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFk
eVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLW9iamVjdFN0b3JlID0gZXZlbnQucmVzdWx0
CitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgndGVzdCcpCiBvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUnLCAnbXlLZXknKQogUEFT
UyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0
IGlzIHRydWUKQEAgLTY2LDcgKzUwLDcgQEAgUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlz
IHRydWUKIEFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KIAogT3BlbmluZyBjdXJzb3IK
LW9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpCitldmVudC5zb3VyY2Uub3BlbkN1cnNv
cihrZXlSYW5nZSkKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1MgJ29u
ZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMg
dHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJz
b3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwK
aW5kZXggNDdjN2U4OTcxNDQ3NTBmNDZmMmI3OWE5Zjc1MjEyMjkwYTZiM2QyYi4uZDRhOTA2ODYw
NzMyMmM0ZTExNDAwMDFlMzExNDUyNzA1YmEzMTU2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCkBAIC00OCwzNSArNDgsMjEgQEAgZnVuY3Rp
b24gb3BlbkN1cnNvcigpCiB7CiAgICAgZGVidWcoIk9wZW5pbmcgY3Vyc29yIik7CiAgICAga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZS5sZWZ0Qm91bmQoIm15S2V5Iik7Ci0gICAgcmVzdWx0ID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJldmVudC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKICAgICB2
ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQub25zdWNjZXNzID0gY3Vyc29yU3VjY2Vz
czsKICAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBwb3B1bGF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlKQoteworfQ0KKw0KK2Z1bmN0
aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKSAKK3sNCisgICAgdmFyIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVz
dCcpIik7CiAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVl
JywgJ215S2V5JykiKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQub25z
dWNjZXNzID0gb3BlbkN1cnNvcjsKICAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwogfQogCi1mdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZVN1Y2Nlc3MoKQotewot
ICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBldmVudC5yZXN1bHQiKTsKLSAgICBwb3B1bGF0ZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlKTsKLX0KLQotZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0g
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwot
ICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjcmVhdGVP
YmplY3RTdG9yZVN1Y2Nlc3M7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQogZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQogewogICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwpAQCAtODUsNyArNzEsNyBAQCBmdW5jdGlvbiBzZXRW
ZXJzaW9uU3VjY2VzcygpCiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwogICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIAotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYiwgZGVsZXRlU3VjY2Vzcyk7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiLCBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKTsKIH0KIAogZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3NoYXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zaGFyZWQuanMKaW5kZXggZWE0YTUyNTk1OGMzM2E3N2MxNDliN2YyZDRmMDY3MzQzMTZkMDgz
OC4uMjllYjE3ZjNkOTAxZTk0ZTM0ODM5YzUxYTU0ZjhiMTg2MDc0OWU2MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC03NCwx
NCArNzQsMTAgQEAgZnVuY3Rpb24gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2soKQogfQogCiBmdW5j
dGlvbiBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIG9uZmluaXNoZWQpCi17Ci0gICAgb2JqZWN0
U3RvcmVzID0gZGIub2JqZWN0U3RvcmVzOwotICAgIGlmICghb2JqZWN0U3RvcmVzLmxlbmd0aCkg
ewotICAgICAgICBvbmZpbmlzaGVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2
YXIgcmVxdWVzdCA9IGRiLnJlbW92ZU9iamVjdFN0b3JlKG9iamVjdFN0b3Jlc1swXSk7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBvbmZpbmlz
aGVkKTsgfTsKK3sNCisgICAgZm9yIChpID0gMDsgaSA8IGRiLm9iamVjdFN0b3Jlcy5sZW5ndGg7
ICsraSkNCisgICAgICAgIGRiLnJlbW92ZU9iamVjdFN0b3JlKGRiLm9iamVjdFN0b3Jlcy5pdGVt
KGkpKTsNCisNCisgICAgZGVidWcoIkRlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuIik7DQorICAg
IG9uZmluaXNoZWQoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGZjZTU5M2I1
OWUwYzM1YzZmOTY4MWM3NTViNDg3YWZiZTRmMDIxOGYuLjgwMmFlODdmZmM0OGE3YzQzNTI4ZDIx
YzkwNWUyZDk5NjljOGQ5MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtNDQsMjMg
KzQ0LDggQEAgUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9O
RQogCiB0cmFucyA9IGV2ZW50LnJlc3VsdAogUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitE
ZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScsIG51bGwpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVy
cm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRy
dWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJl
ZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQg
aXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2Un
IGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFT
UyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05F
Ci0KIGRiLnRyYW5zYWN0aW9uKCkKIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCiBQQVNTIHN0b3JlLm5hbWUgaXMgInN0b3JlTmFtZSIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwKaW5kZXgg
OGZiNjQ5MzY2MDQ4YTA4ZDVlYzdhZWEzN2FlMGI3MDRhM2UxMGU0Mi4uMzYwZDgwNzEyNGRmMDdh
NDViNTc0ZDc2ZDg2MjQ0NWFkOTBkMTk0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwKQEAgLTQ1LDIwICs0NSwxMiBA
QCBmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOwogICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
IAotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgZmluaXNoZWREZWxldGluZyk7Ci19Ci0K
LWZ1bmN0aW9uIGZpbmlzaGVkRGVsZXRpbmcoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHZlcmlmeVJl
c3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjcmVhdGVTdWNjZXNzOwotICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGNyZWF0ZVN1Y2Nlc3MoKQotewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjcmVhdGVPYmplY3RTdG9yZUFuZFN0YXJ0VHJhbnNh
Y3Rpb24pOworfQ0KKw0KK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlQW5kU3RhcnRUcmFuc2Fj
dGlvbigpDQorew0KKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywgbnVsbCkiKTsKICAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0
aW9uKCkiKTsKICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKICAgICB2
YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMjAyOTRlMDM0NWZhMWZlYzBkMWI3MDQzMmNmYWZlNzVkZjA0ZDdjLi4y
NjdkMmQ4MmRlYjkwZmEwNmI5OWQ1NmQwYjdkNWIwODVkMGVkMzBmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisy
MDEwLTEwLTAxICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJREJEYXRhYmFzZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUvcmVtb3ZlT2JqZWN0U3RvcmUgYW5kIElEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleC9yZW1vdmVJbmRleCBzaG91bGQgYmUgc3luY2hyb25vdXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njg4MworCisgICAgICAgIE1ha2Vz
IHRoZSBzY2hlbWEgbWFuaXB1bGF0aW9uIG1ldGhvZHMgc3luY2hyb25vdXMuIE1vZGlmaWVzIHRo
ZSB0cmFuc2FjdGlvbgorICAgICAgICBsb2dpYyB0byBzdXBwb3J0IHRhc2tzIHRoYXQgbWF5IGhh
dmUgcGVuZGluZyBldmVudHMgYXMgd2VsbCBhcyB0YXNrcyB0aGF0CisgICAgICAgIGRvbid0IGhh
dmUgc3VjaCBldmVudHMuCisKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaWRs
OgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJl
bW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnJlbW92ZU9iamVjdFN0b3JlSW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZElt
cGwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4QmFja2VuZEltcGw6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFj
a2VuZEltcGw6OnNldElkKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlk
bDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpjcmVhdGVJbmRleEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmF1dG9JbmNyZW1lbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpydW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1RpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGlt
ZXJGaXJlZCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6
CisKIDIwMTAtMTAtMDEgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCA0
ZDMyMjEzOGY3YjE1MzBkZWQwYzM4NDg0ZGRjZGY1YWZlZDhhNWFmLi4wNDZlOWE5ZGM4YmVkZmM1
OWNlOWM1NWVjMDg4MDMwMmZjNzYzMTg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTU1
LDI2ICs1NSwxOCBAQCB2b2lkIElEQkRhdGFiYXNlOjpzZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFucwogICAgIG1fc2V0VmVyc2lvblRy
YW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CiB9CiAKLS8vIEZJWE1FOiBTaG91bGQgYmUgc3luY2hy
b25vdXMuCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RT
dG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiB7Ci0g
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uLmdldCgpKTsK
LSAgICBpZiAoIW1fc2V0VmVyc2lvblRyYW5zYWN0aW9uKQotICAgICAgICByZXF1ZXN0LT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FM
TE9XRURfRVJSLCAiY3JlYXRlT2JqZWN0U3RvcmUgbXVzdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4g
YSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uLiIpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYmFja2Vu
ZC0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgcmVxdWVz
dCwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJldHVybiByZXF1ZXN0Owor
ICAgIC8vIEZJWE1FOiBSYWlzZSBhIE5PVF9BTExPV0VEX0VSUiBpZiBtX3NldFZlcnNpb25UcmFu
c2FjdGlvbiBpcyAwLgorICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IG9iamVjdFN0b3JlID0gbV9iYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRo
LCBhdXRvSW5jcmVtZW50LCBtX3NldFZlcnNpb25UcmFuc2FjdGlvbi5nZXQoKSk7CisgICAgaWYg
KCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQk9iamVjdFN0
b3JlOjpjcmVhdGUob2JqZWN0U3RvcmUucmVsZWFzZSgpLCBtX3NldFZlcnNpb25UcmFuc2FjdGlv
bi5nZXQoKSk7CiB9CiAKLS8vIEZJWE1FOiBTaG91bGQgYmUgc3luY2hyb25vdXMuCi1QYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIElEQkRhdGFi
YXNlOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmVmUHRy
PElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uLmdldCgpKTsKLSAgICBpZiAo
IW1fc2V0VmVyc2lvblRyYW5zYWN0aW9uKQotICAgICAgICByZXF1ZXN0LT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJS
LCAicmVtb3ZlT2JqZWN0U3RvcmUgbXVzdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBzZXRWZXJz
aW9uIHRyYW5zYWN0aW9uLiIpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZC0+cmVtb3Zl
T2JqZWN0U3RvcmUobmFtZSwgcmVxdWVzdCwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24uZ2V0KCkp
OwotICAgIHJldHVybiByZXF1ZXN0OworICAgIG1fYmFja2VuZC0+cmVtb3ZlT2JqZWN0U3RvcmUo
bmFtZSwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24uZ2V0KCkpOwogfQogCiBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXgg
Y2Y5NTMxN2E3ZjQzZWEwMmFiYjFhNGE1YWFiNmZiMWI1YTBjZWJjMS4uNDM4MzdkOTdiN2ZlNWQz
N2ZmOWYwNTljMjNiYzc3ZWMyNWFkNWM1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTU3LDgg
KzU3LDggQEAgcHVibGljOgogICAgIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kLT52ZXJzaW9uKCk7IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+b2JqZWN0U3RvcmVzKCk7IH0KIAot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY3JlYXRlT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoID0g
U3RyaW5nKCksIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlKTsKLSAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IHJlbW92ZU9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoID0gU3Ry
aW5nKCksIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlKTsKKyAgICB2b2lkIHJlbW92ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBz
ZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
OwogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzID0gMCwgdW5zaWduZWQgc2hv
cnQgbW9kZSA9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gMCk7IC8vIEZJ
WE1FOiB3aGF0IHNob3VsZCB0aGUgZGVmYXVsdCB0aW1lb3V0IGJlPwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZS5pZGwKaW5kZXggMzBjZGYzMDNlNTVlNzllMmEwYzBjZTlhMWI1ODllMGRhNDY3MTQ2NS4uM2Y1
NzQzN2YyODlkY2JlYjkwMGU3YjlkMjA0NGU4Y2YwOTI3OGQ0OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuaWRsCkBAIC0zMiw4ICszMiw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZXM7CiAKLSAgICAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgY3JlYXRlT2JqZWN0U3RvcmUoaW4gRE9NU3Ry
aW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBrZXlQYXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0b0luY3JlbWVudCk7Ci0gICAgICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHJlbW92ZU9iamVj
dFN0b3JlKGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgSURCT2JqZWN0U3RvcmUgY3JlYXRl
T2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyBrZXlQYXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0
b0luY3JlbWVudCk7CisgICAgICAgIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5n
IG5hbWUpOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVx
dWVzdCBzZXRWZXJzaW9uKGluIERPTVN0cmluZyB2ZXJzaW9uKTsKICAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uIChpbiBb
T3B0aW9uYWxdIERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsXSB1bnNpZ25l
ZCBzaG9ydCBtb2RlLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiAgICAg
ICAgIHZvaWQgY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA0NTNmODVkMTk4MGM1ZDE4ZDg4Nzk3OTVjMjk1ZmIyODAzODg3YjZkLi5hZWI0
YjEzZjVjMDUwN2Q5NTcyMmFhMDZkZGYwZjRiYmE1ZjRjMWM1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMjcsMzUgKzEyNywzOCBAQCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3Jlcygp
IGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQogCi12b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24pCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCiB7CisgICAgaWYgKG1f
b2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaHJvdyBD
T05TVFJBSU5UX0VSUiBpbiB0aGlzIGNhc2UuCisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5j
cmVtZW50KTsKKyAgICBBU1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsKKyAgICBt
X29iamVjdFN0b3Jlcy5zZXQobmFtZSwgb2JqZWN0U3RvcmUpOworCiAgICAgUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhpczsKLSAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2UsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNy
ZW1lbnQsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlIsICJj
cmVhdGVPYmplY3RTdG9yZSBtdXN0IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIHNldFZlcnNpb24g
dHJhbnNhY3Rpb24uIikpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHJwVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGVPYmplY3RTdG9yZUludGVybmFsLCBkYXRhYmFzZSwgb2JqZWN0U3RvcmUsIHJwVHJhbnNh
Y3Rpb24pKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVs
ZWFzZSgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0
b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3Jl
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW1wbD4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bD4gb2JqZWN0U3RvcmUsICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gdHJhbnNhY3Rpb24pCiB7Ci0gICAgaWYgKGRhdGFiYXNlLT5tX29iamVjdFN0b3Jlcy5jb250
YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIkFuIG9iamVj
dFN0b3JlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIFNRTGl0ZVN0YXRlbWVudCBpbnNlcnQoZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCksICJJTlNFUlQgSU5UTyBPYmplY3RTdG9yZXMgKG5hbWUsIGtleVBhdGgsIGRvQXV0
b0luY3JlbWVudCkgVkFMVUVTICg/LCA/LCA/KSIpOwogICAgIGJvb2wgb2sgPSBpbnNlcnQucHJl
cGFyZSgpID09IFNRTFJlc3VsdE9rOwogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklY
TUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KLSAgICBpbnNlcnQuYmluZFRleHQoMSwgbmFtZSk7
Ci0gICAgaW5zZXJ0LmJpbmRUZXh0KDIsIGtleVBhdGgpOwotICAgIGluc2VydC5iaW5kSW50KDMs
IHN0YXRpY19jYXN0PGludD4oYXV0b0luY3JlbWVudCkpOworICAgIGluc2VydC5iaW5kVGV4dCgx
LCBvYmplY3RTdG9yZS0+bmFtZSgpKTsKKyAgICBpbnNlcnQuYmluZFRleHQoMiwgb2JqZWN0U3Rv
cmUtPmtleVBhdGgoKSk7CisgICAgaW5zZXJ0LmJpbmRJbnQoMywgc3RhdGljX2Nhc3Q8aW50Pihv
YmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpKSk7CiAgICAgb2sgPSBpbnNlcnQuc3RlcCgpID09
IFNRTFJlc3VsdERvbmU7CiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0
dGVyIGVycm9yIGhhbmRsaW5nLgogICAgIGludDY0X3QgaWQgPSBkYXRhYmFzZS0+c3FsaXRlRGF0
YWJhc2UoKS5sYXN0SW5zZXJ0Um93SUQoKTsKLQotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0
ZShkYXRhYmFzZS5nZXQoKSwgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOwotICAg
IEFTU0VSVChvYmplY3RTdG9yZS0+bmFtZSgpID09IG5hbWUpOwotICAgIGRhdGFiYXNlLT5tX29i
amVjdFN0b3Jlcy5zZXQobmFtZSwgb2JqZWN0U3RvcmUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKG9iamVjdFN0b3JlLmdldCgpKTsKKyAgICBvYmplY3RTdG9yZS0+c2V0SWQoaWQpOworICAg
IHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogLy8gRklYTUU6IERv
IG5vdCBleHBvc2UgdGhpcyBtZXRob2QgdmlhIElETC4KQEAgLTE3NiwyOSArMTc5LDI4IEBAIHN0
YXRpYyB2b2lkIGRvRGVsZXRlKFNRTGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgY2hhciogc3FsLCBp
bnQ2NF90IGlkKQogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklYTUU6IEJldHRlciBl
cnJvciBoYW5kbGluZy4KIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZW1vdmVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24p
Ci17Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhpczsK
LSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAg
aWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2UsIG5h
bWUsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlIsICJyZW1v
dmVPYmplY3RTdG9yZSBtdXN0IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIHNldFZlcnNpb24gdHJh
bnNhY3Rpb24uIikpOwotfQotCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9i
amVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewotICAgIFJlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLT5tX29iamVjdFN0b3Jlcy5nZXQo
bmFtZSk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3Jl
ID0gbV9vYmplY3RTdG9yZXMuZ2V0KG5hbWUpOwogICAgIGlmICghb2JqZWN0U3RvcmUpIHsKLSAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIk5vIG9iamVjdFN0b3JlIHdpdGggdGhhdCBu
YW1lIGV4aXN0cy4iKSk7CisgICAgICAgIC8vIEZJWE1FOiBSYWlzZSBOT1RfRk9VTkRfRVJSLgog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIG1fb2JqZWN0U3RvcmVzLnJlbW92ZShuYW1lKTsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOworICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHJwVHJhbnNhY3Rpb24gPSB0
cmFuc2FjdGlvbjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmVJbnRlcm5hbCwg
ZGF0YWJhc2UsIG9iamVjdFN0b3JlLCBycFRyYW5zYWN0aW9uKSk7CisgICAgLy8gRklYTUU6IFJh
aXNlIE5PVF9BTExPV0VEX0VSUiBpZiB0aGUgYWJvdmUgZmFpbHMuICAgIAorfQogCit2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2UsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKK3sK
ICAgICBkb0RlbGV0ZShkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgIkRFTEVURSBGUk9NIE9i
amVjdFN0b3JlcyBXSEVSRSBpZCA9ID8iLCBvYmplY3RTdG9yZS0+aWQoKSk7CiAgICAgZG9EZWxl
dGUoZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBPYmplY3RTdG9yZURh
dGEgV0hFUkUgb2JqZWN0U3RvcmVJZCA9ID8iLCBvYmplY3RTdG9yZS0+aWQoKSk7CiAgICAgZG9E
ZWxldGUoZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBJbmRleERhdGEg
V0hFUkUgaW5kZXhJZCBJTiAoU0VMRUNUIGlkIEZST00gSW5kZXhlcyBXSEVSRSBvYmplY3RTdG9y
ZUlkID0gPykiLCBvYmplY3RTdG9yZS0+aWQoKSk7CiAgICAgZG9EZWxldGUoZGF0YWJhc2UtPnNx
bGl0ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBJbmRleGVzIFdIRVJFIG9iamVjdFN0b3JlSWQg
PSA/Iiwgb2JqZWN0U3RvcmUtPmlkKCkpOwogCi0gICAgZGF0YWJhc2UtPm1fb2JqZWN0U3RvcmVz
LnJlbW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOworICAgIHRyYW5zYWN0
aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCmluZGV4IGI1NzZmYTViODhiMThkM2JjOTc3Y2Y1MWNhNjdkYWU4ZmVlMDM2MjkuLjBj
YjQ4M2RlZWU0ZjQ4M2M4YzQ3NTg2ZTNkOGE3MDE2ZjQ3NWNlMzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNTUsOSArNTUsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hvcnQgbW9kZSk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBT
dHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9N
U3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9u
ZyB0aW1lb3V0KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKQEAgLTY5LDggKzY5LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgbG9hZE9iamVjdFN0b3JlcygpOwogCi0gICAgc3RhdGljIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVPYmplY3RTdG9yZUludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgc3RhdGlj
IHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIHNldFZlcnNpb25JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsPiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAKICAgICBPd25QdHI8
U1FMaXRlRGF0YWJhc2U+IG1fc3FsaXRlRGF0YWJhc2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYzAxZGFkZmVjZGVmNjYyMDc2OWQ5ZDhl
NDY5MjdjYzFhOGI1OTgwNS4uNGE1YmI0MWNiMTQ0NmJkNjI5NjVhYzRhOGJiNDEwZmM2ZTQ2Y2U3
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApA
QCAtNTQsOSArNTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3Rv
cmVzKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1l
bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9y
ZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggMThlMjRiMjA5ZGM3MGJkYmQ0ZDE1ZGZmYjYxZDIxNTViNGVjMGQ1
Ny4uMzllZTM1MWY0OTgxMDFkMDkyMTc4MGZlZWYyZDQ0OWU4NDkyOThhYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtNTAsNiArNTAsMTUgQEAgSURCSW5kZXhC
YWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
KiBvYmplY3RTdG9yZSwKIHsKIH0KIAorSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNr
ZW5kSW1wbChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIDogbV9v
YmplY3RTdG9yZShvYmplY3RTdG9yZSkKKyAgICAsIG1faWQoMCkKKyAgICAsIG1fbmFtZShuYW1l
KQorICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCisgICAgLCBtX3VuaXF1ZSh1bmlxdWUpCit7Cit9
CisKIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4IDJkMDZjNjk3ZWM5OGE4ZTE4ZTdl
ZmVmOWE5YTdkMThhNDg5NDQ2MjQuLmJmOWJiZGZhMmE5MGFkZjM4ZjZiZjhjNGNiMjcyMDA3ODRl
OGEzOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAtNDMsOSArNDMs
MTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRl
eEJhY2tlbmRJbXBsKG9iamVjdFN0b3JlLCBpZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7CiAg
ICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKG9iamVjdFN0b3JlLCBuYW1lLCBr
ZXlQYXRoLCB1bmlxdWUpKTsKKyAgICB9CiAgICAgdmlydHVhbCB+SURCSW5kZXhCYWNrZW5kSW1w
bCgpOwogCi0gICAgaW50NjRfdCBpZCgpIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBpbnQ2NF90IGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgc2V0SWQoaW50NjRfdCBpZCkgeyBt
X2lkID0gaWQ7IH0KKwogICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dlZChJREJLZXkqKTsKIAogICAg
IC8vIEltcGxlbWVudHMgSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLgpAQCAtNjMsNiArNjksNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpOwogCiAgICAgU1FMaXRlRGF0YWJhc2UmIHNxbGl0ZURh
dGFiYXNlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IGE4MWUx
N2ZmZjYxZjgyMmY5MzUxZTUxODYzMDllNWViY2UwNGNjYTAuLmM0ODEwOTk3MzM5ODQxMDI0MTZj
MmZkMzNlMDgyYjI3YWE3YmQ3MjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
OTIsMTEgKzkyLDEyIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnJl
bW92ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQCiAgICAgcmV0dXJuIHJlcXVl
c3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUlu
ZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK1Bhc3NSZWZQdHI8SURCSW5kZXg+
IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyks
IG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5h
bWUsIGtleVBhdGgsIHVuaXF1ZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAg
cmV0dXJuIHJlcXVlc3Q7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5k
ZXggPSBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBJREJJbmRleDo6Y3JlYXRlKGluZGV4LnJlbGVhc2UoKSwgbV90cmFuc2FjdGlv
bi5nZXQoKSk7CiB9CiAKIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xMDgsMTEgKzEwOSw5IEBAIFBhc3NSZWZQdHI8SURC
SW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0
dXJuIElEQkluZGV4OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgpLCBtX3RyYW5zYWN0aW9uLmdldCgp
KTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5k
ZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
dm9pZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQogewot
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRl
eHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAgICBtX29i
amVjdFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdldCgp
KTsKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICBtX29iamVjdFN0b3JlLT5yZW1vdmVJbmRleChu
YW1lLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmggYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAppbmRleCBkZjViM2Y3NTBiOWQ2MjY4Y2Y3MjA5Yjcy
OTE4NTgyNjk5ZGE0ZmIyLi5hMTczYjY4YTU3ZWE3MmEwMzQ2ZTU4M2Q5NmYwYzFhYTMzYzRhNDhl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaApAQCAtNjMsOSArNjMsOSBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSA9IDApOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcmVtb3ZlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4ga2V5KTsKIAotICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gY3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSA9IGZhbHNlKTsK
KyAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUgPSBmYWxzZSk7CiAgICAgUGFzc1Jl
ZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IHJlbW92ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUpOworICAgIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gPSAwLCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24gPSBJREJDdXJzb3I6Ok5FWFQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmUuaWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbApp
bmRleCBjOGFhMzVkMjgwYzA3MmQ2YjFhZTEzYmNhZTEyOGYwYmMwNTg0OWFjLi5lZjNhYWQ4NWFh
Zjg2ODljM2M5YzNhNzdhNjQ0ZWFkY2U5MjU5YzRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5pZGwKQEAgLTM3LDkgKzM3LDEyIEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgYWRkKGluIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSB2YWx1ZSwgaW4gW09wdGlvbmFsXSBJREJLZXkga2V5KTsKICAgICAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgcHV0KGluIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSB2YWx1ZSwgaW4gW09wdGlvbmFsXSBJREJLZXkga2V5KTsKICAgICAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgcmVtb3ZlKGluIElE
QktleSBrZXkpOwotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURC
UmVxdWVzdCBjcmVhdGVJbmRleChpbiBET01TdHJpbmcgbmFtZSwgaW4gW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBib29sZWFuIHVuaXF1
ZSk7CisgICAgICAgIC8vIEZJWE1FOiB3cml0ZSBvcGVuQ3Vyc29yCisgICAgICAgIElEQkluZGV4
IGNyZWF0ZUluZGV4KGluIERPTVN0cmluZyBuYW1lLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyBrZXlQYXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdW5pcXVlKTsKKyAg
ICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gcmFpc2UgYW4gSURCRGF0YWJhc2VFeGNlcHRp
b24gb24gZXJyb3JzLgogICAgICAgICBJREJJbmRleCBpbmRleChpbiBET01TdHJpbmcgbmFtZSk7
Ci0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHJl
bW92ZUluZGV4KGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgdm9pZCByZW1vdmVJbmRleChp
biBET01TdHJpbmcgbmFtZSk7CisKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJh
bmdlLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbik7CiAgICAgfTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNw
cCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA1
MGEyZGVjMjdjZTk3MzVkMjMwOGNlNmJmNjNhMmY3ODU5MjRlODdmLi5jMjJiMzAxNDlhMWJmZDMy
NzNjMDI2OGI3YjczMDBhN2RhZWQ0Njc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC02Miw2ICs2MiwxNSBAQCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkRhdGFiYXNlQmFja2VuZElt
cGwqIGRhdAogICAgIGxvYWRJbmRleGVzKCk7CiB9CiAKK0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQpCisgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQorICAgICwgbV9pZCgwKQor
ICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKKyAgICAsIG1fYXV0
b0luY3JlbWVudChhdXRvSW5jcmVtZW50KQoreworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRl
KCk7CkBAIC0yNTQsMzYgKzI2MywzOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnJlbW92ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUAogICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKKyAgICBp
ZiAobV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBSYWlzZSBD
T05TVFJBSU5UX0VSUi4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKHRo
aXMsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSk7CisgICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0g
bmFtZSk7CisgICAgbV9pbmRleGVzLnNldChuYW1lLCBpbmRleCk7CisKICAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwotICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIXRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsLCBvYmplY3RTdG9yZSwgbmFtZSwga2V5UGF0aCwg
dW5pcXVlLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSLCAi
Y3JlYXRlSW5kZXggbXVzdCBiZSBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgYSB0cmFuc2FjdGlv
bi4iKSk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcnBUcmFu
c2FjdGlvbiA9IHRyYW5zYWN0aW9uOworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUlu
ZGV4SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb24pKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgpOwogfQogCi12b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3Rv
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewotICAgIGlmIChvYmplY3RTdG9y
ZS0+bV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJ
TlRfRVJSLCAiSW5kZXggbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KICAgICBTUUxpdGVTdGF0ZW1lbnQgaW5zZXJ0KG9iamVjdFN0b3JlLT5zcWxpdGVE
YXRhYmFzZSgpLCAiSU5TRVJUIElOVE8gSW5kZXhlcyAob2JqZWN0U3RvcmVJZCwgbmFtZSwga2V5
UGF0aCwgaXNVbmlxdWUpIFZBTFVFUyAoPywgPywgPywgPykiKTsKICAgICBib29sIG9rID0gaW5z
ZXJ0LnByZXBhcmUoKSA9PSBTUUxSZXN1bHRPazsKICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7
IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCiAgICAgaW5zZXJ0LmJpbmRJbnQ2NCgx
LCBvYmplY3RTdG9yZS0+bV9pZCk7Ci0gICAgaW5zZXJ0LmJpbmRUZXh0KDIsIG5hbWUpOwotICAg
IGluc2VydC5iaW5kVGV4dCgzLCBrZXlQYXRoKTsKLSAgICBpbnNlcnQuYmluZEludCg0LCBzdGF0
aWNfY2FzdDxpbnQ+KHVuaXF1ZSkpOworICAgIGluc2VydC5iaW5kVGV4dCgyLCBpbmRleC0+bmFt
ZSgpKTsKKyAgICBpbnNlcnQuYmluZFRleHQoMywgaW5kZXgtPmtleVBhdGgoKSk7CisgICAgaW5z
ZXJ0LmJpbmRJbnQoNCwgc3RhdGljX2Nhc3Q8aW50PihpbmRleC0+dW5pcXVlKCkpKTsKICAgICBv
ayA9IGluc2VydC5zdGVwKCkgPT0gU1FMUmVzdWx0RG9uZTsKICAgICBBU1NFUlRfVU5VU0VEKG9r
LCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCiAgICAgaW50NjRfdCBpZCA9
IG9iamVjdFN0b3JlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RJbnNlcnRSb3dJRCgpOwotCi0gICAg
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6
Y3JlYXRlKG9iamVjdFN0b3JlLmdldCgpLCBpZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlKTsKLSAg
ICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKLSAgICBvYmplY3RTdG9yZS0+bV9pbmRl
eGVzLnNldChuYW1lLCBpbmRleCk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoaW5kZXguZ2V0
KCkpOworICAgIGluZGV4LT5zZXRJZChpZCk7CisgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRl
VGFza0V2ZW50cygpOwogfQogCiBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAt
MzAxLDI3ICszMTMsMjYgQEAgc3RhdGljIHZvaWQgZG9EZWxldGUoU1FMaXRlRGF0YWJhc2UmIGRi
LCBjb25zdCBjaGFyKiBzcWwsIGludDY0X3QgaWQpCiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2sp
OyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgogfQogCi12b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbikKLXsKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bD4gb2JqZWN0U3RvcmUgPSB0aGlzOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJbmRleElu
dGVybmFsLCBvYmplY3RTdG9yZSwgbmFtZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
Ok5PVF9BTExPV0VEX0VSUiwgImNyZWF0ZUluZGV4IG11c3QgYmUgY2FsbGVkIGluIHRoZSBjb250
ZXh0IG9mIGEgdHJhbnNhY3Rpb24uIikpOwotfQotCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnJlbW92ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewotICAgIFJlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuZ2V0KG5h
bWUpOworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IG1faW5kZXhlcy5n
ZXQobmFtZSk7CiAgICAgaWYgKCFpbmRleCkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRf
RVJSLCAiSW5kZXggbmFtZSBkb2VzIG5vdCBleGlzdC4iKSk7CisgICAgICAgIC8vIEZJWE1FOiBS
YWlzZSBOT1RfRk9VTkRfRVJSLgogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIG1faW5kZXhl
cy5yZW1vdmUobmFtZSk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlID0gdGhpczsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiBycFRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CisgICAgdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJl
bW92ZUluZGV4SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBpbmRleCwgcnBUcmFuc2FjdGlvbikpOwor
ICAgIC8vIEZJWE1FOiBSYWlzZSBOT1RfQUxMT1dFRF9FUlIgaWYgdGhlIGFib3ZlIHN0YXRlbWVu
dCBmYWlscy4KK30KIAordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJbmRl
eEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZElt
cGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJh
bnNhY3Rpb24pCit7CiAgICAgZG9EZWxldGUob2JqZWN0U3RvcmUtPnNxbGl0ZURhdGFiYXNlKCks
ICJERUxFVEUgRlJPTSBJbmRleGVzIFdIRVJFIGlkID0gPyIsIGluZGV4LT5pZCgpKTsKICAgICBk
b0RlbGV0ZShvYmplY3RTdG9yZS0+c3FsaXRlRGF0YWJhc2UoKSwgIkRFTEVURSBGUk9NIEluZGV4
RGF0YSBXSEVSRSBpbmRleElkID0gPyIsIGluZGV4LT5pZCgpKTsKIAotICAgIG9iamVjdFN0b3Jl
LT5tX2luZGV4ZXMucmVtb3ZlKG5hbWUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7Cisg
ICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCiB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cHJwUmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvblB0cikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmlu
ZGV4IGVkOTk0ZmI0OWZlM2EwZWRlYjY2Y2I4YmY1ZjkxZjJhNjU3MDUwMzEuLjEwMzU4ZjA4ZDNj
MGRhMTU3ZDYwNTVjYjFlNDk4MDA0NDZiNjY0MjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtNDYsMjAgKzQ2LDI2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChk
YXRhYmFzZSwgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkRh
dGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGRhdGFiYXNlLCBuYW1lLCBr
ZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CisgICAgfQogICAgIH5JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKCk7CiAKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAg
IHZvaWQgc2V0SWQoaW50NjRfdCBpZCkgeyBtX2lkID0gaWQ7IH0KICAgICBTdHJpbmcgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5h
bWVzKCkgY29uc3Q7CisgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9h
dXRvSW5jcmVtZW50OyB9CiAKICAgICB2b2lkIGdldChQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSop
OwogICAgIHZvaWQgcHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgYm9vbCBhZGRPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZvaWQgcmVtb3Zl
KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAg
ICBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHJlbW92ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAKICAgICB2b2lk
IG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKIApAQCAtNjcsNiArNzMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50
NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgYXV0b0luY3JlbWVudCk7CiAKICAgICB2b2lkIGxvYWRJbmRleGVzKCk7CiAgICAgU1FM
aXRlRGF0YWJhc2UmIHNxbGl0ZURhdGFiYXNlKCkgY29uc3Q7CkBAIC03NCw4ICs4MSw4IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgc3RhdGljIHZvaWQgcHV0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgYm9vbCBhZGRPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAg
ICBzdGF0aWMgdm9pZCByZW1vdmVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlSW5k
ZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgdm9pZCBy
ZW1vdmVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRp
YyB2b2lkIG9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogCiAgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNTNhZGU2Mjg3MmRj
N2Y2MjNiNjI5ZGYzZTM3ZDY1NjJmOGY2NTIzMi4uNmQ5ZmNiOGNkMjZmOWUzYTVkNzI1ZGFjOWFl
NjYzYjg4MmViOWM0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2UuaApAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgYm9vbCBhZGRPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0g
MDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVh
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1
bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcm
IG5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopID0gMDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5jcHAKaW5kZXggMTc1NzI5NTNkMjQxOWM2MmM1NzAwMjI1YTlkYjIzOWRlYjVj
Y2ZjNS4uNTNjODc4YzFhN2Y3YTJjODE5Mjc2NzNmNmQxMjdlODVlYzY5Yzk2MSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtNDcsMjEgKzQ3
LDIyIEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwoRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVzCiAgICAgLCBtX3N0YXRlKFVudXNlZCkKICAg
ICAsIG1fZGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKG5ldyBTUUxpdGVU
cmFuc2FjdGlvbihkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSkpCi0gICAgLCBtX3RpbWVyKHRo
aXMsICZJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0aW1lckZpcmVkKQorICAgICwgbV90YXNr
VGltZXIodGhpcywgJklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKQor
ICAgICwgbV90YXNrRXZlbnRUaW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
dGFza0V2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ0V2ZW50cygwKQogewogfQogCiBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChp
c0ZpbmlzaGVkKCkpCisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBtX2RhdGFiYXNlLT5vYmplY3RTdG9yZShuYW1lLCAwKTsgLy8gRklY
TUU6IHJlbW92ZSBtb2RlIHBhcmFtLgogfQogCiBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OnNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2spCiB7Ci0gICAgaWYgKGlzRmluaXNoZWQoKSkKKyAgICBpZiAobV9zdGF0ZSA9PSBGaW5p
c2hlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV90YXNrUXVldWUuYXBwZW5kKHRh
c2spOwpAQCAtNzMsMTEgKzc0LDEyIEBAIGJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
c2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoKQogewotICAgIGlmIChpc0ZpbmlzaGVk
KCkpCisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fc3RhdGUgPSBGaW5pc2hlZDsKLSAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX3Rhc2tUaW1l
ci5zdG9wKCk7CisgICAgbV90YXNrRXZlbnRUaW1lci5zdG9wKCk7CiAgICAgbV90cmFuc2FjdGlv
bi0+cm9sbGJhY2soKTsKICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydCgpOwogICAgIG1fZGF0YWJh
c2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJhbnNhY3Rpb24odGhpcyk7
CkBAIC05MCwyOSArOTIsMTggQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkaWRD
b21wbGV0ZVRhc2tFdmVudHMoKQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7CiAg
ICAgQVNTRVJUKG1fcGVuZGluZ0V2ZW50cyk7Ci0KICAgICBtX3BlbmRpbmdFdmVudHMtLTsKIAot
ICAgIGlmICghbV9wZW5kaW5nRXZlbnRzICYmIG1fdGFza1F1ZXVlLmlzRW1wdHkoKSkgewotICAg
ICAgICAvLyBUaGUgbGFzdCB0YXNrIGV2ZW50IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0YXNrCi0g
ICAgICAgIC8vIHF1ZXVlIGlzIGVtcHR5LiBDb21taXQgdGhlIHRyYW5zYWN0aW9uLgotICAgICAg
ICBjb21taXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlIGFyZSBzdGls
bCB3YWl0aW5nIGZvciBvdGhlciBldmVudHMgdG8gY29tcGxldGUuIEhvd2V2ZXIsCi0gICAgLy8g
dGhlIHRhc2sgcXVldWUgaXMgbm9uLWVtcHR5IGFuZCB0aGUgdGltZXIgaXMgaW5hY3RpdmUuCi0g
ICAgLy8gV2UgY2FuIHRoZXJmb3JlIHNjaGVkdWxlIHRoZSB0aW1lciBhZ2Fpbi4KLSAgICBpZiAo
IW1fdGFza1F1ZXVlLmlzRW1wdHkoKSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBt
X3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBpZiAoIW1fdGFza0V2ZW50VGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgbV90YXNrRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZv
aWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6cnVuKCkKIHsKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGFydFBlbmRpbmcgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICBBU1NFUlQoIW1f
dGltZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX3Rhc2tUaW1lci5pc0FjdGl2ZSgpKTsK
IAotICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fdGFza1RpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzdGFydCgpCkBA
IC0xMzIsNyArMTIzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQo
KQogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJh
bnNhY3Rpb24odGhpcyk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGlt
ZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopCit2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+KikKIHsKICAgICBBU1NFUlQoIW1fdGFza1F1ZXVlLmlzRW1wdHkoKSk7CiAKQEAg
LTE1Miw2ICsxNDMsMjQgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0aW1lckZp
cmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KikKICAgICB9CiB9CiAKK3ZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmlu
Zyk7CisKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50cyAmJiBtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgLy8gVGhlIGxhc3QgdGFzayBldmVudCBoYXMgY29tcGxldGVkIGFuZCB0aGUg
dGFzaworICAgICAgICAvLyBxdWV1ZSBpcyBlbXB0eS4gQ29tbWl0IHRoZSB0cmFuc2FjdGlvbi4K
KyAgICAgICAgY29tbWl0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBh
cmUgc3RpbGwgd2FpdGluZyBmb3Igb3RoZXIgZXZlbnRzIHRvIGNvbXBsZXRlLiBIb3dldmVyLAor
ICAgIC8vIHRoZSB0YXNrIHF1ZXVlIGlzIG5vbi1lbXB0eSBhbmQgdGhlIHRpbWVyIGlzIGluYWN0
aXZlLgorICAgIC8vIFdlIGNhbiB0aGVyZm9yZSBzY2hlZHVsZSB0aGUgdGltZXIgYWdhaW4uCisg
ICAgaWYgKCFtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwogfTsKIAogI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMDlhNmExYzZkN2UyMTAyNjJjMmIwZGNkYWFlZDkyODQ1
MTc0MzlmOC4uY2Y0MGViYTdjMTg4NWVlZDM2YTM1NDM1MTVhOGUyODRhNTY2YzNiYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCkBAIC01NCw3ICs1NCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgbV9jYWxsYmFja3MgPSBjYWxsYmFja3M7IH0KIAogICAg
IHZvaWQgcnVuKCk7Ci0gICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSA9PSBGaW5pc2hlZDsgfQogCiBwcml2YXRlOgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwoRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNp
Z25lZCBsb25nIHRpbWVvdXQsIGludCBpZCwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOwpAQCAt
NjksNyArNjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNvbW1p
dCgpOwogCi0gICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+Kik7CisgICAgdm9pZCB0YXNrVGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiopOworICAgIHZvaWQgdGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiopOwogCiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG1fb2JqZWN0
U3RvcmVOYW1lczsKICAgICB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CkBAIC04Niw3ICs4Niw4IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPFNRTGl0ZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwog
CiAgICAgLy8gRklYTUU6IGRlbGV0ZSB0aGUgdGltZXIgb25jZSB3ZSBoYXZlIHRocmVhZHMgaW5z
dGVhZC4KLSAgICBUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBtX3RpbWVyOworICAg
IFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IG1fdGFza1RpbWVyOworICAgIFRpbWVy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IG1fdGFza0V2ZW50VGltZXI7CiAgICAgaW50IG1f
cGVuZGluZ0V2ZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGIwMWFhYmU4YzY4N2JmNzUyNjM5
NDM4NTU0ZjIyZjdkOTIzODk3NDQuLjg4ZDEzMDY3NDk3MDNjOTE4MTU1N2QzZDMxNzQ0NjlkZjA3
YzZjMTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTEwLTAxICBBbmRyZWkg
UG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUvcmVt
b3ZlT2JqZWN0U3RvcmUgYW5kIElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleC9yZW1vdmVJbmRl
eCBzaG91bGQgYmUgc3luY2hyb25vdXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Njg4MworCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNl
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9i
amVjdFN0b3JlOjpyZW1vdmVJbmRleCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5Lmg6CisgICAgICAgICogc3JjL0lE
Qk9iamVjdFN0b3JlUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVQ
cm94eTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVQcm94
eTo6cmVtb3ZlSW5kZXgpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZVByb3h5Lmg6Cisg
ICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJEYXRhYmFzZUltcGw6OnJlbW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4KToK
KyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisKIDIwMTAtMTAtMDEgIEpv
Y2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmlu
ZGV4IDhjNGI0NzAzZjUwNjI3YmVlZDJjOGQ4NGNiNjMwYmE3OWQ4NGFiNTkuLmZlMDdhYzgyNmE2
ZGNiNjBmZTIwNWRhNDI1ZjIyZWQwMGMzNmExYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkRhdGFiYXNlLmgKQEAgLTYxLDE4ICs2MSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZ0xpc3Qo
KTsKICAgICB9CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugd2UgdXBkYXRlIENocm9taXVt
IHNpZGUuCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdl
YklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpCisgICAgeyAKKyAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgLy8g
VHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCT2JqZWN0U3RvcmUgdG8gdGhlIGNhbGxl
ci4KICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiAgICAgewogICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICAvLyBG
SVhNRTogUmVtb3ZlIG9uY2Ugd2UgdXBkYXRlIENocm9taXVtIHNpZGUuCisgICAgLy8gRklYTUU6
IFJlbW92ZSBhZnRlciBXZWJLaXQgcm9sbC4KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0
U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
T2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxi
YWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcm
IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAgb2YgdGhlIFdlYklEQlRy
YW5zYWN0aW9uIHRvIHRoZSBjYWxsZXIuCiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCT2JqZWN0U3RvcmUuaAppbmRleCBlMTU3ZTk1NGE3YzBlM2FjOTA5Mzc0OWU3MjhmMzhhNThj
MjQ2MjZlLi4yNGE0MzJlMWY4MzFmNjI2NzE3ODI5MTI5Yjc0MDBiMjViNjY1MjE3IDEwMDc1NQot
LS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC02Myw3ICs2MywxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJJREJLZXkmLCBXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIHdlIHVwZGF0ZSBDaHJv
bWl1bSBzaWRlLgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFdlYklEQkNhbGxi
YWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgV2ViSURC
SW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKQorICAgIHsK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCSW5kZXggdG8g
dGhlIGNhbGxlci4KICAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJp
bmcmIG5hbWUpCiAgICAgewpAQCAtNzIsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIC8v
IEZJWE1FOiBSZW1vdmUgb25jZSB3ZSB1cGRhdGUgQ2hyb21pdW0gc2lkZS4KICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3Mq
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBGSVhNRTogZmluaXNoLgog
fTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCmluZGV4IDU2NGZkZGI2
ZTZhYjhmZjJmNDZlNDg0NDJkNTc4ZjliYTQ2NzRlNWIuLjFkZWMxOGE0OWNhNzE5OTA5ODRiZDJh
NjQzMGFmYzY0NmM0MTcwNDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5
LmNwcApAQCAtNzYsMTIgKzc2LDE1IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2VQcm94eTo6b2JqZWN0U3RvcmVzKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJREJEYXRh
YmFzZS0+b2JqZWN0U3RvcmVzKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5OjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
KQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUg
YSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8g
YWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4K
ICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRp
Y19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOwotICAgIG1f
d2ViSURCRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNy
ZW1lbnQsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblBy
b3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKKyAgICBXZWJLaXQ6OldlYklEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZSA9IG1fd2ViSURCRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJU
cmFuc2FjdGlvbigpKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlKG9iamVjdFN0b3JlKTsKIH0K
IAogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
UHJveHk6Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hvcnQgbW9k
ZSkKQEAgLTkyLDEyICs5NSwxMiBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gSURCRGF0YWJhc2VQcm94eTo6b2JqZWN0U3RvcmUoY29uc3QgUwogICAgIHJldHVy
biBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOwogfQogCi12b2lkIElE
QkRhdGFiYXNlUHJveHk6OnJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJh
bnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVy
ZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJv
eHkgb2JqZWN0cy4KICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Q
cm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rp
b24pOwotICAgIG1fd2ViSURCRGF0YWJhc2UtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsIG5ldyBX
ZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJ
REJUcmFuc2FjdGlvbigpKTsKKyAgICBtX3dlYklEQkRhdGFiYXNlLT5yZW1vdmVPYmplY3RTdG9y
ZShuYW1lLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7CiB9CiAK
IHZvaWQgSURCRGF0YWJhc2VQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VQcm94eS5oCmluZGV4IGVhZWViMjdiNTViMzM3Njg2ZjRjOTIzZjE0OTE0YzNmNzYx
NDkyZmEuLjE0OTRlZjBkMzg1ODU4NThlZDYzZTNkOWUxMWRjZjUyMDE3ODhmZGQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmpl
Y3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9y
ZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJPYmplY3RTdG9yZVByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3Rv
cmVQcm94eS5jcHAKaW5kZXggNjlhYThjYTg5NTA1MGQ1MWU3MjJiYTJlNWJiNDk4YTUwOGFhOWZh
Ny4uYTAwOWFhODBmZDQ1MGNjNzQ3ZjgzNzZlYjI4NDE0NjM5MzEwOGIwZiAxMDA3NTUKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3BwCkBAIC05NiwxMiArOTYsMTUgQEAg
dm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpyZW1vdmUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3MKICAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5yZW1vdmUo
a2V5LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94
eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVQcm94
eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKICAgICAvLyBUaGUgdHJh
bnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5
IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAogICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMg
b2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCiAgICAgSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKLSAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5j
cmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsK
KyAgICBXZWJLaXQ6OldlYklEQkluZGV4KiBpbmRleCA9IG1fd2ViSURCT2JqZWN0U3RvcmUtPmNy
ZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCkpOworICAgIGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBJREJJbmRleEJhY2tlbmRQcm94eTo6Y3JlYXRlKGluZGV4KTsKIH0KIAogUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlUHJveHk6Omlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTExMiwxMiArMTE1LDEyIEBAIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZVByb3h5OjppbmRleChjb25z
dCBTdHJpbmcmIG5hCiAgICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoaW5k
ZXgpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OnJlbW92ZUluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3ZvaWQgSURCT2JqZWN0U3RvcmVQ
cm94eTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2lu
dGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBp
biB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJm
YWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSog
dHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
Kj4odHJhbnNhY3Rpb24pOwotICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5h
bWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5
LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKKyAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5yZW1v
dmVJbmRleChuYW1lLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7
CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9y
ZVByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaAppbmRl
eCA4MGU0NjY4YzVlZDA1YTkwMTJlOWVhYjlmMGU3ZTE1NzkwYWM3OGE0Li44NmI5YzY4MzEwODlh
YzExMTMxM2U0YTJiNWVkZTk1YTAxNWU3NDgxIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9i
amVjdFN0b3JlUHJveHkuaApAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgYm9vbCBhZGRPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJp
bmcmIG5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CisgICAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9p
ZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSopOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IGFiZTZmYmQwODE3ZDYxOTVlMGE5ZmMw
ZDk4ODQ3ZDFjMzFkNTRkNzYuLmM4ZDgxZDYwNmVjMjYxNzhiOTVmOTAzNjk1ZTU3MTQzOWFiY2Uy
MzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTY5
LDkgKzY5LDEyIEBAIFdlYkRPTVN0cmluZ0xpc3QgV2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RT
dG9yZXMoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGFiYXNlQmFja2VuZC0+b2JqZWN0U3RvcmVz
KCk7CiB9CiAKLXZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uKQorV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewotICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShu
YW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNh
bGxiYWNrcyksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgp
KTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9y
ZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOwogfQogCiBXZWJJREJP
YmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpCkBAIC04Miw5ICs4NSw5IEBAIFdlYklEQk9i
amVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6Om9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgdW5zaWduCiAgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2Jq
ZWN0U3RvcmUpOwogfQogCi12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6cmVtb3ZlT2JqZWN0U3Rv
cmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQordm9pZCBXZWJJREJEYXRhYmFzZUlt
cGw6OnJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5yZW1v
dmVPYmplY3RTdG9yZShuYW1lLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyks
IHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKKyAgICBt
X2RhdGFiYXNlQmFja2VuZC0+cmVtb3ZlT2JqZWN0U3RvcmUobmFtZSwgdHJhbnNhY3Rpb24uZ2V0
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOwogfQogCiB2b2lkIFdlYklEQkRhdGFi
YXNlSW1wbDo6c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgK
aW5kZXggMjI3NGU0OGNmZDU5ODA1NWEzMzE3ZDU4Njg0NGZjNGQxZTZiZDhiOS4uOGUzNjBkYWIw
NmM0MWIxMGFjYjMwYjNlOGI3MjBhNTU1ZDQ1N2RkMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFdlYlN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0
IG9iamVjdFN0b3JlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYpOworICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CiAgICAgdmlydHVh
bCBXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCB1
bnNpZ25lZCBzaG9ydCBtb2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpOwogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2Rl
LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDNjZjdm
MjU3OWVhNzM5NmNlNTJhMWY5MDRkMzQ0NzBiMGNlZTFhM2YuLjlmYjdhYjY4NzU4NGM2YTZjMzRj
Y2RkNGYyNDI3ODRjYTE0Njc0NTUgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5jcHAKQEAgLTgxLDkgKzgxLDEyIEBAIHZvaWQgV2ViSURCT2JqZWN0U3Rv
cmVJbXBsOjpyZW1vdmUoY29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhCiAgICAgbV9vYmplY3RTdG9yZS0+cmVtb3ZlKGtleSwgSURCQ2FsbGJhY2tzUHJveHk6OmNy
ZWF0ZShjYWxsYmFja3MpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UoKSk7CiB9CiAKLXZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlx
dWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24pCitXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJ
bmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAgICBt
X29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIElEQkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKCkpOworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5p
cXVlLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSk7Cisg
ICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJJREJJ
bmRleEltcGwoaW5kZXgpOwogfQogCiBXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBs
OjppbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCkBAIC05NCw5ICs5Nyw5IEBAIFdlYklEQklu
ZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSkK
ICAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1wbChpbmRleCk7CiB9CiAKLXZvaWQgV2ViSURC
T2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCit2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAg
bV9vYmplY3RTdG9yZS0+cmVtb3ZlSW5kZXgobmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShjYWxsYmFja3MpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSk7CisgICAgbV9vYmplY3RTdG9yZS0+cmVtb3ZlSW5kZXgobmFtZSwgdHJhbnNhY3Rpb24u
Z2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOwogfQogCiB2b2lkIFdlYklEQk9i
amVjdFN0b3JlSW1wbDo6b3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5UmFuZ2Us
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCmluZGV4IDc2ZTQxNGI1YzNlZjUzYzFmN2RhODBlMTlm
ZmVmMjk0MjRhNDdlZGQuLmVlMWVjMGJlNmY1YTM0NjRlZDEwMjcxMWNiODM0NmFjMzQ4MzgxNzIg
MTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtNTEs
OSArNTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlJiwgY29uc3QgV2ViSURCS2V5JiBrZXksIGJvb2wgYWRkT25seSwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBX
ZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
KTsKIAotICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYpOworICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CiAgICAgV2ViSURCSW5kZXgqIGluZGV4KGNvbnN0IFdl
YlN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CisgICAgdm9p
ZCByZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJik7CiAKICAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69715</attachid>
            <date>2010-10-04 16:37:33 -0700</date>
            <delta_ts>2010-10-04 18:44:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46883-20101004163731.patch</filename>
            <type>text/plain</type>
            <size>96660</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NzJhZTE5MThhZjM1NzFkZTY5OTQxMTIwNjZjZTMyNjBlZGNiNjhhLi5jNjNjN2Yw
ZjZiZTc1ZTg5M2FkMDM2MThmZTQ0NTliMGYzNDhlNzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMTAtMDQgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZS9yZW1vdmVPYmplY3RTdG9yZSBhbmQgSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4L3JlbW92ZUluZGV4IHNob3VsZCBiZSBzeW5jaHJvbm91cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2ODgzCisKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtY3Vyc29yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1jdXJzb3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWN1cnNvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKGRlbGV0ZUFsbE9iamVjdFN0
b3Jlcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNp
Y3MuaHRtbDoKKwogMjAxMC0xMC0wNCAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEJ1aWxkIGZpeC4gTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy1leHBlY3RlZC50eHQKaW5k
ZXggOTdlYzcyMTkyODI3MDM4MGYzZjRhNGRlY2M5OTAyNTViYzFiOTA2YS4uZDA1NDc3OGE3ZjE1
ZDkyN2NiM2QxZjU2NDFkMGE4ZmIzZDQ3MTc5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC00
MSw2ICs0MSw3IEBAIFBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0
LkRPTkUKIAogdHJhbnMgPSBldmVudC5yZXN1bHQKIFBBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1
ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIFRlc3Rpbmcgc2V0VmVyc2lvbi4KIGRiLnNl
dFZlcnNpb24oInZlcnNpb24gYSIpCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVl
CkBAIC04MiwyMiArODMsNiBAQCBQQVNTIGRiLm9iamVjdFN0b3JlcyBpcyBbXQogUEFTUyBkYi5v
YmplY3RTdG9yZXMubGVuZ3RoIGlzIDAKIFBBU1MgZGIub2JqZWN0U3RvcmVzLmNvbnRhaW5zKCcn
KSBpcyBmYWxzZQogZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QxMjMiKQotUEFTUyAnb25zdWNj
ZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUK
LVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmly
ZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2
ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdl
JyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNT
IGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1Q
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCiBQQVNTIGRiLm9iamVjdFN0b3Jl
cyBpcyBbJ3Rlc3QxMjMnXQogUEFTUyBkYi5vYmplY3RTdG9yZXMubGVuZ3RoIGlzIDEKIFBBU1Mg
ZGIub2JqZWN0U3RvcmVzLmNvbnRhaW5zKCcnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MuaHRtbAppbmRleCA4NTBkMzBkYjQ2
YTFmNWRkZjFjNWYxNDdjOTU3YTViMDIxY2U3YTM4Li4yZWJjZjBiNzgyYmRlMTM5OTZiNGM4MDBh
NjkxZTk3MTQxNzYzM2IxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1iYXNpY3MuaHRtbApAQCAtNTAsNyArNTAsNyBAQCBmdW5jdGlvbiB0ZXN0U2V0
VmVyc2lvbigpCiAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lv
biBhIiknKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQub25zdWNjZXNz
ID0gc2V0VmVyc2lvbkFnYWluOwotICAgIHJlc3VsdC5vbkVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
IH0KIAogZnVuY3Rpb24gc2V0VmVyc2lvbkFnYWluKCkKQEAgLTYwLDcgKzYwLDcgQEAgZnVuY3Rp
b24gc2V0VmVyc2lvbkFnYWluKCkKICAgICByZXN1bHQgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJz
aW9uKCJ2ZXJzaW9uIGIiKScpOwogICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwogICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKLSAgICByZXN1bHQub25FcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkKQEAgLTcyLDE1
ICs3MiwxMiBAQCBmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCiAgICAgc2hvdWxkQmUoImRi
Lm9iamVjdFN0b3Jlcy5sZW5ndGgiLCAiMCIpOwogICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9y
ZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7CiAKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCdk
Yi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEyMyIpJyk7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3Vs
dCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrT2JqZWN0U3RvcmU7Ci0gICAgcmVzdWx0
Lm9uRXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsNCisgICAgY2hlY2tP
YmplY3RTdG9yZShvYmplY3RTdG9yZSk7CiB9CiAKLWZ1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUo
KQorZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZShvYmplY3RTdG9yZSkKIHsKLSAgICB2ZXJpZnlT
dWNjZXNzRXZlbnQoZXZlbnQpOwogICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZXMiLCAiWyd0
ZXN0MTIzJ10iKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVzLmxlbmd0aCIsICIxIik7
CiAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jlcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mt
ZXhwZWN0ZWQudHh0CmluZGV4IGQ4ZDZkY2M1N2JhMDJlYzJiYjBiMzg2OWI0ODIzZGJjMjgxZmM5
YTEuLjhmOTI2ZDA0YWNjN2ZkY2FjYTc4ZjJiYjNlZjQ5YmQ1ZDMwYTdkNzggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVk
LnR4dApAQCAtNDEsNDMgKzQxLDkgQEAgUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBl
dmVudC50YXJnZXQuRE9ORQogCiB0cmFucyA9IGV2ZW50LnJlc3VsdAogUEFTUyB0cmFucyAhPT0g
bnVsbCBpcyB0cnVlCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0
cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScg
aW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotU3Vj
Y2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyAn
Y29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNl
Ci1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291cmNlICE9IG51
bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFT
UyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGlu
IGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2
ZW50LnRhcmdldC5ET05FCi0KLXN0b3JlID0gZXZlbnQucmVzdWx0Ci1ldmVudC5yZXN1bHQuY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlz
IHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRl
JyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgotCi1T
dWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNT
ICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFs
c2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0g
bnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1Q
QVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMg
ZXZlbnQudGFyZ2V0LkRPTkUKLQotUEFTUyBldmVudC5yZXN1bHQgPT09IG51bGwgaXMgZmFsc2UK
LWluZGV4T2JqZWN0ID0gZXZlbnQucmVzdWx0CitzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1l
JywgJ3gnKQogUEFTUyAnbmFtZScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQogUEFTUyBpbmRleE9i
amVjdC5uYW1lIGlzICJpbmRleE5hbWUiCiBQQVNTICdzdG9yZU5hbWUnIGluIGluZGV4T2JqZWN0
IGlzIHRydWUKQEAgLTkwLDcgKzU2LDcgQEAgUEFTUyAnb3Blbk9iamVjdEN1cnNvcicgaW4gaW5k
ZXhPYmplY3QgaXMgdHJ1ZQogUEFTUyAnb3BlbkN1cnNvcicgaW4gaW5kZXhPYmplY3QgaXMgdHJ1
ZQogUEFTUyAnZ2V0T2JqZWN0JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTICdnZXQnIGlu
IGluZGV4T2JqZWN0IGlzIHRydWUKLWV2ZW50LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6
enonfSwgJ2tleScpCitzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpCiBQ
QVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdvbmVycm9yJyBpbiByZXN1
bHQgaXMgdHJ1ZQogUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKaW5kZXggM2M4YTYw
MWUzNTlhMzgwZjEzMDQyZTYxODVhNDFiOGFhMDYxNjczMC4uOGY2ZDg4NzUyNWE5YTlkNGJmNmFk
YzlhNjAyOGNjMDBiNjk5MjY2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtYmFzaWNzLmh0bWwKQEAgLTQxLDMzICs0MSwxOCBAQCBmdW5jdGlvbiBkZWxldGVF
eGlzdGluZygpCiAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwogICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIAotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYiwgY3JlYXRlT2JqZWN0U3RvcmUpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVPYmpl
Y3RTdG9yZSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZUluZGV4OwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjcmVh
dGVJbmRleCk7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUluZGV4KCkKLXsKLSAgICB2ZXJpZnlTdWNj
ZXNzRXZlbnQoZXZlbnQpOwotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZXZlbnQucmVzdWx0Iik7Ci0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJldmVudC5yZXN1bHQu
Y3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKLSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0
KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gYWRkRGF0YTsKLSAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworew0KKyAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICB3aW5k
b3cuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1l
JywgJ3gnKSIpOworICAgIGFkZERhdGEoKTsKIH0KIAogZnVuY3Rpb24gYWRkRGF0YSgpCiB7Ci0g
ICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC5y
ZXN1bHQgPT09IG51bGwiKTsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJp
bmRleE9iamVjdCA9IGV2ZW50LnJlc3VsdCIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGlu
IGluZGV4T2JqZWN0Iik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5u
YW1lIiwgImluZGV4TmFtZSIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ3N0b3JlTmFtZScgaW4gaW5k
ZXhPYmplY3QiKTsKQEAgLTgxLDcgKzY2LDcgQEAgZnVuY3Rpb24gYWRkRGF0YSgpCiAgICAgc2hv
dWxkQmVUcnVlKCInZ2V0T2JqZWN0JyBpbiBpbmRleE9iamVjdCIpOwogICAgIHNob3VsZEJlVHJ1
ZSgiJ2dldCcgaW4gaW5kZXhPYmplY3QiKTsKIAotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImV2
ZW50LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVz
dWx0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXkn
KSIpOwogICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwogICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBh
ZGRNb3JlOwogICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3ItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLWV4
cGVjdGVkLnR4dAppbmRleCA5NzI0ZmQwNjc5MzgyYjNkN2Q4ZWVmMjUyY2FhNWFhYTQ3NjQxMDUx
Li5hZWZkY2QwYTM1YTJjYjFkZGE3Njk3ZDk1OTA0M2ZhYTc3YjliM2I2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3ItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci1leHBlY3RlZC50
eHQKQEAgLTQwLDUzICs0MCw5IEBAIFBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZl
bnQudGFyZ2V0LkRPTkUKIAogdHJhbnMgPSBldmVudC5yZXN1bHQKIFBBU1MgdHJhbnMgIT09IG51
bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzb21lT2JqZWN0U3RvcmUnKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1
ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGlu
IHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nl
c3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2Nv
ZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQot
UEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxs
IGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1Mg
J29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVu
dC50YXJnZXQuRE9ORQotCi1vYmplY3RTdG9yZSA9IGV2ZW50LnJlc3VsdAogb2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0
IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0
YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgot
Ci1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1Q
QVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMg
ZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2Ug
IT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
Ci1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0
ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUg
aXMgZXZlbnQudGFyZ2V0LkRPTkUKLQotaW5kZXhPYmplY3QgPSBldmVudC5yZXN1bHQKLVN1Y2Nl
c3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2Nv
ZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQot
UEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxs
IGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1Mg
J29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVu
dC50YXJnZXQuRE9ORQotCiBvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4dFRvQWRk
XX0sIG5leHRUb0FkZCkKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1Mg
J29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWN1cnNvci5odG1sCmluZGV4IDY2YjZkYzYzMDE1YzNkNGNhNjI3YTlmMWY3
MTk3OGQ0NTg3OGM0NWIuLjVmMmNkZTY3ODRiZTRhMzM4MjcyZjZlYjliYTE5ZmIzOTE2OTYyMmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1s
CkBAIC01Myw0MSArNTMsMjEgQEAgZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQogICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CiAKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0ZU9i
amVjdFN0b3Jlcyk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlcygpCi17Ci0gICAg
cmVzdWx0ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9y
ZScpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9
IG9wZW5JbmRleDsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuSW5kZXgoKQotewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChl
dmVudCk7Ci0gICAgd2luZG93Lm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBldmVudC5yZXN1bHQiKTsKLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3Vs
dCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHN0YXJ0QWRkaW5nRGF0YTsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYiwgc3RhcnRBZGRpbmdEYXRhKTsKIH0KICAKIGZ1bmN0aW9uIHN0YXJ0QWRkaW5nRGF0
YSgpCiB7Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICB3aW5kb3cuaW5kZXhP
YmplY3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdCA9IGV2ZW50LnJlc3VsdCIpOwotCisgICAg
d2luZG93Lm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nv
bWVPYmplY3RTdG9yZScpIik7CisgICAgd2luZG93LmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykiKTsKICAgICB3aW5kb3cu
bmV4dFRvQWRkID0gMDsKICAgICBhZGREYXRhKCk7CiB9CiAKIGZ1bmN0aW9uIGFkZERhdGEoKQog
ewotICAgIC8vIFdlIGNoZWF0IHdoZW4gY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZTsgd2UncmUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIG9iamVjdFN0b3JlIHN1Y2Nlc3MgZXZlbnQuCi0gICAgdmVy
aWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICBpZiAod2luZG93Lm5leHRUb0FkZCA+IDApCisg
ICAgICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CiAKICAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0Fk
ZCkiKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0
CmluZGV4IDFkZjVhNGVhN2ZhZThiODVlNWFmMDQzYjUwMzRhZTNmNGVlY2MwOTguLjlmMjFkZTA5
MWNjYjE2YTZiZmM4ZTljMmQxYTJjMTcyNWUxYTMyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVk
LnR4dApAQCAtNDIsMjUgKzQyLDkgQEAgUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBl
dmVudC50YXJnZXQuRE9ORQogCiB0cmFucyA9IGV2ZW50LnJlc3VsdAogUEFTUyB0cmFucyAhPT0g
bnVsbCBpcyB0cnVlCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKLVBB
U1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3Vs
dCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQg
c2hvdWxkIGZpcmUgc2hvcnRseS4uLgotCi1jcmVhdGVTdWNjZXNzKCk6Ci1TdWNjZXNzIGV2ZW50
IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBl
dmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3Nv
dXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVl
Ci1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9y
JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFy
Z2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0
LkRPTkUKLQotc3RvcmUgPSBldmVudC5yZXN1bHQKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMu
CitjcmVhdE9iamVjdFN0b3JlKCk6CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnLCBudWxsKQogc3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlcwogUEFTUyBzdG9yZS5u
YW1lIGlzICJzdG9yZU5hbWUiCiBQQVNTIHN0b3JlLmtleVBhdGggaXMgbnVsbApAQCAtNjksMzQg
KzUzLDE4IEBAIFBBU1Mgc3RvcmVOYW1lcy5sZW5ndGggaXMgMQogQXNrIGZvciBhIHN0b3JlIHRo
YXQgZG9lc24ndCBleGlzdDoKIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKQogUEFTUyBpbmRl
eCBpcyBudWxsCi1GQUlMIEFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hv
dWxkIGhhdmUgdGhyb3duLgotZXZlbnQucmVzdWx0LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAn
eCcsIHRydWUpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVy
cm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRy
dWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotYWRkSW5kZXhTdWNjZXNzKCk6
Ci1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1Q
QVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMg
ZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2Ug
IT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
Ci1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0
ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUg
aXMgZXZlbnQudGFyZ2V0LkRPTkUKLQotUEFTUyBldmVudC5yZXN1bHQgIT09IG51bGwgaXMgdHJ1
ZQotUEFTUyBldmVudC5zb3VyY2UuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykgaXMg
dHJ1ZQotaW5kZXggPSBldmVudC5zb3VyY2UuaW5kZXgoJ2luZGV4TmFtZScpCitQQVNTIGluZGV4
IGlzIG51bGwKK2NyZWF0ZUluZGV4KCk6CitzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywg
J3gnLCB0cnVlKQorUEFTUyBpbmRleCAhPT0gbnVsbCBpcyB0cnVlCitQQVNTIHN0b3JlLmluZGV4
TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRydWUKK2luZGV4ID0gc3RvcmUuaW5kZXgo
J2luZGV4TmFtZScpCiBQQVNTIGluZGV4ICE9PSBudWxsIGlzIHRydWUKIEFzayBmb3IgYSBzdG9y
ZSB0aGF0IGRvZXNuJ3QgZXhpc3Q6CiBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykKIFBBU1Mg
aW5kZXggaXMgbnVsbAotRkFJTCBBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0
IHNob3VsZCBoYXZlIHRocm93bi4KLWV2ZW50LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZSd9LCAna2V5
JykKK1BBU1MgaW5kZXggaXMgbnVsbC4KK3N0b3JlLmFkZCh7eDogJ3ZhbHVlJ30sICdrZXknKQog
UEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAnb25lcnJvcicgaW4gcmVz
dWx0IGlzIHRydWUKIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1s
CmluZGV4IDliMDA5NDYzMmFkYTViMWU1YWEwZDgxNWE2NDZmNDIzZGQ1YWFjMzcuLmQ5MzBmNGJm
NjU4YzQ5N2JiN2IwNzdkNmQ0YTIxNmViZjIxMjQzOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC00MiwyMiAr
NDIsMTMgQEAgZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQogICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CiAKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGRlbGV0ZVN1Y2Nlc3MpOwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgY3JlYXRlT2JqZWN0U3RvcmUpOwogfQotCi1m
dW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICB2ZXJpZnlSZXN1bHQo
cmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY3JlYXRlU3VjY2VzczsKLSAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVh
dGVTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiY3JlYXRlU3VjY2VzcygpOiIpOwotICAgIHZlcmlm
eVN1Y2Nlc3NFdmVudChldmVudCk7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBldmVudC5yZXN1bHQiKTsKKw0KK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkKK3sNCisg
ICAgZGVidWcoImNyZWF0T2JqZWN0U3RvcmUoKToiKTsNCisgICAgdmFyIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsK
ICAgICB2YXIgc3RvcmVOYW1lcyA9IGV2YWxBbmRMb2coInN0b3JlTmFtZXMgPSBkYi5vYmplY3RT
dG9yZXMiKTsKIAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9y
ZU5hbWUiKTsKQEAgLTY4LDQwICs1OSwzNyBAQCBmdW5jdGlvbiBjcmVhdGVTdWNjZXNzKCkKIAog
ICAgIGRlYnVnKCJBc2sgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0OiIpOwogICAgIHRy
eSB7Ci0gICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNk
ZicpIik7Ci0gICAgICAgIHNob3VsZEJlTnVsbCgiaW5kZXgiKTsgLy8gUmV0dXJuaW5nIG51bGwg
aXMgd3JvbmcsIGJ1dCBsZXNzIHdyb25nIHRoYW4gcmV0dXJuaW5nIGFuIGFjdHVhbCBvYmplY3Qh
Ci0gICAgICAgIHRlc3RGYWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhp
c3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOworICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOw0KKyAgICAgICAgc2hvdWxkQmVOdWxsKCJpbmRl
eCIpOyAvLyBSZXR1cm5pbmcgbnVsbCBpcyB3cm9uZywgYnV0IGxlc3Mgd3JvbmcgdGhhbiByZXR1
cm5pbmcgYW4gYWN0dWFsIG9iamVjdCENCisgICAgICAgIHRlc3RQYXNzZWQoImluZGV4IGlzIG51
bGwiKTsKKyAgICAgICAgLy8gRklYTUU6IHRlc3RGYWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0
aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOwogICAgIH0gY2F0Y2ggKGVy
cikgewotICAgICAgICB0ZXN0UGFzc2VkKCJFcnJvciB0aHJvd24uIik7CiAgICAgICAgIC8vIEZJ
WE1FOiBWZXJpZnkgdGhlIGNvcnJlY3QgZXhjZXB0aW9uIHRocm93bi4KLSAgICB9Ci0KLSAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJldmVudC5yZXN1bHQuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScs
ICd4JywgdHJ1ZSkiKTsgLy8gdHJ1ZSA9PSB1bmlxdWUgcmVxdWlyZW1lbnQuCi0gICAgdmVyaWZ5
UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZEluZGV4U3VjY2VzczsK
LSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0NCisN
CisgICAgY3JlYXRlSW5kZXgoKTsKIH0KIAotZnVuY3Rpb24gYWRkSW5kZXhTdWNjZXNzKCkKLXsK
LSAgICBkZWJ1ZygiYWRkSW5kZXhTdWNjZXNzKCk6Iik7Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2ZW50
KGV2ZW50KTsKLSAgICBzaG91bGRCZVRydWUoImV2ZW50LnJlc3VsdCAhPT0gbnVsbCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiZXZlbnQuc291cmNlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFt
ZScpIik7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IGV2ZW50LnNvdXJjZS5pbmRl
eCgnaW5kZXhOYW1lJykiKTsKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4KCkKK3sNCisgICAgZGVidWco
ImNyZWF0ZUluZGV4KCk6Iik7DQorICAgIHdpbmRvdy5pbmRleCA9IGV2YWxBbmRMb2coInN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHRydWUpIik7IC8vIHRydWUgPT0gdW5pcXVl
IHJlcXVpcmVtZW50LgorICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKKyAgICBz
aG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Cisg
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIp
OwogICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKIAogICAgIGRlYnVnKCJBc2sg
Zm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0OiIpOwogICAgIHRyeSB7Ci0gICAgICAgIGlu
ZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpIik7Ci0gICAgICAg
IHNob3VsZEJlTnVsbCgiaW5kZXgiKTsgLy8gUmV0dXJuaW5nIG51bGwgaXMgd3JvbmcsIGJ1dCBs
ZXNzIHdyb25nIHRoYW4gcmV0dXJuaW5nIGFuIGFjdHVhbCBvYmplY3QhCi0gICAgICAgIHRlc3RG
YWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUg
dGhyb3duLiIpOworICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5k
ZXgoJ2FzZGYnKSIpOw0KKyAgICAgICAgc2hvdWxkQmVOdWxsKCJpbmRleCIpOyAvLyBSZXR1cm5p
bmcgbnVsbCBpcyB3cm9uZywgYnV0IGxlc3Mgd3JvbmcgdGhhbiByZXR1cm5pbmcgYW4gYWN0dWFs
IG9iamVjdCENCisgICAgICAgIHRlc3RQYXNzZWQoImluZGV4IGlzIG51bGwuIik7CisgICAgICAg
IC8vIEZJWE1FOiB0ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4
aXN0IHNob3VsZCBoYXZlIHRocm93bi4iKTsKICAgICB9IGNhdGNoIChlcnIpIHsKLSAgICAgICAg
dGVzdFBhc3NlZCgiRXJyb3IgdGhyb3duLiIpOwogICAgICAgICAvLyBGSVhNRTogVmVyaWZ5IHRo
ZSBjb3JyZWN0IGV4Y2VwdGlvbiB0aHJvd24uCiAgICAgfQogCi0gICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygiZXZlbnQuc291cmNlLmFkZCh7eDogJ3ZhbHVlJ30sICdrZXknKSIpOworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJ30sICdrZXknKSIpOwogICAgIHZl
cmlmeVJlc3VsdChyZXN1bHQpOwogICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOwog
ICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29y
LWV4cGVjdGVkLnR4dAppbmRleCBmMWYxM2FlMzg2M2M0YjcwYjAxOWZiOTI5ZDFhNmY3MWMzYWVh
OWQyLi5mZmU2Y2Q3MjUzNTMyNmM3Y2E4YjFhOGI5Yzk5Mjk5N2Y5NTg5NzQ3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3ItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1
cnNvci1leHBlY3RlZC50eHQKQEAgLTQwLDM1ICs0MCw4IEBAIFBBU1MgZXZlbnQudGFyZ2V0LnJl
YWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKIAogdHJhbnMgPSBldmVudC5yZXN1bHQKIFBB
U1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKQotUEFTUyAnb25zdWNjZXNzJyBp
biByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1Mg
J3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9y
dGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlz
IHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBl
dmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50
LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdy
ZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVh
ZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCi1vYmplY3RTdG9yZSA9IGV2ZW50LnJlc3Vs
dAotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQot
UEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlz
IGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291cmNl
ICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3Rh
dGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRl
IGlzIGV2ZW50LnRhcmdldC5ET05FCi0KIG9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4
dFRvQWRkXSkKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1MgJ29uZXJy
b3InIGluIHJlc3VsdCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5odG1sCmluZGV4IDcwMjA3NmY3NmU3YWJhYjk5YzMw
ZTVhM2FkOTZlZTgzOGE5NTUyY2QuLjkyYzFhN2M2NWQwZWRiZjc4ZWJkYWQ5OWViYjQ4OWJmYzZi
NWYwOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWN1cnNvci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWN1cnNvci5odG1sCkBAIC01MiwzMCArNTIsMjAgQEAgZnVuY3Rpb24gZGVsZXRlRXhp
c3RpbmcoKQogICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKICAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CiAKLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIsIG9wZW5PYmplY3RTdG9yZSk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5PYmplY3RTdG9y
ZSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nv
bWVPYmplY3RTdG9yZScpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0
Lm9uc3VjY2VzcyA9IHN0YXJ0QWRkaW5nRGF0YTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgc3RhcnRB
ZGRpbmdEYXRhKTsKIH0KICAKIGZ1bmN0aW9uIHN0YXJ0QWRkaW5nRGF0YSgpCiB7Ci0gICAgdmVy
aWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICB3aW5kb3cub2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGV2ZW50LnJlc3VsdCIpOwotCisgICAgd2luZG93Lm9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScp
Iik7CiAgICAgd2luZG93Lm5leHRUb0FkZCA9IDA7CiAgICAgYWRkRGF0YSgpOwogfQogCiBmdW5j
dGlvbiBhZGREYXRhKCkKIHsKLSAgICAvLyBXZSBjaGVhdCB3aGVuIGNhbGxlZCBmb3IgdGhlIGZp
cnN0IHRpbWU7IHdlJ3JlIGluIHRoZSBjb250ZXh0IG9mIHRoZSBvYmplY3RTdG9yZSBzdWNjZXNz
IGV2ZW50LgotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgaWYgKHdpbmRvdy5u
ZXh0VG9BZGQgPiAwKQorICAgICAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwogCiAgICAg
cmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCcnLCB0ZXN0RGF0YVtuZXh0VG9B
ZGRdKSIpOwogICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zl
b2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0CmluZGV4IGI1M2U0N2RjY2JjOTViOGVjYzg1YTA3NWYw
M2Q1YzhjNTU2OGU2NTUuLjM4NDU4YmQxN2UwNmFhNzM0Y2ZkMTdhOTljZmU4ZmExYjg2ODRhZTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJl
bW92ZW9iamVjdHN0b3JlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS1leHBlY3RlZC50eHQKQEAgLTQw
LDI0ICs0MCw5IEBAIFBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0
LkRPTkUKIAogdHJhbnMgPSBldmVudC5yZXN1bHQKIFBBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1
ZQotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCi1QQVNTICdvbnN1Y2Nl
c3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQot
UEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3VsZCBmaXJl
IHNob3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZl
bnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2Un
IGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1Mg
ZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBB
U1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdl
dC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLWV2ZW50LnJlc3VsdC5hZGQoJ3Zh
bHVlJywgJ2tleScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKK3N0b3JlLmFkZCgndmFsdWUnLCAna2V5
JykKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1MgJ29uZXJyb3InIGlu
IHJlc3VsdCBpcyB0cnVlCiBQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQpAQCAt
OTUsMjIgKzgwLDYgQEAgUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJn
ZXQuRE9ORQogCiBQQVNTIGV2ZW50LnJlc3VsdCBpcyAidmFsdWUiCiBldmVudC5zb3VyY2UuY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMg
dHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUn
IGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1
Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1Mg
J2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxz
ZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBu
dWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBB
U1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBp
biBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBl
dmVudC50YXJnZXQuRE9ORQotCiBQQVNTIGV2ZW50LnNvdXJjZS5pbmRleE5hbWVzLmNvbnRhaW5z
KCdpbmRleE5hbWUnKSBpcyB0cnVlCiBkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCiBQQVNT
ICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCkBAIC0xMzIsMzkgKzEwMSw3IEBAIFBBU1Mg
ZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKIHRyYW5zID0gZXZl
bnQucmVzdWx0CiBQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKIGRiLnJlbW92ZU9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFT
UyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3Vs
dCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZl
bnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGlu
IGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAn
c291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRy
dWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJy
b3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJn
ZXQuRE9ORQotCiBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKLVBBU1Mg
J29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBp
cyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hv
dWxkIGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0
JyBpbiBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAn
bWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1
ZQotUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGlu
IGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMg
dHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZl
bnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKLQogZGIudHJhbnNhY3Rp
b24oKQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKIHN0b3Jl
LmdldCgna2V5JykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCmluZGV4IDkzZGNiZjZk
OWQ3YTVkZDEzYTIxZjgxYjNiYmQyY2JkYjNiNTBjODMuLjM4NzdiMWU0ZDc4ZDQyNTk5YTU4YTU3
ZDU0OTIxN2VmODgyOWQxOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbApAQCAt
MzksMjIgKzM5LDEzIEBAIGZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKICAgICB3aW5kb3cudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnJlc3VsdCIpOwogICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKIAotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgY3Jl
YXRlT2JqZWN0U3RvcmUpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgY3JlYXRlT2Jq
ZWN0U3RvcmVBbmRBZGRWYWx1ZSk7CiB9CiAKLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkK
K2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlQW5kQWRkVmFsdWUoKQogewotICAgIHJlc3VsdCA9
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwot
ICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBhZGRWYWx1
ZTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBhZGRWYWx1ZSgpCi17Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLQot
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImV2ZW50LnJlc3VsdC5hZGQoJ3ZhbHVlJywgJ2tleScp
Iik7CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9y
ZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CiAgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IGdldFZhbHVlOwogICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CkBAIC03OSwxNSArNzAsNyBAQCBmdW5jdGlvbiBhZGRJbmRleCgp
CiAgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnJlc3VsdCIsICJ2YWx1ZSIpOwogCi0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
ZXZlbnQuc291cmNlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKLSAgICB2ZXJpZnlS
ZXN1bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY29tbWl0VHJhbnNhY3Rpb247
Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gY29tbWl0VHJhbnNhY3Rpb24oKQotewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVu
dCk7CisgICAgd2luZG93LmluZGV4ID0gZXZhbEFuZExvZygiZXZlbnQuc291cmNlLmNyZWF0ZUlu
ZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKICAgICBzaG91bGRCZVRydWUoImV2ZW50LnNvdXJjZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOwogICAgIC8vIExldCB0aGUgdHJhbnNh
Y3Rpb24gY29tbWl0LgogICAgIHdpbmRvdy5zZXRUaW1lb3V0KCdzZWNvbmRTZXRWZXJzaW9uKCkn
LCAwKTsKQEAgLTEwOCwyNiArOTEsMTggQEAgZnVuY3Rpb24gcmVtb3ZlT2JqZWN0U3RvcmUoKQog
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKICAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CiAKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5y
ZW1vdmVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0
KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmVBZ2FpbjsKLSAgICBy
ZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2YWxBbmRMb2co
ImRiLnJlbW92ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOw0KKyAgICBjcmVhdGVPYmplY3RT
dG9yZUFnYWluKCk7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKQogewot
ICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICB2ZXJpZnlS
ZXN1bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0VmFsdWVBZ2FpbjsKLSAg
ICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIGdldFZh
bHVlQWdhaW4oKTsKIH0KIAogZnVuY3Rpb24gZ2V0VmFsdWVBZ2FpbigpCiB7Ci0gICAgdmVyaWZ5
U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLQogICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIu
dHJhbnNhY3Rpb24oKSIpOwogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKICAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0CmluZGV4IDQ4YTY4OWYw
ODFiZmM4Y2YyZDQyNzJmYjQxOWVkZTE4OGYzZjYzMTIuLjBlNTViZTc3M2VkYWFmZjM3NmEwMzQ1
NTc4MDlkYTgyNzQ3NWY1N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQKQEAgLTQxLDI0ICs0MSw4IEBAIFBBU1Mg
ZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKIAogdHJhbnMgPSBl
dmVudC5yZXN1bHQKIFBBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQotZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3Rlc3QnKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAn
b25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBp
cyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQg
ZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2
ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291
cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUK
LVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3In
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQu
RE9ORQotCi1vYmplY3RTdG9yZSA9IGV2ZW50LnJlc3VsdAorRGVsZXRlZCBhbGwgb2JqZWN0IHN0
b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKQogb2JqZWN0
U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0
IGlzIHRydWUKIFBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCkBAIC02Niw3ICs1MCw3
IEBAIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCiBBbiBldmVudCBzaG91bGQg
ZmlyZSBzaG9ydGx5Li4uCiAKIE9wZW5pbmcgY3Vyc29yCi1vYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KGtleVJhbmdlKQorZXZlbnQuc291cmNlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpCiBQQVNTICdvbnN1
Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1
ZQogUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCmluZGV4IDQ3YzdlODk3MTQ0NzUwZjQ2
ZjJiNzlhOWY3NTIxMjI5MGE2YjNkMmIuLmQ0YTkwNjg2MDczMjJjNGUxMTQwMDAxZTMxMTQ1Mjcw
NWJhMzE1NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJz
b3IuaHRtbApAQCAtNDgsMzUgKzQ4LDIxIEBAIGZ1bmN0aW9uIG9wZW5DdXJzb3IoKQogewogICAg
IGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOwogICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubGVm
dEJvdW5kKCJteUtleSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZXZlbnQuc291
cmNlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CiAg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9wdWxhdGVPYmplY3RT
dG9yZShvYmplY3RTdG9yZSkKLXsKK30NCisNCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkgCit7DQorICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwogICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZScsICdteUtleScpIik7CiAgICAgdmVy
aWZ5UmVzdWx0KHJlc3VsdCk7CiAgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7CiAg
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKIH0KIAotZnVuY3Rp
b24gY3JlYXRlT2JqZWN0U3RvcmVTdWNjZXNzKCkKLXsKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQo
ZXZlbnQpOwotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZXZlbnQucmVzdWx0Iik7Ci0gICAgcG9wdWxhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZSk7Ci19
Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0
KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmVTdWNjZXNzOwotICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KIGZ1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkKIHsKICAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToi
KTsKQEAgLTg1LDcgKzcxLDcgQEAgZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQogICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CiAKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGRlbGV0
ZVN1Y2Nlc3MpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgY3JlYXRlQW5kUG9wdWxh
dGVPYmplY3RTdG9yZSk7CiB9CiAKIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IGVhNGE1
MjU5NThjMzNhNzdjMTQ5YjdmMmQ0ZjA2NzM0MzE2ZDA4MzguLjYwY2U5NGYwNzc2OWRmODc3MjVh
ZGQ5NTZlNzUwNDFlM2RkZDc4NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwpAQCAtNzMsMTUgKzczLDEyIEBAIGZ1bmN0aW9uIHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrKCkKICAgICBkb25lKCk7CiB9CiAKKy8vIEZJWE1FOiByZW1v
dmUgdGhlIG9uZmluaXNoZWQgcGFyYW1ldGVyLgogZnVuY3Rpb24gZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiLCBvbmZpbmlzaGVkKQotewotICAgIG9iamVjdFN0b3JlcyA9IGRiLm9iamVjdFN0b3Jl
czsKLSAgICBpZiAoIW9iamVjdFN0b3Jlcy5sZW5ndGgpIHsKLSAgICAgICAgb25maW5pc2hlZCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIHJlcXVlc3QgPSBkYi5yZW1vdmVP
YmplY3RTdG9yZShvYmplY3RTdG9yZXNbMF0pOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgb25maW5pc2hlZCk7IH07Cit7DQorICAgIGZvciAo
aSA9IDA7IGkgPCBkYi5vYmplY3RTdG9yZXMubGVuZ3RoOyArK2kpDQorICAgICAgICBkYi5yZW1v
dmVPYmplY3RTdG9yZShkYi5vYmplY3RTdG9yZXMuaXRlbShpKSk7DQorDQorICAgIGRlYnVnKCJE
ZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLiIpOw0KKyAgICBvbmZpbmlzaGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBmY2U1OTNiNTllMGMzNWM2Zjk2ODFjNzU1YjQ4N2Fm
YmU0ZjAyMThmLi44MDJhZTg3ZmZjNDhhN2M0MzUyOGQyMWM5MDVlMmQ5OTY5YzhkOTFlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3Mt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTQ0LDIzICs0NCw4IEBAIFBBU1MgZXZlbnQudGFy
Z2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKIAogdHJhbnMgPSBldmVudC5yZXN1
bHQKIFBBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jl
cy4KIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQotUEFTUyAnb25zdWNj
ZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUK
LVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmly
ZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2
ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdl
JyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNT
IGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1Q
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCiBkYi50cmFuc2FjdGlvbigpCiBz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQogUEFTUyBzdG9yZS5u
YW1lIGlzICJzdG9yZU5hbWUiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCmluZGV4IDhmYjY0OTM2NjA0OGEwOGQ1ZWM3YWVh
MzdhZTBiNzA0YTNlMTBlNDIuLjM2MGQ4MDcxMjRkZjA3YTQ1YjU3NGQ3NmQ4NjI0NDVhZDkwZDE5
NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWJhc2ljcy5odG1sCkBAIC00NSwyMCArNDUsMTIgQEAgZnVuY3Rpb24gc2V0VmVyc2lvblN1
Y2Nlc3MoKQogICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKICAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CiAKLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIsIGZpbmlzaGVkRGVsZXRpbmcpOwotfQotCi1mdW5jdGlvbiBmaW5pc2hlZERlbGV0
aW5nKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKLSAgICByZXN1
bHQub25zdWNjZXNzID0gY3JlYXRlU3VjY2VzczsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVTdWNjZXNzKCkKLXsKLSAg
ICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
YiwgY3JlYXRlT2JqZWN0U3RvcmVBbmRTdGFydFRyYW5zYWN0aW9uKTsKK30NCisNCitmdW5jdGlv
biBjcmVhdGVPYmplY3RTdG9yZUFuZFN0YXJ0VHJhbnNhY3Rpb24oKQ0KK3sNCisgICAgZXZhbEFu
ZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CiAgICAgdHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbigpIik7CiAgICAgdHJhbnNhY3Rp
b24ub25hYm9ydCA9IGFib3J0Q2FsbGJhY2s7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQzNzg5YzZj
OGZiYjE3OGQzZGU2NjdhNmU4NzFhNDNhMThlNTQ5OS4uZDQxZmMzNjZlZjk5YWVhMWI0YjljODAw
ZWFmZGRmMGJlM2E2Njc2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMC0xMC0wNCAgQW5kcmVpIFBvcGVz
Y3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlL3JlbW92ZU9i
amVjdFN0b3JlIGFuZCBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgvcmVtb3ZlSW5kZXggc2hv
dWxkIGJlIHN5bmNocm9ub3VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY4ODMKKworICAgICAgICBNYWtlcyB0aGUgc2NoZW1hIG1hbmlwdWxhdGlv
biBtZXRob2RzIHN5bmNocm9ub3VzLiBNb2RpZmllcyB0aGUgdHJhbnNhY3Rpb24KKyAgICAgICAg
bG9naWMgdG8gc3VwcG9ydCB0YXNrcyB0aGF0IG1heSBoYXZlIHBlbmRpbmcgZXZlbnRzIGFzIHdl
bGwgYXMgdGFza3MgdGhhdAorICAgICAgICBkb24ndCBoYXZlIHN1Y2ggZXZlbnRzLgorCisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OnJlbW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmVJbnRl
cm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogc3RvcmFnZS9J
REJJbmRleEJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6aWQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6c2V0SWQpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpyZW1vdmVJbmRleCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3Zl
SW5kZXhJbnRlcm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6YXV0b0luY3JlbWVudCk6
CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpvYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpz
Y2hlZHVsZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
ZGlkQ29tcGxldGVUYXNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjp0YXNrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjp0YXNrRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaDoKKwogMjAxMC0xMC0wNCAgSHVhaHVpIFd1ICA8bWVk
aWFkZXBlbmRlbnRAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBiL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggNGQzMjIxMzhmN2IxNTMwZGVkMGMzODQ4NGRk
Y2RmNWFmZWQ4YTVhZi4uMDQ2ZTlhOWRjOGJlZGZjNTljZTljNTVlYzA4ODAzMDJmYzc2MzE4OSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC01NSwyNiArNTUsMTggQEAgdm9pZCBJREJEYXRh
YmFzZTo6c2V0U2V0VmVyc2lvblRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnMKICAgICBtX3NldFZlcnNpb25UcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOwog
fQogCi0vLyBGSVhNRTogU2hvdWxkIGJlIHN5bmNocm9ub3VzLgotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgYXV0b0luY3JlbWVudCkKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBt
X3NldFZlcnNpb25UcmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgaWYgKCFtX3NldFZlcnNpb25UcmFu
c2FjdGlvbikKLSAgICAgICAgcmVxdWVzdC0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUiwgImNyZWF0ZU9iamVjdFN0
b3JlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbi4i
KSk7Ci0gICAgZWxzZQotICAgICAgICBtX2JhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUs
IGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHJlcXVlc3QsIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9u
LmdldCgpKTsKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICAvLyBGSVhNRTogUmFpc2UgYSBOT1Rf
QUxMT1dFRF9FUlIgaWYgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24gaXMgMC4KKyAgICBSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fYmFja2VuZC0+
Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbV9zZXRWZXJz
aW9uVHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIGlmICghb2JqZWN0U3RvcmUpCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG9iamVjdFN0b3JlLnJl
bGVhc2UoKSwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24uZ2V0KCkpOwogfQogCi0vLyBGSVhNRTog
U2hvdWxkIGJlIHN5bmNocm9ub3VzLgotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFz
ZTo6cmVtb3ZlT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lKQordm9pZCBJREJEYXRhYmFzZTo6cmVtb3ZlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lKQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3NldFZlcnNp
b25UcmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgaWYgKCFtX3NldFZlcnNpb25UcmFuc2FjdGlvbikK
LSAgICAgICAgcmVxdWVzdC0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUiwgInJlbW92ZU9iamVjdFN0b3JlIG11c3Qg
YmUgY2FsbGVkIGZyb20gd2l0aGluIGEgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbi4iKSk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2JhY2tlbmQtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsIHJlcXVlc3Qs
IG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAg
ICBtX2JhY2tlbmQtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsIG1fc2V0VmVyc2lvblRyYW5zYWN0
aW9uLmdldCgpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0
VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZl
cnNpb24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBiL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCmluZGV4IGNmOTUzMTdhN2Y0M2VhMDJhYmIxYTRhNWFh
YjZmYjFiNWEwY2ViYzEuLjQzODM3ZDk3YjdmZTVkMzdmZjlmMDU5YzIzYmM3N2VjMjVhZDVjNTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dmVyc2lvbigpOyB9CiAgICAg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmQtPm9iamVjdFN0b3JlcygpOyB9CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGNyZWF0ZU9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCA9IFN0cmluZygpLCBib29sIGF1dG9JbmNyZW1l
bnQgPSBmYWxzZSk7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiByZW1vdmVPYmplY3RTdG9y
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCA9IFN0cmluZygpLCBib29sIGF1dG9JbmNyZW1lbnQg
PSBmYWxzZSk7CisgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUp
OwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gc2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiB0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRE9NU3RyaW5nTGlz
dCogc3RvcmVOYW1lcyA9IDAsIHVuc2lnbmVkIHNob3J0IG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6
UkVBRF9PTkxZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgdGltZW91dCA9IDApOyAvLyBGSVhNRTogd2hhdCBzaG91bGQgdGhlIGRlZmF1
bHQgdGltZW91dCBiZT8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5p
ZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCmluZGV4IDMwY2RmMzAzZTU1ZTc5
ZTJhMGMwY2U5YTFiNTg5ZTBkYTQ2NzE0NjUuLjNmNTc0MzdmMjg5ZGNiZWI5MDBlN2I5ZDIwNDRl
OGNmMDkyNzhkNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApAQCAtMzIsOCArMzIsOCBAQCBt
b2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVy
c2lvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3Qgb2JqZWN0U3Rv
cmVzOwogCi0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1
ZXN0IGNyZWF0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBi
b29sZWFuIGF1dG9JbmNyZW1lbnQpOwotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCUmVxdWVzdCByZW1vdmVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSk7
CisgICAgICAgIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBu
YW1lLCBpbiBbT3B0aW9uYWwsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5
UGF0aCwgaW4gW09wdGlvbmFsXSBib29sZWFuIGF1dG9JbmNyZW1lbnQpOworICAgICAgICB2b2lk
IHJlbW92ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lKTsKICAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJp
bmcgdmVyc2lvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJ
REJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiAoaW4gW09wdGlvbmFsXSBET01TdHJpbmdMaXN0IHN0
b3JlTmFtZXMsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgbW9kZSwgaW4gW09wdGlvbmFs
XSB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogICAgICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggNDUzZjg1ZDE5ODBjNWQx
OGQ4ODc5Nzk1YzI5NWZiMjgwMzg4N2I2ZC4uNjc2NDRiMTE0OGQ2MzRkNjY2MzA0YTQyNGRkYmMz
MDNkZGNmNTlmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cApAQCAtMTI3LDM1ICsxMjcsMzggQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZXMoKSBjb25zdAogICAgIHJldHVybiBvYmplY3RT
dG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQorUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+ICBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uKQogeworICAgIGlmIChtX29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1l
KSkgeworICAgICAgICAvLyBGSVhNRTogVGhyb3cgQ09OU1RSQUlOVF9FUlIgaW4gdGhpcyBjYXNl
LgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVh
dGUodGhpcywgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgQVNTRVJUKG9iamVj
dFN0b3JlLT5uYW1lKCkgPT0gbmFtZSk7CisgICAgbV9vYmplY3RTdG9yZXMuc2V0KG5hbWUsIG9i
amVjdFN0b3JlKTsKKwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFz
ZSA9IHRoaXM7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rh
c2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwsIGRh
dGFiYXNlLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBjYWxsYmFja3MpKSkKLSAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSLCAiY3JlYXRlT2JqZWN0U3RvcmUgbXVzdCBiZSBj
YWxsZWQgZnJvbSB3aXRoaW4gYSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uLiIpKTsKKyAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9IHRyYW5z
YWN0aW9uOworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWws
IGRhdGFiYXNlLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb25QdHIpKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQogCi12b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2Us
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsICBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCiB7Ci0gICAg
aWYgKGRhdGFiYXNlLT5tX29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIkFuIG9iamVjdFN0b3JlIHdpdGggdGhhdCBuYW1lIGFs
cmVhZHkgZXhpc3RzLiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFNRTGl0ZVN0
YXRlbWVudCBpbnNlcnQoZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksICJJTlNFUlQgSU5UTyBP
YmplY3RTdG9yZXMgKG5hbWUsIGtleVBhdGgsIGRvQXV0b0luY3JlbWVudCkgVkFMVUVTICg/LCA/
LCA/KSIpOwogICAgIGJvb2wgb2sgPSBpbnNlcnQucHJlcGFyZSgpID09IFNRTFJlc3VsdE9rOwog
ICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklYTUU6IEJldHRlciBlcnJvciBoYW5kbGlu
Zy4KLSAgICBpbnNlcnQuYmluZFRleHQoMSwgbmFtZSk7Ci0gICAgaW5zZXJ0LmJpbmRUZXh0KDIs
IGtleVBhdGgpOwotICAgIGluc2VydC5iaW5kSW50KDMsIHN0YXRpY19jYXN0PGludD4oYXV0b0lu
Y3JlbWVudCkpOworICAgIGluc2VydC5iaW5kVGV4dCgxLCBvYmplY3RTdG9yZS0+bmFtZSgpKTsK
KyAgICBpbnNlcnQuYmluZFRleHQoMiwgb2JqZWN0U3RvcmUtPmtleVBhdGgoKSk7CisgICAgaW5z
ZXJ0LmJpbmRJbnQoMywgc3RhdGljX2Nhc3Q8aW50PihvYmplY3RTdG9yZS0+YXV0b0luY3JlbWVu
dCgpKSk7CiAgICAgb2sgPSBpbnNlcnQuc3RlcCgpID09IFNRTFJlc3VsdERvbmU7CiAgICAgQVNT
RVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgogICAg
IGludDY0X3QgaWQgPSBkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0SW5zZXJ0Um93SUQo
KTsKLQotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZShkYXRhYmFzZS5nZXQoKSwgaWQsIG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOwotICAgIEFTU0VSVChvYmplY3RTdG9yZS0+bmFt
ZSgpID09IG5hbWUpOwotICAgIGRhdGFiYXNlLT5tX29iamVjdFN0b3Jlcy5zZXQobmFtZSwgb2Jq
ZWN0U3RvcmUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKG9iamVjdFN0b3JlLmdldCgpKTsK
KyAgICBvYmplY3RTdG9yZS0+c2V0SWQoaWQpOworICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0
ZVRhc2tFdmVudHMoKTsKIH0KIAogLy8gRklYTUU6IERvIG5vdCBleHBvc2UgdGhpcyBtZXRob2Qg
dmlhIElETC4KQEAgLTE3NiwyOSArMTc5LDI4IEBAIHN0YXRpYyB2b2lkIGRvRGVsZXRlKFNRTGl0
ZURhdGFiYXNlJiBkYiwgY29uc3QgY2hhciogc3FsLCBpbnQ2NF90IGlkKQogICAgIEFTU0VSVF9V
TlVTRUQob2ssIG9rKTsgLy8gRklYTUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KIH0KIAotdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCi17Ci0gICAgUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhpczsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3Zl
T2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2UsIG5hbWUsIGNhbGxiYWNrcykpKQotICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlIsICJyZW1vdmVPYmplY3RTdG9yZSBtdXN0IGJlIGNh
bGxlZCBmcm9tIHdpdGhpbiBhIHNldFZlcnNpb24gdHJhbnNhY3Rpb24uIikpOwotfQotCi12b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uKQogewotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9y
ZSA9IGRhdGFiYXNlLT5tX29iamVjdFN0b3Jlcy5nZXQobmFtZSk7CisgICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXMuZ2V0KG5h
bWUpOwogICAgIGlmICghb2JqZWN0U3RvcmUpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5E
X0VSUiwgIk5vIG9iamVjdFN0b3JlIHdpdGggdGhhdCBuYW1lIGV4aXN0cy4iKSk7CisgICAgICAg
IC8vIEZJWE1FOiBSYWlzZSBOT1RfRk9VTkRfRVJSLgogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIG1fb2JqZWN0U3RvcmVzLnJlbW92ZShuYW1lKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uUHRyID0gdHJhbnNhY3Rpb247CisgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlSW50ZXJuYWwsIGRhdGFiYXNlLCBvYmplY3RTdG9yZSwg
dHJhbnNhY3Rpb25QdHIpKTsKKyAgICAvLyBGSVhNRTogUmFpc2UgTk9UX0FMTE9XRURfRVJSIGlm
IHRoZSBhYm92ZSBmYWlscy4gICAgCit9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cmVtb3ZlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQorewogICAgIGRvRGVsZXRlKGRhdGFiYXNl
LT5zcWxpdGVEYXRhYmFzZSgpLCAiREVMRVRFIEZST00gT2JqZWN0U3RvcmVzIFdIRVJFIGlkID0g
PyIsIG9iamVjdFN0b3JlLT5pZCgpKTsKICAgICBkb0RlbGV0ZShkYXRhYmFzZS0+c3FsaXRlRGF0
YWJhc2UoKSwgIkRFTEVURSBGUk9NIE9iamVjdFN0b3JlRGF0YSBXSEVSRSBvYmplY3RTdG9yZUlk
ID0gPyIsIG9iamVjdFN0b3JlLT5pZCgpKTsKICAgICBkb0RlbGV0ZShkYXRhYmFzZS0+c3FsaXRl
RGF0YWJhc2UoKSwgIkRFTEVURSBGUk9NIEluZGV4RGF0YSBXSEVSRSBpbmRleElkIElOIChTRUxF
Q1QgaWQgRlJPTSBJbmRleGVzIFdIRVJFIG9iamVjdFN0b3JlSWQgPSA/KSIsIG9iamVjdFN0b3Jl
LT5pZCgpKTsKICAgICBkb0RlbGV0ZShkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgIkRFTEVU
RSBGUk9NIEluZGV4ZXMgV0hFUkUgb2JqZWN0U3RvcmVJZCA9ID8iLCBvYmplY3RTdG9yZS0+aWQo
KSk7CiAKLSAgICBkYXRhYmFzZS0+bV9vYmplY3RTdG9yZXMucmVtb3ZlKG5hbWUpOwotICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKCk7CisgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2
ZW50cygpOwogfQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggYjU3NmZhNWI4
OGIxOGQzYmM5NzdjZjUxY2E2N2RhZThmZWUwMzYyOS4uMGNiNDgzZGVlZTRmNDgzYzhjNDc1ODZl
M2Q4YTcwMTZmNDc1Y2UzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oCkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1
bnNpZ25lZCBzaG9ydCBtb2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZSgpOwpAQCAtNjksOCArNjksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBs
b2FkT2JqZWN0U3RvcmVzKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUlu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHN0YXRpYyB2
b2lkIHJlbW92ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RTdG9y
ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7
CiAgICAgc3RhdGljIHZvaWQgc2V0VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+KTsKIAogICAgIE93blB0cjxTUUxpdGVEYXRhYmFzZT4gbV9zcWxp
dGVEYXRhYmFzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaAppbmRleCBjMDFkYWRmZWNkZWY2NjIwNzY5ZDlkOGU0NjkyN2NjMWE4YjU5ODA1Li40YTVi
YjQxY2IxNDQ2YmQ2Mjk2NWFjNGE4YmI0MTBmYzZlNDZjZTdiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw5ICs1NCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdCA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikg
PSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCAxOGUy
NGIyMDlkYzcwYmRiZDRkMTVkZmZiNjFkMjE1NWI0ZWMwZDU3Li43NDJjMjhlZWQyMGMzOGM3OWNj
NzY4ZDU3M2IyNGU3YTdlMjk1NzcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZElt
cGwuY3BwCkBAIC01MCw2ICs1MCwxNSBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJh
Y2tlbmRJbXBsKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlLAogewogfQog
CitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwqIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgOiBtX29iamVjdFN0b3JlKG9iamVjdFN0b3Jl
KQorICAgICwgbV9pZChJbnZhbGlkSWQpCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fa2V5
UGF0aChrZXlQYXRoKQorICAgICwgbV91bmlxdWUodW5pcXVlKQoreworfQorCiBJREJJbmRleEJh
Y2tlbmRJbXBsOjp+SURCSW5kZXhCYWNrZW5kSW1wbCgpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQklu
ZGV4QmFja2VuZEltcGwuaAppbmRleCAyZDA2YzY5N2VjOThhOGUxOGU3ZWZlZjlhOWE3ZDE4YTQ4
OTQ0NjI0Li5jYTg3MTQ4MmE4NjRjMThhMjkzYTk3OTI0ZGRjNjY1Y2I2MmVlNmQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgKQEAgLTQzLDkgKzQzLDE5IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChv
YmplY3RTdG9yZSwgaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSkpOwogICAgIH0KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCSW5kZXhCYWNrZW5kSW1wbChvYmplY3RTdG9yZSwgbmFtZSwga2V5UGF0aCwgdW5pcXVl
KSk7CisgICAgfQogICAgIHZpcnR1YWwgfklEQkluZGV4QmFja2VuZEltcGwoKTsKIAotICAgIGlu
dDY0X3QgaWQoKSB7IHJldHVybiBtX2lkOyB9CisgICAgaW50NjRfdCBpZCgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV9pZCAhPSBJbnZhbGlkSWQpOworICAgICAgICByZXR1cm4gbV9p
ZDsKKyAgICB9CisgICAgdm9pZCBzZXRJZChpbnQ2NF90IGlkKSB7IG1faWQgPSBpZDsgfQorCiAg
ICAgYm9vbCBhZGRpbmdLZXlBbGxvd2VkKElEQktleSopOwogCiAgICAgLy8gSW1wbGVtZW50cyBJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2UuCkBAIC02MywxMiArNzMsMTUgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSk7CisgICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgdW5pcXVlKTsKIAogICAgIFNRTGl0ZURhdGFiYXNlJiBzcWxpdGVEYXRhYmFzZSgpIGNvbnN0
OwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIG9iamVjdEN1cnNvciwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIGdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktl
eT4sIGJvb2wgZ2V0T2JqZWN0LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCisgICAgc3Rh
dGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKKwogICAgIFJlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiBtX29iamVjdFN0b3JlOwogCiAgICAgaW50NjRfdCBtX2lkOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYTgxZTE3ZmZmNjFmODIyZjkzNTFlNTE4NjMw
OWU1ZWJjZTA0Y2NhMC4uYzQ4MTA5OTczMzk4NDEwMjQxNmMyZmQzM2UwODJiMjdhYTdiZDcyOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC05MiwxMSArOTIsMTIgQEAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cmVtb3ZlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlKQorUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVu
aXF1ZSkKIHsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7
Ci0gICAgbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBy
ZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICBS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNy
ZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Cisg
ICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQkluZGV4Ojpj
cmVhdGUoaW5kZXgucmVsZWFzZSgpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkK
QEAgLTEwOCwxMSArMTA5LDkgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6
OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gSURCSW5kZXg6OmNyZWF0ZShp
bmRleC5yZWxlYXNlKCksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIElEQk9iamVjdFN0b3JlOjpy
ZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+
IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhp
cyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fb2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4
KG5hbWUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJldHVybiByZXF1ZXN0
OworICAgIG1fb2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZS5oCmluZGV4IGRmNWIzZjc1MGI5ZDYyNjhjZjcyMDliNzI5MTg1ODI2OTlkYTRmYjIuLmExNzNi
NjhhNTdlYTcyYTAzNDZlNTgzZDk2ZjBjMWFhMzNjNGE0OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZS5oCkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IHB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5ID0gMCk7CiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiByZW1vdmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXkpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGVJbmRl
eChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlID0gZmFsc2UpOworICAgIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSA9IGZhbHNlKTsKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcmVtb3ZlSW5k
ZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9p
ZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiA9IDAsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVY
VCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IGM4YWEzNWQyODBjMDcyZDZi
MWFlMTNiY2FlMTI4ZjBiYzA1ODQ5YWMuLmVmM2FhZDg1YWFmODY4OWMzYzljM2E3N2E2NDRlYWRj
ZTkyNTljNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbApAQCAtMzcsOSArMzcsMTIg
QEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gSURCUmVxdWVzdCBhZGQoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVlLCBpbiBb
T3B0aW9uYWxdIElEQktleSBrZXkpOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCUmVxdWVzdCBwdXQoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVlLCBp
biBbT3B0aW9uYWxdIElEQktleSBrZXkpOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gSURCUmVxdWVzdCByZW1vdmUoaW4gSURCS2V5IGtleSk7Ci0gICAgICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNyZWF0ZUluZGV4KGlu
IERPTVN0cmluZyBuYW1lLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBr
ZXlQYXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdW5pcXVlKTsKKyAgICAgICAgLy8gRklYTUU6
IHdyaXRlIG9wZW5DdXJzb3IKKyAgICAgICAgSURCSW5kZXggY3JlYXRlSW5kZXgoaW4gRE9NU3Ry
aW5nIG5hbWUsIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVBhdGgs
IGluIFtPcHRpb25hbF0gYm9vbGVhbiB1bmlxdWUpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBu
ZWVkcyB0byByYWlzZSBhbiBJREJEYXRhYmFzZUV4Y2VwdGlvbiBvbiBlcnJvcnMuCiAgICAgICAg
IElEQkluZGV4IGluZGV4KGluIERPTVN0cmluZyBuYW1lKTsKLSAgICAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgcmVtb3ZlSW5kZXgoaW4gRE9NU3RyaW5n
IG5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZUluZGV4KGluIERPTVN0cmluZyBuYW1lKTsKKwog
ICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVu
Q3Vyc29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25hbF0gdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDUwYTJkZWMyN2NlOTczNWQyMzA4Y2U2
YmY2M2EyZjc4NTkyNGU4N2YuLmNmZDhhOTVmZGZjNmY1NTNiNmY3MjFiMmFiNjNjYzUyMDQ0YzQ5
OTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAK
QEAgLTYyLDYgKzYyLDE1IEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0CiAgICAgbG9hZEluZGV4
ZXMoKTsKIH0KIAorSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICA6IG1f
ZGF0YWJhc2UoZGF0YWJhc2UpCisgICAgLCBtX2lkKEludmFsaWRJZCkKKyAgICAsIG1fbmFtZShu
YW1lKQorICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCisgICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0
b0luY3JlbWVudCkKK3sKK30KKwogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwpAQCAtMjU0LDM2
ICsyNjMsMzkgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlAKICAgICBjYWxsYmFja3MtPm9uU3Vj
Y2VzcygpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCiB7CisgICAgaWYgKG1faW5kZXhlcy5j
b250YWlucyhuYW1lKSkgeworICAgICAgICAvLyBGSVhNRTogUmFpc2UgQ09OU1RSQUlOVF9FUlIu
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBuYW1lLCBrZXlQ
YXRoLCB1bmlxdWUpOworICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOworICAgIG1f
aW5kZXhlcy5zZXQobmFtZSwgaW5kZXgpOworCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXhJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgY2FsbGJh
Y2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUiwgImNyZWF0ZUluZGV4IG11
c3QgYmUgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIGEgdHJhbnNhY3Rpb24uIikpOworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uUHRyID0gdHJh
bnNhY3Rpb247CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbCwg
b2JqZWN0U3RvcmUsIGluZGV4LCB0cmFuc2FjdGlvbikpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpjcmVhdGVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb24pCiB7Ci0gICAgaWYgKG9iamVjdFN0b3JlLT5tX2luZGV4ZXMu
Y29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJJbmRl
eCBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IFNRTGl0ZVN0YXRlbWVudCBpbnNlcnQob2JqZWN0U3RvcmUtPnNxbGl0ZURhdGFiYXNlKCksICJJ
TlNFUlQgSU5UTyBJbmRleGVzIChvYmplY3RTdG9yZUlkLCBuYW1lLCBrZXlQYXRoLCBpc1VuaXF1
ZSkgVkFMVUVTICg/LCA/LCA/LCA/KSIpOwogICAgIGJvb2wgb2sgPSBpbnNlcnQucHJlcGFyZSgp
ID09IFNRTFJlc3VsdE9rOwogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklYTUU6IEJl
dHRlciBlcnJvciBoYW5kbGluZy4KICAgICBpbnNlcnQuYmluZEludDY0KDEsIG9iamVjdFN0b3Jl
LT5tX2lkKTsKLSAgICBpbnNlcnQuYmluZFRleHQoMiwgbmFtZSk7Ci0gICAgaW5zZXJ0LmJpbmRU
ZXh0KDMsIGtleVBhdGgpOwotICAgIGluc2VydC5iaW5kSW50KDQsIHN0YXRpY19jYXN0PGludD4o
dW5pcXVlKSk7CisgICAgaW5zZXJ0LmJpbmRUZXh0KDIsIGluZGV4LT5uYW1lKCkpOworICAgIGlu
c2VydC5iaW5kVGV4dCgzLCBpbmRleC0+a2V5UGF0aCgpKTsKKyAgICBpbnNlcnQuYmluZEludCg0
LCBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4LT51bmlxdWUoKSkpOwogICAgIG9rID0gaW5zZXJ0LnN0
ZXAoKSA9PSBTUUxSZXN1bHREb25lOwogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklY
TUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KICAgICBpbnQ2NF90IGlkID0gb2JqZWN0U3RvcmUt
PnNxbGl0ZURhdGFiYXNlKCkubGFzdEluc2VydFJvd0lEKCk7Ci0KLSAgICBSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUob2JqZWN0
U3RvcmUuZ2V0KCksIGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUpOwotICAgIEFTU0VSVChpbmRl
eC0+bmFtZSgpID09IG5hbWUpOwotICAgIG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuc2V0KG5hbWUs
IGluZGV4KTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpbmRleC5nZXQoKSk7CisgICAgaW5k
ZXgtPnNldElkKGlkKTsKKyAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7
CiB9CiAKIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0zMDEsMjcgKzMxMywy
NiBAQCBzdGF0aWMgdm9pZCBkb0RlbGV0ZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IGNoYXIq
IHNxbCwgaW50NjRfdCBpZCkKICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBC
ZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uKQotewotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9y
ZSA9IHRoaXM7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rh
c2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4SW50ZXJuYWwsIG9iamVj
dFN0b3JlLCBuYW1lLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURf
RVJSLCAiY3JlYXRlSW5kZXggbXVzdCBiZSBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgYSB0cmFu
c2FjdGlvbi4iKSk7Ci19Ci0KLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3Zl
SW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCiB7Ci0gICAgUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+IGluZGV4ID0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5nZXQobmFtZSk7CisgICAgUmVm
UHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gbV9pbmRleGVzLmdldChuYW1lKTsKICAg
ICBpZiAoIWluZGV4KSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9GT1VORF9FUlIsICJJbmRleCBu
YW1lIGRvZXMgbm90IGV4aXN0LiIpKTsKKyAgICAgICAgLy8gRklYTUU6IFJhaXNlIE5PVF9GT1VO
RF9FUlIuCiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgbV9pbmRleGVzLnJlbW92ZShuYW1l
KTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0
aGlzOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0
aW9uUHRyID0gdHJhbnNhY3Rpb247CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVh
dGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4SW50
ZXJuYWwsIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb25QdHIpKTsKKyAgICAvLyBGSVhN
RTogUmFpc2UgTk9UX0FMTE9XRURfRVJSIGlmIHRoZSBhYm92ZSBzdGF0ZW1lbnQgZmFpbHMuCit9
CiAKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5kZXhJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQor
ewogICAgIGRvRGVsZXRlKG9iamVjdFN0b3JlLT5zcWxpdGVEYXRhYmFzZSgpLCAiREVMRVRFIEZS
T00gSW5kZXhlcyBXSEVSRSBpZCA9ID8iLCBpbmRleC0+aWQoKSk7CiAgICAgZG9EZWxldGUob2Jq
ZWN0U3RvcmUtPnNxbGl0ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBJbmRleERhdGEgV0hFUkUg
aW5kZXhJZCA9ID8iLCBpbmRleC0+aWQoKSk7CiAKLSAgICBvYmplY3RTdG9yZS0+bV9pbmRleGVz
LnJlbW92ZShuYW1lKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOworICAgIHRyYW5zYWN0
aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycFJhbmdlLCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxs
YmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCBlZDk5NGZi
NDlmZTNhMGVkZWI2NmNiOGJmNWY5MWYyYTY1NzA1MDMxLi43NGZjMGRkYTk3ZWE2ZWYxY2IxYmE5
ZmVlZWY5ZGU5NGMzMmI4OTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmgKQEAgLTQ2LDIwICs0NiwzMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2UsIGlk
LCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChkYXRhYmFzZSwgbmFtZSwga2V5UGF0aCwgYXV0
b0luY3JlbWVudCkpOworICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCgpOwog
Ci0gICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBpbnQ2NF90IGlk
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2lkICE9IEludmFsaWRJZCk7CisgICAg
ICAgIHJldHVybiBtX2lkOworICAgIH0KKyAgICB2b2lkIHNldElkKGludDY0X3QgaWQpIHsgbV9p
ZCA9IGlkOyB9CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAg
ICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworICAgIGJvb2wgYXV0b0lu
Y3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0luY3JlbWVudDsgfQogCiAgICAgdm9pZCBn
ZXQoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2b2lkIHB1dChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGJvb2wg
YWRkT25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqKTsKICAgICB2b2lkIHJlbW92ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwog
Ci0gICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAg
ICAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSk7Ci0gICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7Cisg
ICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSopOwogCiAgICAgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAKQEAgLTY3LDYgKzc3
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwo
SURCRGF0YWJhc2VCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCiAgICAg
dm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFNRTGl0ZURhdGFiYXNlJiBzcWxpdGVEYXRhYmFzZSgp
IGNvbnN0OwpAQCAtNzQsMTAgKzg1LDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ2V0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPik7CiAgICAgc3RhdGljIHZvaWQgcHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgYm9v
bCBhZGRPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIHJl
bW92ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4s
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVJbmRleElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
Pik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVJbmRleEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIG9wZW5DdXJzb3JJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOwogCisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElk
ID0gMDsKKwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBtX2RhdGFiYXNlOwog
CiAgICAgaW50NjRfdCBtX2lkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDUzYWRlNjI4NzJkYzdmNjIzYjYyOWRmM2UzN2Q2NTYy
ZjhmNjUyMzIuLjZkOWZjYjhjZDI2ZjllM2E1ZDcyNWRhYzlhZTY2M2I4ODJlYjljNDIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAor
KysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKQEAg
LTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGJvb2wgYWRkT25seSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiB9
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
Y3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4
IDE3NTcyOTUzZDI0MTljNjJjNTcwMDIyNWE5ZGIyMzlkZWI1Y2NmYzUuLjUzYzg3OGMxYTdmN2Ey
YzgxOTI3NjczZjZkMTI3ZTg1ZWM2OWM5NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTQ3LDIxICs0NywyMiBAQCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKERPTVN0cmluZ0xpc3QqIG9i
amVjdFN0b3JlcwogICAgICwgbV9zdGF0ZShVbnVzZWQpCiAgICAgLCBtX2RhdGFiYXNlKGRhdGFi
YXNlKQogICAgICwgbV90cmFuc2FjdGlvbihuZXcgU1FMaXRlVHJhbnNhY3Rpb24oZGF0YWJhc2Ut
PnNxbGl0ZURhdGFiYXNlKCkpKQotICAgICwgbV90aW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6dGltZXJGaXJlZCkKKyAgICAsIG1fdGFza1RpbWVyKHRoaXMsICZJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZCkKKyAgICAsIG1fdGFza0V2ZW50VGlt
ZXIodGhpcywgJklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQp
CiAgICAgLCBtX3BlbmRpbmdFdmVudHMoMCkKIHsKIH0KIAogUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoaXNGaW5pc2hlZCgpKQorICAgIGlm
IChtX3N0YXRlID09IEZpbmlzaGVkKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV9k
YXRhYmFzZS0+b2JqZWN0U3RvcmUobmFtZSwgMCk7IC8vIEZJWE1FOiByZW1vdmUgbW9kZSBwYXJh
bS4KIH0KIAogYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIGlmIChp
c0ZpbmlzaGVkKCkpCisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIG1fdGFza1F1ZXVlLmFwcGVuZCh0YXNrKTsKQEAgLTczLDExICs3NCwx
MiBAQCBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OgogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmFib3J0KCkKIHsKLSAgICBpZiAoaXNGaW5pc2hlZCgpKQorICAgIGlmIChtX3N0YXRl
ID09IEZpbmlzaGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7
Ci0gICAgbV90aW1lci5zdG9wKCk7CisgICAgbV90YXNrVGltZXIuc3RvcCgpOworICAgIG1fdGFz
a0V2ZW50VGltZXIuc3RvcCgpOwogICAgIG1fdHJhbnNhY3Rpb24tPnJvbGxiYWNrKCk7CiAgICAg
bV9jYWxsYmFja3MtPm9uQWJvcnQoKTsKICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKCktPmRpZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOwpAQCAtOTAsMjkgKzkyLDE4IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkK
IAogICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOwogICAgIEFTU0VSVChtX3BlbmRpbmdF
dmVudHMpOwotCiAgICAgbV9wZW5kaW5nRXZlbnRzLS07CiAKLSAgICBpZiAoIW1fcGVuZGluZ0V2
ZW50cyAmJiBtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gVGhlIGxhc3QgdGFz
ayBldmVudCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGFzawotICAgICAgICAvLyBxdWV1ZSBpcyBl
bXB0eS4gQ29tbWl0IHRoZSB0cmFuc2FjdGlvbi4KLSAgICAgICAgY29tbWl0KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBXZSBhcmUgc3RpbGwgd2FpdGluZyBmb3Igb3RoZXIg
ZXZlbnRzIHRvIGNvbXBsZXRlLiBIb3dldmVyLAotICAgIC8vIHRoZSB0YXNrIHF1ZXVlIGlzIG5v
bi1lbXB0eSBhbmQgdGhlIHRpbWVyIGlzIGluYWN0aXZlLgotICAgIC8vIFdlIGNhbiB0aGVyZm9y
ZSBzY2hlZHVsZSB0aGUgdGltZXIgYWdhaW4uCi0gICAgaWYgKCFtX3Rhc2tRdWV1ZS5pc0VtcHR5
KCkgJiYgIW1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qo
MCk7CisgICAgaWYgKCFtX3Rhc2tFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGFz
a0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OnJ1bigpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhcnRQZW5kaW5nIHx8
IG1fc3RhdGUgPT0gUnVubmluZyk7Ci0gICAgQVNTRVJUKCFtX3RpbWVyLmlzQWN0aXZlKCkpOwor
ICAgIEFTU0VSVCghbV90YXNrVGltZXIuaXNBY3RpdmUoKSk7CiAKLSAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKKyAgICBtX3Rhc2tUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c3RhcnQoKQpAQCAtMTMyLDcgKzEyMyw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KCkKICAgICBtX2RhdGFiYXNlLT50
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCktPmRpZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOwogfQog
Ci12b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRpbWVyRmlyZWQoVGltZXI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4qKQordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0
YXNrVGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopCiB7CiAgICAg
QVNTRVJUKCFtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkpOwogCkBAIC0xNTIsNiArMTQzLDI0IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiopCiAgICAgfQogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4qKQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOworCisgICAgaWYgKCFtX3Bl
bmRpbmdFdmVudHMgJiYgbV90YXNrUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFRoZSBs
YXN0IHRhc2sgZXZlbnQgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRhc2sKKyAgICAgICAgLy8gcXVl
dWUgaXMgZW1wdHkuIENvbW1pdCB0aGUgdHJhbnNhY3Rpb24uCisgICAgICAgIGNvbW1pdCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgYXJlIHN0aWxsIHdhaXRpbmcgZm9y
IG90aGVyIGV2ZW50cyB0byBjb21wbGV0ZS4gSG93ZXZlciwKKyAgICAvLyB0aGUgdGFzayBxdWV1
ZSBpcyBub24tZW1wdHkgYW5kIHRoZSB0aW1lciBpcyBpbmFjdGl2ZS4KKyAgICAvLyBXZSBjYW4g
dGhlcmZvcmUgc2NoZWR1bGUgdGhlIHRpbWVyIGFnYWluLgorICAgIGlmICghbV90YXNrUXVldWUu
aXNFbXB0eSgpICYmICFtX3Rhc2tUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Rhc2tUaW1l
ci5zdGFydE9uZVNob3QoMCk7Cit9CisKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmlu
ZGV4IDA5YTZhMWM2ZDdlMjEwMjYyYzJiMGRjZGFhZWQ5Mjg0NTE3NDM5ZjguLmNmNDBlYmE3YzE4
ODVlZWQzNmEzNTQzNTE1YThlMjg0YTU2NmMzYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNTQsNyArNTQsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyogY2FsbGJhY2tz
KSB7IG1fY2FsbGJhY2tzID0gY2FsbGJhY2tzOyB9CiAKICAgICB2b2lkIHJ1bigpOwotICAgIGJv
b2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KIAog
cHJpdmF0ZToKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKERPTVN0cmluZ0xpc3QqIG9i
amVjdFN0b3JlcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0LCBp
bnQgaWQsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKQEAgLTY5LDcgKzY4LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBjb21taXQoKTsKIAotICAgIHZvaWQgdGlt
ZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopOworICAgIHZvaWQgdGFz
a1RpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qKTsKKyAgICB2b2lk
IHRhc2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qKTsK
IAogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBtX29iamVjdFN0b3JlTmFtZXM7CiAgICAgdW5z
aWduZWQgc2hvcnQgbV9tb2RlOwpAQCAtODYsNyArODYsOCBAQCBwcml2YXRlOgogICAgIE93blB0
cjxTUUxpdGVUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKIAogICAgIC8vIEZJWE1FOiBkZWxl
dGUgdGhlIHRpbWVyIG9uY2Ugd2UgaGF2ZSB0aHJlYWRzIGluc3RlYWQuCi0gICAgVGltZXI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gbV90aW1lcjsKKyAgICBUaW1lcjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiBtX3Rhc2tUaW1lcjsKKyAgICBUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiBtX3Rhc2tFdmVudFRpbWVyOwogICAgIGludCBtX3BlbmRpbmdFdmVudHM7CiB9Owog
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA0NDAyMjkzYWNiZjhiMzZjM2UyZmJmYWE5Njc5ZGRhNDg1YTIwYzVm
Li5jYmVjMDY2MDdkYzMzNDVkYWJiMGQxNjI1ZWJmNTRlNWZiNjJkZmZlIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMC0wNCAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlL3JlbW92ZU9iamVjdFN0b3JlIGFuZCBJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgvcmVtb3ZlSW5kZXggc2hvdWxkIGJlIHN5bmNocm9u
b3VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4
ODMKKworICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJEYXRhYmFzZTo6cmVtb3ZlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHB1YmxpYy9XZWJJ
REJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5k
ZXgpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlUHJveHk6OnJlbW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMv
SURCRGF0YWJhc2VQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlUHJveHk6OnJlbW92ZUluZGV4KToKKyAg
ICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpy
ZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJbmRleCk6CisgICAgICAgICogc3JjL1dlYklE
Qk9iamVjdFN0b3JlSW1wbC5oOgorCiAyMDEwLTEwLTAxICBWaWN0b3JpYSBLaXJzdCAgPHZya0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDhjNGI0NzAzZjUwNjI3YmVlZDJj
OGQ4NGNiNjMwYmE3OWQ4NGFiNTkuLmZlMDdhYzgyNmE2ZGNiNjBmZTIwNWRhNDI1ZjIyZWQwMGMz
NmExYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTYxLDE4
ICs2MSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZ0xpc3QoKTsKICAgICB9CisKICAgICAvLyBGSVhN
RTogUmVtb3ZlIG9uY2Ugd2UgdXBkYXRlIENocm9taXVtIHNpZGUuCiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIFdlYklEQk9i
amVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYpCisgICAgeyAKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0
aGUgV2ViSURCT2JqZWN0U3RvcmUgdG8gdGhlIGNhbGxlci4KICAgICB2aXJ0dWFsIFdlYklEQk9i
amVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpCiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugd2UgdXBk
YXRlIENocm9taXVtIHNpZGUuCisgICAgLy8gRklYTUU6IFJlbW92ZSBhZnRlciBXZWJLaXQgcm9s
bC4KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRy
YW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNr
cyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIC8vIFRy
YW5zZmVycyBvd25lcnNoaXAgb2YgdGhlIFdlYklEQlRyYW5zYWN0aW9uIHRvIHRoZSBjYWxsZXIu
CiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9N
U3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGlt
ZW91dCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3Rv
cmUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCBl
MTU3ZTk1NGE3YzBlM2FjOTA5Mzc0OWU3MjhmMzhhNThjMjQ2MjZlLi4yNGE0MzJlMWY4MzFmNjI2
NzE3ODI5MTI5Yjc0MDBiMjViNjY1MjE3IDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQk9iamVjdFN0b3JlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJPYmplY3RTdG9yZS5oCkBAIC02Myw3ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZShjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgLy8g
RklYTUU6IFJlbW92ZSBvbmNlIHdlIHVwZGF0ZSBDaHJvbWl1bSBzaWRlLgogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViSURC
Q2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgLy8gVHJhbnNmZXJz
IG93bmVyc2hpcCBvZiB0aGUgV2ViSURCSW5kZXggdG8gdGhlIGNhbGxlci4KICAgICB2aXJ0dWFs
IFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiAgICAgewpAQCAtNzIs
NyArNzYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSB3ZSB1
cGRhdGUgQ2hyb21pdW0gc2lkZS4KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoY29u
c3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxi
YWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICAvLyBGSVhNRTogZmluaXNoLgogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlUHJveHkuY3BwCmluZGV4IDU2NGZkZGI2ZTZhYjhmZjJmNDZlNDg0NDJkNTc4Zjli
YTQ2NzRlNWIuLjFkZWMxOGE0OWNhNzE5OTA5ODRiZDJhNjQzMGFmYzY0NmM0MTcwNDUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcApAQCAtNzYsMTIgKzc2LDE1IEBA
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2VQcm94eTo6b2JqZWN0U3RvcmVz
KCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+b2JqZWN0U3RvcmVzKCk7CiB9
CiAKLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBJREJEYXRhYmFzZVByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewogICAgIC8vIFRoZSB0cmFuc2Fj
dGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2Jq
ZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJ
REIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KICAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFj
a2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOwotICAgIG1fd2ViSURCRGF0YWJhc2UtPmNyZWF0ZU9i
amVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG5ldyBXZWJJREJDYWxsYmFj
a3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlv
bigpKTsKKyAgICBXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSA9IG1fd2Vi
SURCRGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1l
bnQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKKyAgICBpZiAo
IW9iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSURCT2JqZWN0U3Rv
cmVQcm94eTo6Y3JlYXRlKG9iamVjdFN0b3JlKTsKIH0KIAogUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJveHk6Om9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hvcnQgbW9kZSkKQEAgLTkyLDEyICs5NSwxMiBAQCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VQcm94
eTo6b2JqZWN0U3RvcmUoY29uc3QgUwogICAgIHJldHVybiBJREJPYmplY3RTdG9yZVByb3h5Ojpj
cmVhdGUob2JqZWN0U3RvcmUpOwogfQogCi12b2lkIElEQkRhdGFiYXNlUHJveHk6OnJlbW92ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3Zv
aWQgSURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewogICAgIC8v
IFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRv
IGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVu
dGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KICAgICBJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOwotICAgIG1fd2ViSURCRGF0YWJh
c2UtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxi
YWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKKyAgICBt
X3dlYklEQkRhdGFiYXNlLT5yZW1vdmVPYmplY3RTdG9yZShuYW1lLCAqdHJhbnNhY3Rpb25Qcm94
eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VQcm94eTo6
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
UHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCmluZGV4IGVh
ZWViMjdiNTViMzM3Njg2ZjRjOTIzZjE0OTE0YzNmNzYxNDkyZmEuLjE0OTRlZjBkMzg1ODU4NThl
ZDYzZTNkOWUxMWRjZjUyMDE3ODhmZGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQ
cm94eS5oCkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJz
aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1l
bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2Rl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBt
b2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAKaW5kZXggNjlhYThj
YTg5NTA1MGQ1MWU3MjJiYTJlNWJiNDk4YTUwOGFhOWZhNy4uYTAwOWFhODBmZDQ1MGNjNzQ3Zjgz
NzZlYjI4NDE0NjM5MzEwOGIwZiAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJP
YmplY3RTdG9yZVByb3h5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlUHJveHkuY3BwCkBAIC05NiwxMiArOTYsMTUgQEAgdm9pZCBJREJPYmplY3RTdG9yZVByb3h5
OjpyZW1vdmUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3MK
ICAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5yZW1vdmUoa2V5LCBuZXcgV2ViSURCQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24o
KSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9i
amVjdFN0b3JlUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbikKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFy
YW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRl
cmVyLAogICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHBy
b3h5IG9iamVjdHMuCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9u
UHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0
aW9uKTsKLSAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRo
LCB1bmlxdWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlv
blByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKKyAgICBXZWJLaXQ6OldlYklEQkluZGV4
KiBpbmRleCA9IG1fd2ViSURCT2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgs
IHVuaXF1ZSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCkpOworICAg
IGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBJREJJbmRleEJhY2tl
bmRQcm94eTo6Y3JlYXRlKGluZGV4KTsKIH0KIAogUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IElEQk9iamVjdFN0b3JlUHJveHk6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkK
QEAgLTExMiwxMiArMTE1LDEyIEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBJREJPYmplY3RTdG9yZVByb3h5OjppbmRleChjb25zdCBTdHJpbmcmIG5hCiAgICAgcmV0dXJu
IElEQkluZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoaW5kZXgpOwogfQogCi12b2lkIElEQk9iamVj
dFN0b3JlUHJveHk6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbikKK3ZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3ZlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
KQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUg
YSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8g
YWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4K
ICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRp
Y19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOwotICAgIG1f
d2ViSURCT2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJ
bXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigp
KTsKKyAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCAqdHJhbnNhY3Rp
b25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3Rv
cmVQcm94eTo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaAppbmRleCA4MGU0NjY4YzVlZDA1YTkwMTJlOWVh
YjlmMGU3ZTE1NzkwYWM3OGE0Li44NmI5YzY4MzEwODlhYzExMTMxM2U0YTJiNWVkZTk1YTAxNWU3
NDgxIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHku
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaApAQCAtNTAs
OSArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgYm9vbCBhZGRPbmx5LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogCi0gICAgdmly
dHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKik7CisgICAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogCiAgICAgdmlydHVh
bCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwCmluZGV4IGFiZTZmYmQwODE3ZDYxOTVlMGE5ZmMwZDk4ODQ3ZDFjMzFkNTRkNzYuLmM4ZDgx
ZDYwNmVjMjYxNzhiOTVmOTAzNjk1ZTU3MTQzOWFiY2UyMzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTY5LDkgKzY5LDEyIEBAIFdlYkRPTVN0cmlu
Z0xpc3QgV2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZXMoKSBjb25zdAogICAgIHJldHVy
biBtX2RhdGFiYXNlQmFja2VuZC0+b2JqZWN0U3RvcmVzKCk7CiB9CiAKLXZvaWQgV2ViSURCRGF0
YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJJREJDYWxsYmFja3Mq
IGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQorV2ViSURC
T2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIG1fZGF0
YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVt
ZW50LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIHRyYW5zYWN0aW9uLmdl
dElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKKyAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5j
cmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlv
bi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSk7CisgICAgaWYgKCFvYmplY3RT
dG9yZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9y
ZUltcGwob2JqZWN0U3RvcmUpOwogfQogCiBXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJh
c2VJbXBsOjpvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0
IG1vZGUpCkBAIC04Miw5ICs4NSw5IEBAIFdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFz
ZUltcGw6Om9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5zaWduCiAgICAgcmV0
dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOwogfQogCi12b2lkIFdl
YklEQkRhdGFiYXNlSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQordm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnJlbW92ZU9iamVjdFN0b3JlKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQogewotICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5yZW1vdmVPYmplY3RTdG9yZShuYW1lLCBJREJD
YWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKKyAgICBtX2RhdGFiYXNlQmFja2VuZC0+cmVtb3Zl
T2JqZWN0U3RvcmUobmFtZSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKCkpOwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbihjb25z
dCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMjI3NGU0OGNmZDU5ODA1NWEz
MzE3ZDU4Njg0NGZjNGQxZTZiZDhiOS4uOGUzNjBkYWIwNmM0MWIxMGFjYjMwYjNlOGI3MjBhNTU1
ZDQ1N2RkMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC00
OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlcygpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYklEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpOworICAgIHZpcnR1
YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJik7CiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogb2Jq
ZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNv
bnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwogICAg
IHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmlu
Z0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQp
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDNjZjdmMjU3OWVhNzM5NmNlNTJhMWY5MDRkMzQ0
NzBiMGNlZTFhM2YuLjlmYjdhYjY4NzU4NGM2YTZjMzRjY2RkNGYyNDI3ODRjYTE0Njc0NTUgMTAw
NzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTgx
LDkgKzgxLDEyIEBAIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpyZW1vdmUoY29uc3QgV2Vi
SURCS2V5JiBrZXksIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhCiAgICAgbV9vYmplY3RTdG9yZS0+
cmVtb3ZlKGtleSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCB0cmFuc2Fj
dGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSk7CiB9CiAKLXZvaWQgV2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCitXZWJJREJJbmRl
eCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRl
eChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJh
Y2tzKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOwor
ICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9y
ZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCB0cmFuc2FjdGlvbi5nZXRJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOwogfQogCiBX
ZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjppbmRleChjb25zdCBXZWJTdHJpbmcm
IG5hbWUpCkBAIC05NCw5ICs5Nyw5IEBAIFdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OmluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbmV3IFdlYklEQklu
ZGV4SW1wbChpbmRleCk7CiB9CiAKLXZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJ
bmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit2b2lkIFdlYklEQk9iamVjdFN0
b3JlSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgbV9vYmplY3RTdG9yZS0+cmVtb3ZlSW5k
ZXgobmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCB0cmFuc2FjdGlv
bi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSk7CisgICAgbV9vYmplY3RTdG9y
ZS0+cmVtb3ZlSW5kZXgobmFtZSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKCkpOwogfQogCiB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6b3BlbkN1cnNv
cihjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5o
CmluZGV4IDc2ZTQxNGI1YzNlZjUzYzFmN2RhODBlMTlmZmVmMjk0MjRhNDdlZGQuLmVlMWVjMGJl
NmY1YTM0NjRlZDEwMjcxMWNiODM0NmFjMzQ4MzgxNzIgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5
JiBrZXksIGJvb2wgYWRkT25seSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKIAotICAgIHZvaWQgY3JlYXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpOworICAg
IFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7
CiAgICAgV2ViSURCSW5kZXgqIGluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7Ci0gICAgdm9p
ZCByZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CisgICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CiAKICAgICB2b2lkIG9wZW5D
dXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdl
YklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69728</attachid>
            <date>2010-10-04 18:44:23 -0700</date>
            <delta_ts>2010-10-05 09:55:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46883-20101004184422.patch</filename>
            <type>text/plain</type>
            <size>97124</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjM2QyZDBhYmMwNmQzOTA3Nzc0NzAyY2ZmYjBkZTJiZjU5ZWE5ZDUxLi40MGVmYWJm
MWEzZTVhMGJhNGU5MWJlMmZkMjUxNWY5YzA4YjE4ZTQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMTAtMDQgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZS9yZW1vdmVPYmplY3RTdG9yZSBhbmQgSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4L3JlbW92ZUluZGV4IHNob3VsZCBiZSBzeW5jaHJvbm91cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2ODgzCisKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtY3Vyc29yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1jdXJzb3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWN1cnNvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKGRlbGV0ZUFsbE9iamVjdFN0
b3Jlcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNp
Y3MuaHRtbDoKKwogMjAxMC0xMC0wNCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MtZXhwZWN0ZWQudHh0
CmluZGV4IDk3ZWM3MjE5MjgyNzAzODBmM2Y0YTRkZWNjOTkwMjU1YmMxYjkwNmEuLmQwNTQ3Nzhh
N2YxNWQ5MjdjYjNkMWY1NjQxZDBhOGZiM2Q0NzE3OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLWV4cGVjdGVkLnR4dApA
QCAtNDEsNiArNDEsNyBAQCBQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRh
cmdldC5ET05FCiAKIHRyYW5zID0gZXZlbnQucmVzdWx0CiBQQVNTIHRyYW5zICE9PSBudWxsIGlz
IHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBUZXN0aW5nIHNldFZlcnNpb24uCiBk
Yi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGEiKQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMg
dHJ1ZQpAQCAtODIsMjIgKzgzLDYgQEAgUEFTUyBkYi5vYmplY3RTdG9yZXMgaXMgW10KIFBBU1Mg
ZGIub2JqZWN0U3RvcmVzLmxlbmd0aCBpcyAwCiBQQVNTIGRiLm9iamVjdFN0b3Jlcy5jb250YWlu
cygnJykgaXMgZmFsc2UKIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIikKLVBBU1MgJ29u
c3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0
cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxk
IGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBp
biBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVz
c2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQot
UEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2
ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQu
dGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKLQogUEFTUyBkYi5vYmplY3RT
dG9yZXMgaXMgWyd0ZXN0MTIzJ10KIFBBU1MgZGIub2JqZWN0U3RvcmVzLmxlbmd0aCBpcyAxCiBQ
QVNTIGRiLm9iamVjdFN0b3Jlcy5jb250YWlucygnJykgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKaW5kZXggODUwZDMw
ZGI0NmExZjVkZGYxYzVmMTQ3Yzk1N2E1YjAyMWNlN2EzOC4uMmViY2YwYjc4MmJkZTEzOTk2YjRj
ODAwYTY5MWU5NzE0MTc2MzNiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKQEAgLTUwLDcgKzUwLDcgQEAgZnVuY3Rpb24gdGVz
dFNldFZlcnNpb24oKQogICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZl
cnNpb24gYSIpJyk7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CiAgICAgcmVzdWx0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25BZ2FpbjsKLSAgICByZXN1bHQub25FcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CiB9CiAKIGZ1bmN0aW9uIHNldFZlcnNpb25BZ2FpbigpCkBAIC02MCw3ICs2MCw3IEBAIGZ1
bmN0aW9uIHNldFZlcnNpb25BZ2FpbigpCiAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygnZGIuc2V0
VmVyc2lvbigidmVyc2lvbiBiIiknKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICBy
ZXN1bHQub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVzdWx0Lm9uRXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwogfQogCiBmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCkBAIC03
MiwxNSArNzIsMTIgQEAgZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQogICAgIHNob3VsZEJl
KCJkYi5vYmplY3RTdG9yZXMubGVuZ3RoIiwgIjAiKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOwogCi0gICAgcmVzdWx0ID0gZXZhbEFuZExv
ZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QxMjMiKScpOwotICAgIHZlcmlmeVJlc3VsdChy
ZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja09iamVjdFN0b3JlOwotICAgIHJl
c3VsdC5vbkVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEyMyIpJyk7DQorICAgIGNo
ZWNrT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpOwogfQogCi1mdW5jdGlvbiBjaGVja09iamVjdFN0
b3JlKCkKK2Z1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiB7Ci0gICAgdmVy
aWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVzIiwg
IlsndGVzdDEyMyddIik7CiAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jlcy5sZW5ndGgiLCAi
MSIpOwogICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZXMuY29udGFpbnMoJycpIiwgImZhbHNl
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNp
Y3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLWV4cGVjdGVkLnR4dAppbmRleCBkOGQ2ZGNjNTdiYTAyZWMyYmIwYjM4NjliNDgyM2RiYzI4
MWZjOWExLi44ZjkyNmQwNGFjYzdmZGNhY2E3OGYyYmIzZWY0OWJkNWQzMGE3ZDc4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBl
Y3RlZC50eHQKQEAgLTQxLDQzICs0MSw5IEBAIFBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUg
aXMgZXZlbnQudGFyZ2V0LkRPTkUKIAogdHJhbnMgPSBldmVudC5yZXN1bHQKIFBBU1MgdHJhbnMg
IT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQg
aXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3Rh
dGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0K
LVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBB
U1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBm
YWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAh
PSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
LVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRl
JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBp
cyBldmVudC50YXJnZXQuRE9ORQotCi1zdG9yZSA9IGV2ZW50LnJlc3VsdAotZXZlbnQucmVzdWx0
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3Vs
dCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlT
dGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4K
LQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQot
UEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlz
IGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291cmNl
ICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3Rh
dGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRl
IGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLVBBU1MgZXZlbnQucmVzdWx0ID09PSBudWxsIGlzIGZh
bHNlCi1pbmRleE9iamVjdCA9IGV2ZW50LnJlc3VsdAorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
TmFtZScsICd4JykKIFBBU1MgJ25hbWUnIGluIGluZGV4T2JqZWN0IGlzIHRydWUKIFBBU1MgaW5k
ZXhPYmplY3QubmFtZSBpcyAiaW5kZXhOYW1lIgogUEFTUyAnc3RvcmVOYW1lJyBpbiBpbmRleE9i
amVjdCBpcyB0cnVlCkBAIC05MCw3ICs1Niw3IEBAIFBBU1MgJ29wZW5PYmplY3RDdXJzb3InIGlu
IGluZGV4T2JqZWN0IGlzIHRydWUKIFBBU1MgJ29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0IGlz
IHRydWUKIFBBU1MgJ2dldE9iamVjdCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQogUEFTUyAnZ2V0
JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCi1ldmVudC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnLCB5
OiAnenp6J30sICdrZXknKQorc3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXkn
KQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAnb25lcnJvcicgaW4g
cmVzdWx0IGlzIHRydWUKIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCmluZGV4IDNj
OGE2MDFlMzU5YTM4MGYxMzA0MmU2MTg1YTQxYjhhYTA2MTY3MzAuLjhmNmQ4ODc1MjVhOWE5ZDRi
ZjZhZGM5YTYwMjhjYzAwYjY5OTI2NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCkBAIC00MSwzMyArNDEsMTggQEAgZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQogICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKICAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CiAKLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIsIGNyZWF0ZU9iamVjdFN0b3JlKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
T2JqZWN0U3RvcmUoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwot
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjcmVhdGVJbmRleDsKLSAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwg
Y3JlYXRlSW5kZXgpOwogfQogCiBmdW5jdGlvbiBjcmVhdGVJbmRleCgpCi17Ci0gICAgdmVyaWZ5
U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGV2ZW50LnJlc3VsdCIpOwotCi0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZXZlbnQucmVz
dWx0LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJl
c3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZERhdGE7Ci0gICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK3sNCisgICAgd2luZG93LnN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAg
d2luZG93LmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
TmFtZScsICd4JykiKTsKKyAgICBhZGREYXRhKCk7CiB9CiAKIGZ1bmN0aW9uIGFkZERhdGEoKQog
ewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZl
bnQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgd2luZG93LmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QgPSBldmVudC5yZXN1bHQiKTsKICAgICBzaG91bGRCZVRydWUoIiduYW1l
JyBpbiBpbmRleE9iamVjdCIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmpl
Y3QubmFtZSIsICJpbmRleE5hbWUiKTsKICAgICBzaG91bGRCZVRydWUoIidzdG9yZU5hbWUnIGlu
IGluZGV4T2JqZWN0Iik7CkBAIC04MSw3ICs2Niw3IEBAIGZ1bmN0aW9uIGFkZERhdGEoKQogICAg
IHNob3VsZEJlVHJ1ZSgiJ2dldE9iamVjdCcgaW4gaW5kZXhPYmplY3QiKTsKICAgICBzaG91bGRC
ZVRydWUoIidnZXQnIGluIGluZGV4T2JqZWN0Iik7CiAKLSAgICByZXN1bHQgPSBldmFsQW5kTG9n
KCJldmVudC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAg
IHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAn
a2V5JykiKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQub25zdWNjZXNz
ID0gYWRkTW9yZTsKICAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNv
ci1leHBlY3RlZC50eHQKaW5kZXggOTcyNGZkMDY3OTM4MmIzZDdkOGVlZjI1MmNhYTVhYWE0NzY0
MTA1MS4uYWVmZGNkMGEzNWEyY2IxZGRhNzY5N2Q5NTkwNDNmYWE3N2I5YjNiNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3ItZXhwZWN0
ZWQudHh0CkBAIC00MCw1MyArNDAsOSBAQCBQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlz
IGV2ZW50LnRhcmdldC5ET05FCiAKIHRyYW5zID0gZXZlbnQucmVzdWx0CiBQQVNTIHRyYW5zICE9
PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlz
IHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRl
JyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgotCi1T
dWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNT
ICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFs
c2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0g
bnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1Q
QVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMg
ZXZlbnQudGFyZ2V0LkRPTkUKLQotb2JqZWN0U3RvcmUgPSBldmVudC5yZXN1bHQKIG9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJl
c3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVh
ZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHku
Li4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1
ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50
IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291
cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMg
dHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5
U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0
YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLWluZGV4T2JqZWN0ID0gZXZlbnQucmVzdWx0Ci1T
dWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNT
ICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFs
c2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0g
bnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1Q
QVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMg
ZXZlbnQudGFyZ2V0LkRPTkUKLQogb2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25leHRU
b0FkZF19LCBuZXh0VG9BZGQpCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCiBQ
QVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbAppbmRleCA2NmI2ZGM2MzAxNWMzZDRjYTYyN2E5
ZjFmNzE5NzhkNDU4NzhjNDViLi41ZjJjZGU2Nzg0YmU0YTMzODI3MmY2ZWI5YmExOWZiMzkxNjk2
MjJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJz
b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3Iu
aHRtbApAQCAtNTMsNDEgKzUzLDIxIEBAIGZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKICAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CiAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOwogCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjcmVh
dGVPYmplY3RTdG9yZXMpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZXMoKQotewot
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0
U3RvcmUnKSIpOwotICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nl
c3MgPSBvcGVuSW5kZXg7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkluZGV4KCkKLXsKLSAgICB2ZXJpZnlTdWNjZXNzRXZl
bnQoZXZlbnQpOwotICAgIHdpbmRvdy5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZXZlbnQucmVzdWx0Iik7Ci0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5jcmVhdGVJbmRleCgnc29tZUluZGV4JywgJ3gnKSIpOwotICAgIHZlcmlmeVJlc3VsdChy
ZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzdGFydEFkZGluZ0RhdGE7Ci0gICAgcmVz
dWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIsIHN0YXJ0QWRkaW5nRGF0YSk7CiB9CiAgCiBmdW5jdGlvbiBzdGFydEFkZGlu
Z0RhdGEoKQogewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0gICAgd2luZG93Lmlu
ZGV4T2JqZWN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QgPSBldmVudC5yZXN1bHQiKTsKLQor
ICAgIHdpbmRvdy5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzb21lT2JqZWN0U3RvcmUnKSIpOworICAgIHdpbmRvdy5pbmRleE9iamVjdCA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7CiAgICAgd2lu
ZG93Lm5leHRUb0FkZCA9IDA7CiAgICAgYWRkRGF0YSgpOwogfQogCiBmdW5jdGlvbiBhZGREYXRh
KCkKIHsKLSAgICAvLyBXZSBjaGVhdCB3aGVuIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWU7IHdl
J3JlIGluIHRoZSBjb250ZXh0IG9mIHRoZSBvYmplY3RTdG9yZSBzdWNjZXNzIGV2ZW50LgotICAg
IHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgaWYgKHdpbmRvdy5uZXh0VG9BZGQgPiAw
KQorICAgICAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwogCiAgICAgcmVzdWx0ID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0
VG9BZGQpIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVk
LnR4dAppbmRleCAxZGY1YTRlYTdmYWU4Yjg1ZTVhZjA0M2I1MDM0YWUzZjRlZWNjMDk4Li45ZjIx
ZGUwOTFjY2IxNmE2YmZjOGU5YzJkMWEyYzE3MjVlMWEzMjM5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBl
Y3RlZC50eHQKQEAgLTQyLDI1ICs0Miw5IEBAIFBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUg
aXMgZXZlbnQudGFyZ2V0LkRPTkUKIAogdHJhbnMgPSBldmVudC5yZXN1bHQKIFBBU1MgdHJhbnMg
IT09IG51bGwgaXMgdHJ1ZQotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwp
Ci1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBy
ZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2
ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotY3JlYXRlU3VjY2VzcygpOgotU3VjY2VzcyBl
dmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScg
aW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNT
ICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMg
dHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25l
cnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50
LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRh
cmdldC5ET05FCi0KLXN0b3JlID0gZXZlbnQucmVzdWx0CitEZWxldGVkIGFsbCBvYmplY3Qgc3Rv
cmVzLgorY3JlYXRPYmplY3RTdG9yZSgpOgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmVOYW1lJywgbnVsbCkKIHN0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZXMKIFBBU1Mgc3Rv
cmUubmFtZSBpcyAic3RvcmVOYW1lIgogUEFTUyBzdG9yZS5rZXlQYXRoIGlzIG51bGwKQEAgLTY5
LDM0ICs1MywxOCBAQCBQQVNTIHN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKIEFzayBmb3IgYSBzdG9y
ZSB0aGF0IGRvZXNuJ3QgZXhpc3Q6CiBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykKIFBBU1Mg
aW5kZXggaXMgbnVsbAotRkFJTCBBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0
IHNob3VsZCBoYXZlIHRocm93bi4KLWV2ZW50LnJlc3VsdC5jcmVhdGVJbmRleCgnaW5kZXhOYW1l
JywgJ3gnLCB0cnVlKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAn
b25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBp
cyB0cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLWFkZEluZGV4U3VjY2Vz
cygpOgotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1
ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ21lc3NhZ2UnIGluIGV2ZW50
IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQuc291
cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMg
dHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3JlYWR5
U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0
YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLVBBU1MgZXZlbnQucmVzdWx0ICE9PSBudWxsIGlz
IHRydWUKLVBBU1MgZXZlbnQuc291cmNlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScp
IGlzIHRydWUKLWluZGV4ID0gZXZlbnQuc291cmNlLmluZGV4KCdpbmRleE5hbWUnKQorUEFTUyBp
bmRleCBpcyBudWxsCitjcmVhdGVJbmRleCgpOgorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFt
ZScsICd4JywgdHJ1ZSkKK1BBU1MgaW5kZXggIT09IG51bGwgaXMgdHJ1ZQorUEFTUyBzdG9yZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSBpcyB0cnVlCitpbmRleCA9IHN0b3JlLmlu
ZGV4KCdpbmRleE5hbWUnKQogUEFTUyBpbmRleCAhPT0gbnVsbCBpcyB0cnVlCiBBc2sgZm9yIGEg
c3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0OgogaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpCiBQ
QVNTIGluZGV4IGlzIG51bGwKLUZBSUwgQXNraW5nIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBl
eGlzdCBzaG91bGQgaGF2ZSB0aHJvd24uCi1ldmVudC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnfSwg
J2tleScpCitQQVNTIGluZGV4IGlzIG51bGwuCitzdG9yZS5hZGQoe3g6ICd2YWx1ZSd9LCAna2V5
JykKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1MgJ29uZXJyb3InIGlu
IHJlc3VsdCBpcyB0cnVlCiBQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mu
aHRtbAppbmRleCA5YjAwOTQ2MzJhZGE1YjFlNWFhMGQ4MTVhNjQ2ZjQyM2RkNWFhYzM3Li5kOTMw
ZjRiZjY1OGM0OTdiYjdiMDc3ZDZkNGEyMTZlYmYyMTI0MzhkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbApAQCAtNDIs
MjIgKzQyLDEzIEBAIGZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKICAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7CiAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwogCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBkZWxldGVTdWNjZXNz
KTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0ZU9iamVjdFN0b3JlKTsKIH0K
LQotZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdmVyaWZ5UmVz
dWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZVN1Y2Nlc3M7Ci0gICAg
cmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Y3JlYXRlU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImNyZWF0ZVN1Y2Nlc3MoKToiKTsKLSAgICB2
ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gZXZlbnQucmVzdWx0Iik7CisNCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCit7
DQorICAgIGRlYnVnKCJjcmVhdE9iamVjdFN0b3JlKCk6Iik7DQorICAgIHZhciBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwp
Iik7CiAgICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2Jq
ZWN0U3RvcmVzIik7CiAKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAi
c3RvcmVOYW1lIik7CkBAIC02OCw0MCArNTksMzcgQEAgZnVuY3Rpb24gY3JlYXRlU3VjY2Vzcygp
CiAKICAgICBkZWJ1ZygiQXNrIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdDoiKTsKICAg
ICB0cnkgewotICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgo
J2FzZGYnKSIpOwotICAgICAgICBzaG91bGRCZU51bGwoImluZGV4Iik7IC8vIFJldHVybmluZyBu
dWxsIGlzIHdyb25nLCBidXQgbGVzcyB3cm9uZyB0aGFuIHJldHVybmluZyBhbiBhY3R1YWwgb2Jq
ZWN0IQotICAgICAgICB0ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0
IGV4aXN0IHNob3VsZCBoYXZlIHRocm93bi4iKTsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9n
KCJpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykiKTsNCisgICAgICAgIHNob3VsZEJlTnVsbCgi
aW5kZXgiKTsgLy8gUmV0dXJuaW5nIG51bGwgaXMgd3JvbmcsIGJ1dCBsZXNzIHdyb25nIHRoYW4g
cmV0dXJuaW5nIGFuIGFjdHVhbCBvYmplY3QhDQorICAgICAgICB0ZXN0UGFzc2VkKCJpbmRleCBp
cyBudWxsIik7CisgICAgICAgIC8vIEZJWE1FOiB0ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3Rv
cmUgdGhhdCBkb2Vzbid0IGV4aXN0IHNob3VsZCBoYXZlIHRocm93bi4iKTsKICAgICB9IGNhdGNo
IChlcnIpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgdGhyb3duLiIpOwogICAgICAgICAv
LyBGSVhNRTogVmVyaWZ5IHRoZSBjb3JyZWN0IGV4Y2VwdGlvbiB0aHJvd24uCi0gICAgfQotCi0g
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmNyZWF0ZUluZGV4KCdpbmRleE5h
bWUnLCAneCcsIHRydWUpIik7IC8vIHRydWUgPT0gdW5pcXVlIHJlcXVpcmVtZW50LgotICAgIHZl
cmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBhZGRJbmRleFN1Y2Nl
c3M7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9
DQorDQorICAgIGNyZWF0ZUluZGV4KCk7CiB9CiAKLWZ1bmN0aW9uIGFkZEluZGV4U3VjY2Vzcygp
Ci17Ci0gICAgZGVidWcoImFkZEluZGV4U3VjY2VzcygpOiIpOwotICAgIHZlcmlmeVN1Y2Nlc3NF
dmVudChldmVudCk7Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC5yZXN1bHQgIT09IG51bGwiKTsK
LSAgICBzaG91bGRCZVRydWUoImV2ZW50LnNvdXJjZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRl
eE5hbWUnKSIpOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBldmVudC5zb3VyY2Uu
aW5kZXgoJ2luZGV4TmFtZScpIik7CitmdW5jdGlvbiBjcmVhdGVJbmRleCgpCit7DQorICAgIGRl
YnVnKCJjcmVhdGVJbmRleCgpOiIpOw0KKyAgICB3aW5kb3cuaW5kZXggPSBldmFsQW5kTG9nKCJz
dG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnLCB0cnVlKSIpOyAvLyB0cnVlID09IHVu
aXF1ZSByZXF1aXJlbWVudC4KKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9PSBudWxsIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIp
OworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhOYW1l
JykiKTsKICAgICBzaG91bGRCZVRydWUoImluZGV4ICE9PSBudWxsIik7CiAKICAgICBkZWJ1Zygi
QXNrIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdDoiKTsKICAgICB0cnkgewotICAgICAg
ICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOwotICAg
ICAgICBzaG91bGRCZU51bGwoImluZGV4Iik7IC8vIFJldHVybmluZyBudWxsIGlzIHdyb25nLCBi
dXQgbGVzcyB3cm9uZyB0aGFuIHJldHVybmluZyBhbiBhY3R1YWwgb2JqZWN0IQotICAgICAgICB0
ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0IHNob3VsZCBo
YXZlIHRocm93bi4iKTsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmluZGV4KCdhc2RmJykiKTsNCisgICAgICAgIHNob3VsZEJlTnVsbCgiaW5kZXgiKTsgLy8gUmV0
dXJuaW5nIG51bGwgaXMgd3JvbmcsIGJ1dCBsZXNzIHdyb25nIHRoYW4gcmV0dXJuaW5nIGFuIGFj
dHVhbCBvYmplY3QhDQorICAgICAgICB0ZXN0UGFzc2VkKCJpbmRleCBpcyBudWxsLiIpOworICAg
ICAgICAvLyBGSVhNRTogdGVzdEZhaWxlZCgiQXNraW5nIGZvciBhIHN0b3JlIHRoYXQgZG9lc24n
dCBleGlzdCBzaG91bGQgaGF2ZSB0aHJvd24uIik7CiAgICAgfSBjYXRjaCAoZXJyKSB7Ci0gICAg
ICAgIHRlc3RQYXNzZWQoIkVycm9yIHRocm93bi4iKTsKICAgICAgICAgLy8gRklYTUU6IFZlcmlm
eSB0aGUgY29ycmVjdCBleGNlcHRpb24gdGhyb3duLgogICAgIH0KIAotICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImV2ZW50LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZSd9LCAna2V5JykiKTsKKyAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZSd9LCAna2V5JykiKTsKICAg
ICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQub25zdWNjZXNzID0gYWRkU3VjY2Vz
czsKICAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1
cnNvci1leHBlY3RlZC50eHQKaW5kZXggZjFmMTNhZTM4NjNjNGI3MGIwMTlmYjkyOWQxYTZmNzFj
M2FlYTlkMi4uZmZlNmNkNzI1MzUzMjZjN2NhOGIxYThiOWM5OTI5OTdmOTU4OTc0NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1jdXJzb3ItZXhwZWN0ZWQudHh0CkBAIC00MCwzNSArNDAsOCBAQCBQQVNTIGV2ZW50LnRhcmdl
dC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKIHRyYW5zID0gZXZlbnQucmVzdWx0
CiBQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMu
CiBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykKLVBBU1MgJ29uc3VjY2Vz
cycgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1Q
QVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUg
c2hvcnRseS4uLgotCi1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVu
dCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScg
aW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBl
dmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRh
cmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFT
UyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0
LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKLQotb2JqZWN0U3RvcmUgPSBldmVudC5y
ZXN1bHQKLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRy
dWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVu
dCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNv
dXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlz
IHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFk
eVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlT
dGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCiBvYmplY3RTdG9yZS5hZGQoJycsIHRlc3REYXRh
W25leHRUb0FkZF0pCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdv
bmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAppbmRleCA3MDIwNzZmNzZlN2FiYWI5
OWMzMGU1YTNhZDk2ZWU4MzhhOTU1MmNkLi45MmMxYTdjNjVkMGVkYmY3OGViZGFkOTllYmI0ODli
ZmM2YjVmMDhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jdXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1jdXJzb3IuaHRtbApAQCAtNTIsMzAgKzUyLDIwIEBAIGZ1bmN0aW9uIGRlbGV0
ZUV4aXN0aW5nKCkKICAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CiAgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwogCi0gICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiLCBvcGVuT2JqZWN0U3RvcmUpOwotfQotCi1mdW5jdGlvbiBvcGVuT2JqZWN0
U3RvcmUoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzb21lT2JqZWN0U3RvcmUnKSIpOwotICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJl
c3VsdC5vbnN1Y2Nlc3MgPSBzdGFydEFkZGluZ0RhdGE7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIHN0
YXJ0QWRkaW5nRGF0YSk7CiB9CiAgCiBmdW5jdGlvbiBzdGFydEFkZGluZ0RhdGEoKQogewotICAg
IHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0gICAgd2luZG93Lm9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBldmVudC5yZXN1bHQiKTsKLQorICAgIHdpbmRvdy5vYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3Rv
cmUnKSIpOwogICAgIHdpbmRvdy5uZXh0VG9BZGQgPSAwOwogICAgIGFkZERhdGEoKTsKIH0KIAog
ZnVuY3Rpb24gYWRkRGF0YSgpCiB7Ci0gICAgLy8gV2UgY2hlYXQgd2hlbiBjYWxsZWQgZm9yIHRo
ZSBmaXJzdCB0aW1lOyB3ZSdyZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgb2JqZWN0U3RvcmUgc3Vj
Y2VzcyBldmVudC4KLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIGlmICh3aW5k
b3cubmV4dFRvQWRkID4gMCkKKyAgICAgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKIAog
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4
dFRvQWRkXSkiKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJl
bW92ZW9iamVjdHN0b3JlLWV4cGVjdGVkLnR4dAppbmRleCBiNTNlNDdkY2NiYzk1YjhlY2M4NWEw
NzVmMDNkNWM4YzU1NjhlNjU1Li4zODQ1OGJkMTdlMDZhYTczNGNmZDE3YTk5Y2ZlOGZhMWI4Njg0
YWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1yZW1vdmVvYmplY3RzdG9yZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0CkBA
IC00MCwyNCArNDAsOSBAQCBQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRh
cmdldC5ET05FCiAKIHRyYW5zID0gZXZlbnQucmVzdWx0CiBQQVNTIHRyYW5zICE9PSBudWxsIGlz
IHRydWUKLWRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQotUEFTUyAnb25z
dWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRy
dWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVudCBzaG91bGQg
ZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGlu
IGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNz
YWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1Q
QVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZl
bnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
Ci1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50
YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCi1ldmVudC5yZXN1bHQuYWRk
KCd2YWx1ZScsICdrZXknKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCitzdG9yZS5hZGQoJ3ZhbHVlJywg
J2tleScpCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdvbmVycm9y
JyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUK
QEAgLTk1LDIyICs4MCw2IEBAIFBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQu
dGFyZ2V0LkRPTkUKIAogUEFTUyBldmVudC5yZXN1bHQgaXMgInZhbHVlIgogZXZlbnQuc291cmNl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0
IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0
YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgot
Ci1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1Q
QVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMg
ZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2Ug
IT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
Ci1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0
ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUg
aXMgZXZlbnQudGFyZ2V0LkRPTkUKLQogUEFTUyBldmVudC5zb3VyY2UuaW5kZXhOYW1lcy5jb250
YWlucygnaW5kZXhOYW1lJykgaXMgdHJ1ZQogZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQog
UEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQpAQCAtMTMyLDM5ICsxMDEsNyBAQCBQ
QVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiB0cmFucyA9
IGV2ZW50LnJlc3VsdAogUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCiBkYi5yZW1vdmVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUK
LVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBy
ZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNz
IGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNTICdjb2Rl
JyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBB
U1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBp
cyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdv
bmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZl
bnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQu
dGFyZ2V0LkRPTkUKLQogZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCi1Q
QVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiByZXN1
bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKLUFuIGV2ZW50
IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotU3VjY2VzcyBldmVudCBmaXJlZDoKLVBBU1MgJ3Jl
c3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBB
U1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCi1QQVNTICdzb3VyY2UnIGluIGV2ZW50IGlz
IHRydWUKLVBBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQotUEFTUyAnb25zdWNjZXNz
JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNT
IGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KIGRiLnRyYW5z
YWN0aW9uKCkKIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCiBz
dG9yZS5nZXQoJ2tleScpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbAppbmRleCA5M2Rj
YmY2ZDlkN2E1ZGQxM2EyMWY4MWIzYmJkMmNiZGIzYjUwYzgzLi4zODc3YjFlNGQ3OGQ0MjU5OWE1
OGE1N2Q1NDkyMTdlZjg4MjlkMThiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwK
QEAgLTM5LDIyICszOSwxMyBAQCBmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCiAgICAgd2luZG93
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC5yZXN1bHQiKTsKICAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9PSBudWxsIik7CiAKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIs
IGNyZWF0ZU9iamVjdFN0b3JlKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0
ZU9iamVjdFN0b3JlQW5kQWRkVmFsdWUpOwogfQogCi1mdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9y
ZSgpCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZUFuZEFkZFZhbHVlKCkKIHsKLSAgICByZXN1
bHQgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCki
KTsKLSAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gYWRk
VmFsdWU7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gYWRkVmFsdWUoKQotewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7
Ci0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJldmVudC5yZXN1bHQuYWRkKCd2YWx1ZScsICdr
ZXknKSIpOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwogICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwog
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBnZXRWYWx1ZTsKICAgICByZXN1bHQub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwpAQCAtNzksMTUgKzcwLDcgQEAgZnVuY3Rpb24gYWRkSW5k
ZXgoKQogICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CiAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC5yZXN1bHQiLCAidmFsdWUiKTsKIAotICAgIHJlc3VsdCA9IGV2YWxBbmRM
b2coImV2ZW50LnNvdXJjZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7Ci0gICAgdmVy
aWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNvbW1pdFRyYW5zYWN0
aW9uOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGNvbW1pdFRyYW5zYWN0aW9uKCkKLXsKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQo
ZXZlbnQpOworICAgIHdpbmRvdy5pbmRleCA9IGV2YWxBbmRMb2coImV2ZW50LnNvdXJjZS5jcmVh
dGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CiAgICAgc2hvdWxkQmVUcnVlKCJldmVudC5zb3Vy
Y2UuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKICAgICAvLyBMZXQgdGhlIHRy
YW5zYWN0aW9uIGNvbW1pdC4KICAgICB3aW5kb3cuc2V0VGltZW91dCgnc2Vjb25kU2V0VmVyc2lv
bigpJywgMCk7CkBAIC0xMDgsMjYgKzkxLDE4IEBAIGZ1bmN0aW9uIHJlbW92ZU9iamVjdFN0b3Jl
KCkKICAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CiAgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwogCi0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
ZGIucmVtb3ZlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJl
c3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlQWdhaW47Ci0g
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBldmFsQW5k
TG9nKCJkYi5yZW1vdmVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsNCisgICAgY3JlYXRlT2Jq
ZWN0U3RvcmVBZ2FpbigpOwogfQogCiBmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZUFnYWluKCkK
IHsKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwotCi0gICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdmVy
aWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldFZhbHVlQWdhaW47
Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICBn
ZXRWYWx1ZUFnYWluKCk7CiB9CiAKIGZ1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQogewotICAgIHZl
cmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0KICAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImRiLnRyYW5zYWN0aW9uKCkiKTsKICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dAppbmRleCA0OGE2
ODlmMDgxYmZjOGNmMmQ0MjcyZmI0MTllZGUxODhmM2Y2MzEyLi4wZTU1YmU3NzNlZGFhZmYzNzZh
MDM0NTU3ODA5ZGE4Mjc0NzVmNTdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0CkBAIC00MSwyNCArNDEsOCBAQCBQ
QVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKIHRyYW5z
ID0gZXZlbnQucmVzdWx0CiBQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKLWRiLmNyZWF0ZU9i
amVjdFN0b3JlKCd0ZXN0JykKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKLVBB
U1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1
bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNzIGV2
ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBp
biBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1Mg
J3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0
cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVy
cm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFy
Z2V0LkRPTkUKLQotb2JqZWN0U3RvcmUgPSBldmVudC5yZXN1bHQKK0RlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykKIG9i
amVjdFN0b3JlLmFkZCgnbXlWYWx1ZScsICdteUtleScpCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJl
c3VsdCBpcyB0cnVlCiBQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQpAQCAtNjYsNyAr
NTAsNyBAQCBQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQogQW4gZXZlbnQgc2hv
dWxkIGZpcmUgc2hvcnRseS4uLgogCiBPcGVuaW5nIGN1cnNvcgotb2JqZWN0U3RvcmUub3BlbkN1
cnNvcihrZXlSYW5nZSkKK2V2ZW50LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKQogUEFTUyAn
b25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlz
IHRydWUKIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbAppbmRleCA0N2M3ZTg5NzE0NDc1
MGY0NmYyYjc5YTlmNzUyMTIyOTBhNmIzZDJiLi5kNGE5MDY4NjA3MzIyYzRlMTE0MDAwMWUzMTE0
NTI3MDViYTMxNTZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
cGVuLWN1cnNvci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y3Vyc29yLmh0bWwKQEAgLTQ4LDM1ICs0OCwyMSBAQCBmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKIHsK
ICAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IiKTsKICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
LmxlZnRCb3VuZCgibXlLZXkiKTsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImV2ZW50
LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwogICAgIHZlcmlmeVJlc3VsdChyZXN1bHQp
OwogICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOwogICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvcHVsYXRlT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmUpCi17Cit9DQorDQorZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxh
dGVPYmplY3RTdG9yZSgpIAorew0KKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKICAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUnLCAnbXlLZXknKSIpOwogICAg
IHZlcmlmeVJlc3VsdChyZXN1bHQpOwogICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29y
OwogICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiB9CiAKLWZ1
bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlU3VjY2VzcygpCi17Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2
ZW50KGV2ZW50KTsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGV2ZW50LnJlc3VsdCIpOwotICAgIHBvcHVsYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUp
OwotfQotCi1mdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJl
c3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlU3VjY2VzczsK
LSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCiBmdW5j
dGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCiB7CiAgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNz
KCk6Iik7CkBAIC04NSw3ICs3MSw3IEBAIGZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKICAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CiAgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwogCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBk
ZWxldGVTdWNjZXNzKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmUpOwogfQogCiBmdW5jdGlvbiBvcGVuU3VjY2VzcygpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCA3
ZTExNDA2YTQ5ZTJiY2U3Y2VhYmMwZDY4MDI4OWE4OTg4NTMxOWU0Li5lNjk1YmM0NzM0NGNhZGMy
OGE4MjJjMWNhZGY1OWVlNDJhYzc0ZGY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKQEAgLTc5LDE1ICs3OSwxMiBAQCBmdW5jdGlv
biB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjaygpCiAgICAgZG9uZSgpOwogfQogCisvLyBGSVhNRTog
cmVtb3ZlIHRoZSBvbmZpbmlzaGVkIHBhcmFtZXRlci4KIGZ1bmN0aW9uIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYiwgb25maW5pc2hlZCkKLXsKLSAgICBvYmplY3RTdG9yZXMgPSBkYi5vYmplY3RT
dG9yZXM7Ci0gICAgaWYgKCFvYmplY3RTdG9yZXMubGVuZ3RoKSB7Ci0gICAgICAgIG9uZmluaXNo
ZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciByZXF1ZXN0ID0gZGIucmVt
b3ZlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVzWzBdKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIG9uZmluaXNoZWQpOyB9Oworew0KKyAgICBm
b3IgKGkgPSAwOyBpIDwgZGIub2JqZWN0U3RvcmVzLmxlbmd0aDsgKytpKQ0KKyAgICAgICAgZGIu
cmVtb3ZlT2JqZWN0U3RvcmUoZGIub2JqZWN0U3RvcmVzLml0ZW0oaSkpOw0KKw0KKyAgICBkZWJ1
ZygiRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4iKTsNCisgICAgb25maW5pc2hlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFz
aWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggMTAzYjhjMjc2Y2Y4ODgxN2FiNTI4OWRhNzk3
OTVhNDk0YjAwNTEwYS4uNWFkMzRhMTQ5MGVkOGU2ZjM1NTFhZWVkOGE2MWM4NGI2NTQ0ZTAzZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFz
aWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC00NCwyMyArNDQsOCBAQCBQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKIHRyYW5zID0gZXZlbnQu
cmVzdWx0CiBQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCiBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKLVBBU1MgJ29u
c3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0
cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxk
IGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBp
biBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVz
c2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQot
UEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2
ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgZXZlbnQu
dGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKLQogZGIudHJhbnNhY3Rpb24o
KQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKIFBBU1Mgc3Rv
cmUubmFtZSBpcyAic3RvcmVOYW1lIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbAppbmRleCA2MjM2M2RiYTk2NzlmNWI0ZmU4
YTBkY2RhYzcwYWM0ZWYyNmVkOTBjLi4wNTU3NzA4ODhmYTJlZDI3ZmQzMzY3Y2FlZTdhOGRhOTU5
ZjE4NzkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1iYXNpY3MuaHRtbApAQCAtNDcsNyArNDcsMTYgQEAgZnVuY3Rpb24gc2V0VmVyc2lv
blN1Y2Nlc3MoKQogICAgIHRyYW5zLm9uY29tcGxldGUgPSBjb21wbGV0ZUNhbGxiYWNrOwogICAg
IHdpbmRvdy5jb21wbGV0ZUV2ZW50RmlyZWQgPSBmYWxzZTsKIAotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYiwgZmluaXNoZWREZWxldGluZyk7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiLCBjcmVhdGVPYmplY3RTdG9yZUFuZFN0YXJ0VHJhbnNhY3Rpb24pOworfQ0KKw0KK2Z1bmN0
aW9uIGNyZWF0ZU9iamVjdFN0b3JlQW5kU3RhcnRUcmFuc2FjdGlvbigpDQorew0KKyAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCkiKTsKKyAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsKIH0KIAogZnVu
Y3Rpb24gY29tcGxldGVDYWxsYmFjaygpCkBAIC01NiwyMyArNjUsNiBAQCBmdW5jdGlvbiBjb21w
bGV0ZUNhbGxiYWNrKCkKICAgICB3aW5kb3cuY29tcGxldGVFdmVudEZpcmVkID0gdHJ1ZTsKIH0K
IAotZnVuY3Rpb24gZmluaXNoZWREZWxldGluZygpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdmVyaWZ5
UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZVN1Y2Nlc3M7Ci0g
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY3JlYXRlU3VjY2VzcygpCi17Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAg
ICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCkiKTsKLSAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKLSAgICB2YXIgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsKLX0KLQog
ZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCiB7CiAgICAgdmVyaWZ5QWJvcnRFdmVudChldmVudCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDQ2YjFmODBlNzg0NTFiYWUwOTI2OTY0Y2QxNDAxYjIyN2RhOWMzZDAuLjVjMjMyYzFiY2VjOTUw
N2I1Zjc0MWMxM2YzMWI5M2M4ZWI5Njk5ZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTAtMTAtMDQgIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZS9yZW1vdmVPYmplY3RTdG9yZSBhbmQgSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4L3JlbW92
ZUluZGV4IHNob3VsZCBiZSBzeW5jaHJvbm91cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2ODgzCisKKyAgICAgICAgTWFrZXMgdGhlIHNjaGVtYSBt
YW5pcHVsYXRpb24gbWV0aG9kcyBzeW5jaHJvbm91cy4gTW9kaWZpZXMgdGhlIHRyYW5zYWN0aW9u
CisgICAgICAgIGxvZ2ljIHRvIHN1cHBvcnQgdGFza3MgdGhhdCBtYXkgaGF2ZSBwZW5kaW5nIGV2
ZW50cyBhcyB3ZWxsIGFzIHRhc2tzIHRoYXQKKyAgICAgICAgZG9uJ3QgaGF2ZSBzdWNoIGV2ZW50
cy4KKworICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRh
YmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAqIHN0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZUludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVj
dFN0b3JlSW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6Cisg
ICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2Vu
ZEltcGw6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OnNldElk
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3Rv
cmUuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAgKiBz
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRl
eEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnJlbW92ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OnJlbW92ZUluZGV4SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNl
dElkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmF1dG9J
bmNyZW1lbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6c2NoZWR1bGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpydW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6dGFza1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICog
c3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisKIDIwMTAtMTAtMDQgIEplcmVt
eSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0
ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCA0ZDMyMjEzOGY3YjE1MzBkZWQw
YzM4NDg0ZGRjZGY1YWZlZDhhNWFmLi4wNDZlOWE5ZGM4YmVkZmM1OWNlOWM1NWVjMDg4MDMwMmZj
NzYzMTg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTU1LDI2ICs1NSwxOCBAQCB2b2lk
IElEQkRhdGFiYXNlOjpzZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFucwogICAgIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uID0gdHJhbnNh
Y3Rpb247CiB9CiAKLS8vIEZJWE1FOiBTaG91bGQgYmUgc3luY2hyb25vdXMuCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uLmdldCgpKTsKLSAgICBpZiAoIW1fc2V0VmVy
c2lvblRyYW5zYWN0aW9uKQotICAgICAgICByZXF1ZXN0LT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSLCAiY3JlYXRl
T2JqZWN0U3RvcmUgbXVzdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBzZXRWZXJzaW9uIHRyYW5z
YWN0aW9uLiIpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZC0+Y3JlYXRlT2JqZWN0U3Rv
cmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgcmVxdWVzdCwgbV9zZXRWZXJzaW9uVHJh
bnNhY3Rpb24uZ2V0KCkpOwotICAgIHJldHVybiByZXF1ZXN0OworICAgIC8vIEZJWE1FOiBSYWlz
ZSBhIE5PVF9BTExPV0VEX0VSUiBpZiBtX3NldFZlcnNpb25UcmFuc2FjdGlvbiBpcyAwLgorICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gbV9i
YWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBt
X3NldFZlcnNpb25UcmFuc2FjdGlvbi5nZXQoKSk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0
U3RvcmUucmVsZWFzZSgpLCBtX3NldFZlcnNpb25UcmFuc2FjdGlvbi5nZXQoKSk7CiB9CiAKLS8v
IEZJWE1FOiBTaG91bGQgYmUgc3luY2hyb25vdXMuCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIElEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1f
c2V0VmVyc2lvblRyYW5zYWN0aW9uLmdldCgpKTsKLSAgICBpZiAoIW1fc2V0VmVyc2lvblRyYW5z
YWN0aW9uKQotICAgICAgICByZXF1ZXN0LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSLCAicmVtb3ZlT2JqZWN0U3Rv
cmUgbXVzdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uLiIp
KTsKLSAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZC0+cmVtb3ZlT2JqZWN0U3RvcmUobmFtZSwg
cmVxdWVzdCwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJldHVybiByZXF1
ZXN0OworICAgIG1fYmFja2VuZC0+cmVtb3ZlT2JqZWN0U3RvcmUobmFtZSwgbV9zZXRWZXJzaW9u
VHJhbnNhY3Rpb24uZ2V0KCkpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFi
YXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5o
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggY2Y5NTMxN2E3ZjQzZWEwMmFi
YjFhNGE1YWFiNmZiMWI1YTBjZWJjMS4uNDM4MzdkOTdiN2ZlNWQzN2ZmOWYwNTljMjNiYzc3ZWMy
NWFkNWM1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgog
ICAgIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT52ZXJzaW9uKCk7
IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZC0+b2JqZWN0U3RvcmVzKCk7IH0KIAotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gY3JlYXRlT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoID0gU3RyaW5nKCksIGJvb2wgYXV0
b0luY3JlbWVudCA9IGZhbHNlKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZU9i
amVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwor
ICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoID0gU3RyaW5nKCksIGJvb2wgYXV0b0lu
Y3JlbWVudCA9IGZhbHNlKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBzZXRWZXJzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAgIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01T
dHJpbmdMaXN0KiBzdG9yZU5hbWVzID0gMCwgdW5zaWduZWQgc2hvcnQgbW9kZSA9IElEQlRyYW5z
YWN0aW9uOjpSRUFEX09OTFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gMCk7IC8vIEZJWE1FOiB3aGF0IHNob3VsZCB0
aGUgZGVmYXVsdCB0aW1lb3V0IGJlPwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5pZGwKaW5kZXggMzBjZGYz
MDNlNTVlNzllMmEwYzBjZTlhMWI1ODllMGRhNDY3MTQ2NS4uM2Y1NzQzN2YyODlkY2JlYjkwMGU3
YjlkMjA0NGU4Y2YwOTI3OGQ0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCkBAIC0zMiw4ICsz
Miw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB2ZXJzaW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBv
YmplY3RTdG9yZXM7CiAKLSAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IElEQlJlcXVlc3QgY3JlYXRlT2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRp
b25hbCwgQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBrZXlQYXRoLCBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gYXV0b0luY3JlbWVudCk7Ci0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHJlbW92ZU9iamVjdFN0b3JlKGluIERPTVN0cmlu
ZyBuYW1lKTsKKyAgICAgICAgSURCT2JqZWN0U3RvcmUgY3JlYXRlT2JqZWN0U3RvcmUoaW4gRE9N
U3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyBrZXlQYXRoLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0b0luY3JlbWVudCk7CisgICAg
ICAgIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBzZXRWZXJzaW9uKGlu
IERPTVN0cmluZyB2ZXJzaW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uIChpbiBbT3B0aW9uYWxdIERPTVN0cmlu
Z0xpc3Qgc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBtb2RlLCBpbiBb
T3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA0NTNmODVk
MTk4MGM1ZDE4ZDg4Nzk3OTVjMjk1ZmIyODAzODg3YjZkLi42NzY0NGIxMTQ4ZDYzNGQ2NjYzMDRh
NDI0ZGRiYzMwM2RkY2Y1OWY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwCkBAIC0xMjcsMzUgKzEyNywzOCBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlcygpIGNvbnN0CiAgICAgcmV0dXJu
IG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24p
CitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCiB7CisgICAgaWYgKG1fb2JqZWN0U3RvcmVzLmNvbnRh
aW5zKG5hbWUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaHJvdyBDT05TVFJBSU5UX0VSUiBpbiB0
aGlzIGNhc2UuCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNyZWF0ZSh0aGlzLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBBU1NF
UlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsKKyAgICBtX29iamVjdFN0b3Jlcy5zZXQo
bmFtZSwgb2JqZWN0U3RvcmUpOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+
IGRhdGFiYXNlID0gdGhpczsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRl
cm5hbCwgZGF0YWJhc2UsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIGNhbGxiYWNrcykp
KQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlIsICJjcmVhdGVPYmplY3RTdG9yZSBt
dXN0IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIHNldFZlcnNpb24gdHJhbnNhY3Rpb24uIikpOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uUHRy
ID0gdHJhbnNhY3Rpb247CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJ
bnRlcm5hbCwgZGF0YWJhc2UsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvblB0cikpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBvYmplY3RTdG9yZS5yZWxlYXNlKCk7CiB9CiAKLXZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBk
YXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRh
YmFzZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwg
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikK
IHsKLSAgICBpZiAoZGF0YWJhc2UtPm1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0g
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiQW4gb2JqZWN0U3RvcmUgd2l0aCB0aGF0
IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
U1FMaXRlU3RhdGVtZW50IGluc2VydChkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgIklOU0VS
VCBJTlRPIE9iamVjdFN0b3JlcyAobmFtZSwga2V5UGF0aCwgZG9BdXRvSW5jcmVtZW50KSBWQUxV
RVMgKD8sID8sID8pIik7CiAgICAgYm9vbCBvayA9IGluc2VydC5wcmVwYXJlKCkgPT0gU1FMUmVz
dWx0T2s7CiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9y
IGhhbmRsaW5nLgotICAgIGluc2VydC5iaW5kVGV4dCgxLCBuYW1lKTsKLSAgICBpbnNlcnQuYmlu
ZFRleHQoMiwga2V5UGF0aCk7Ci0gICAgaW5zZXJ0LmJpbmRJbnQoMywgc3RhdGljX2Nhc3Q8aW50
PihhdXRvSW5jcmVtZW50KSk7CisgICAgaW5zZXJ0LmJpbmRUZXh0KDEsIG9iamVjdFN0b3JlLT5u
YW1lKCkpOworICAgIGluc2VydC5iaW5kVGV4dCgyLCBvYmplY3RTdG9yZS0+a2V5UGF0aCgpKTsK
KyAgICBpbnNlcnQuYmluZEludCgzLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdFN0b3JlLT5hdXRv
SW5jcmVtZW50KCkpKTsKICAgICBvayA9IGluc2VydC5zdGVwKCkgPT0gU1FMUmVzdWx0RG9uZTsK
ICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxp
bmcuCiAgICAgaW50NjRfdCBpZCA9IGRhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RJbnNl
cnRSb3dJRCgpOwotCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVj
dFN0b3JlID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKGRhdGFiYXNlLmdldCgp
LCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7Ci0gICAgQVNTRVJUKG9iamVjdFN0
b3JlLT5uYW1lKCkgPT0gbmFtZSk7Ci0gICAgZGF0YWJhc2UtPm1fb2JqZWN0U3RvcmVzLnNldChu
YW1lLCBvYmplY3RTdG9yZSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mob2JqZWN0U3RvcmUu
Z2V0KCkpOworICAgIG9iamVjdFN0b3JlLT5zZXRJZChpZCk7CisgICAgdHJhbnNhY3Rpb24tPmRp
ZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCiAvLyBGSVhNRTogRG8gbm90IGV4cG9zZSB0aGlz
IG1ldGhvZCB2aWEgSURMLgpAQCAtMTc2LDI5ICsxNzksMjggQEAgc3RhdGljIHZvaWQgZG9EZWxl
dGUoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBjaGFyKiBzcWwsIGludDY0X3QgaWQpCiAgICAg
QVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgog
fQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKLXsKLSAgICBSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwotICAgIFJlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIXRyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpyZW1vdmVPYmplY3RTdG9yZUludGVybmFsLCBkYXRhYmFzZSwgbmFtZSwgY2FsbGJhY2tzKSkp
Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUiwgInJlbW92ZU9iamVjdFN0b3JlIG11
c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbi4iKSk7Ci19
Ci0KLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmVJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsPiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZW1vdmVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24pCiB7Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlID0gZGF0YWJhc2UtPm1fb2JqZWN0U3RvcmVzLmdldChuYW1lKTsKKyAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jl
cy5nZXQobmFtZSk7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkgewotICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpO
T1RfRk9VTkRfRVJSLCAiTm8gb2JqZWN0U3RvcmUgd2l0aCB0aGF0IG5hbWUgZXhpc3RzLiIpKTsK
KyAgICAgICAgLy8gRklYTUU6IFJhaXNlIE5PVF9GT1VORF9FUlIuCiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgbV9vYmplY3RTdG9yZXMucmVtb3ZlKG5hbWUpOworICAgIFJlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CisgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlvbjsKKyAg
ICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2UsIG9iamVj
dFN0b3JlLCB0cmFuc2FjdGlvblB0cikpOworICAgIC8vIEZJWE1FOiBSYWlzZSBOT1RfQUxMT1dF
RF9FUlIgaWYgdGhlIGFib3ZlIGZhaWxzLiAgICAKK30KIAordm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpyZW1vdmVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCit7CiAgICAgZG9EZWxldGUo
ZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBPYmplY3RTdG9yZXMgV0hF
UkUgaWQgPSA/Iiwgb2JqZWN0U3RvcmUtPmlkKCkpOwogICAgIGRvRGVsZXRlKGRhdGFiYXNlLT5z
cWxpdGVEYXRhYmFzZSgpLCAiREVMRVRFIEZST00gT2JqZWN0U3RvcmVEYXRhIFdIRVJFIG9iamVj
dFN0b3JlSWQgPSA/Iiwgb2JqZWN0U3RvcmUtPmlkKCkpOwogICAgIGRvRGVsZXRlKGRhdGFiYXNl
LT5zcWxpdGVEYXRhYmFzZSgpLCAiREVMRVRFIEZST00gSW5kZXhEYXRhIFdIRVJFIGluZGV4SWQg
SU4gKFNFTEVDVCBpZCBGUk9NIEluZGV4ZXMgV0hFUkUgb2JqZWN0U3RvcmVJZCA9ID8pIiwgb2Jq
ZWN0U3RvcmUtPmlkKCkpOwogICAgIGRvRGVsZXRlKGRhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgp
LCAiREVMRVRFIEZST00gSW5kZXhlcyBXSEVSRSBvYmplY3RTdG9yZUlkID0gPyIsIG9iamVjdFN0
b3JlLT5pZCgpKTsKIAotICAgIGRhdGFiYXNlLT5tX29iamVjdFN0b3Jlcy5yZW1vdmUobmFtZSk7
Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKKyAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxl
dGVUYXNrRXZlbnRzKCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVy
c2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCBi
NTc2ZmE1Yjg4YjE4ZDNiYzk3N2NmNTFjYTY3ZGFlOGZlZTAzNjI5Li4wY2I0ODNkZWVlNGY0ODNj
OGM0NzU4NmUzZDhhNzAxNmY0NzVjZTM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmpl
Y3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0
b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CkBAIC02OSw4ICs2OSw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGxvYWRPYmplY3RTdG9yZXMoKTsKIAotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVj
dFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAg
c3RhdGljIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9i
amVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+KTsKICAgICBzdGF0aWMgdm9pZCBzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogCiAgICAgT3duUHRyPFNRTGl0ZURhdGFiYXNl
PiBtX3NxbGl0ZURhdGFiYXNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oCmluZGV4IGMwMWRhZGZlY2RlZjY2MjA3NjlkOWQ4ZTQ2OTI3Y2MxYThiNTk4
MDUuLjRhNWJiNDFjYjE0NDZiZDYyOTY1YWM0YThiYjQxMGZjNmU0NmNlN2IgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU0LDkgKzU0LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0ID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
bmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWdu
ZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFj
a2VuZEltcGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmlu
ZGV4IDE4ZTI0YjIwOWRjNzBiZGJkNGQxNWRmZmI2MWQyMTU1YjRlYzBkNTcuLjc0MmMyOGVlZDIw
YzM4Yzc5Y2M3NjhkNTczYjI0ZTdhN2UyOTU3NzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhC
YWNrZW5kSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDE1IEBAIElEQkluZGV4QmFja2VuZEltcGw6OklE
QkluZGV4QmFja2VuZEltcGwoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUs
CiB7CiB9CiAKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKKyAgICA6IG1fb2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmUpCisgICAgLCBtX2lkKEludmFsaWRJZCkKKyAgICAsIG1fbmFtZShuYW1lKQorICAg
ICwgbV9rZXlQYXRoKGtleVBhdGgpCisgICAgLCBtX3VuaXF1ZSh1bmlxdWUpCit7Cit9CisKIElE
QkluZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9XZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4IDJkMDZjNjk3ZWM5OGE4ZTE4ZTdlZmVmOWE5
YTdkMThhNDg5NDQ2MjQuLmNhODcxNDgyYTg2NGMxOGEyOTNhOTc5MjRkZGM2NjVjYjYyZWU2ZDYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAtNDMsOSArNDMsMTkgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tl
bmRJbXBsKG9iamVjdFN0b3JlLCBpZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7CiAgICAgfQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKG9iamVjdFN0b3JlLCBuYW1lLCBrZXlQYXRo
LCB1bmlxdWUpKTsKKyAgICB9CiAgICAgdmlydHVhbCB+SURCSW5kZXhCYWNrZW5kSW1wbCgpOwog
Ci0gICAgaW50NjRfdCBpZCgpIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBpbnQ2NF90IGlkKCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2lkICE9IEludmFsaWRJZCk7CisgICAgICAgIHJl
dHVybiBtX2lkOworICAgIH0KKyAgICB2b2lkIHNldElkKGludDY0X3QgaWQpIHsgbV9pZCA9IGlk
OyB9CisKICAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoSURCS2V5Kik7CiAKICAgICAvLyBJbXBs
ZW1lbnRzIElEQkluZGV4QmFja2VuZEludGVyZmFjZS4KQEAgLTYzLDEyICs3MywxNSBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlKTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUpOwogCiAgICAgU1FMaXRlRGF0YWJhc2UmIHNxbGl0ZURhdGFiYXNl
KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCBvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wgb2JqZWN0Q3Vy
c29yLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgZ2V0SW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCS2V5PiwgYm9vbCBnZXRPYmplY3QsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAK
KyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAwOworCiAgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG1fb2JqZWN0U3RvcmU7CiAKICAgICBpbnQ2NF90IG1f
aWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBhODFlMTdmZmY2MWY4MjJmOTM1
MWU1MTg2MzA5ZTVlYmNlMDRjY2EwLi5jNDgxMDk5NzMzOTg0MTAyNDE2YzJmZDMzZTA4MmIyN2Fh
N2JkNzI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTkyLDExICs5MiwxMiBA
QCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpyZW1vdmUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUpCitQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlKQogewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKLSAgICBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1
bmlxdWUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJldHVybiByZXF1ZXN0
OworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RT
dG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtX3RyYW5zYWN0aW9uLmdl
dCgpKTsKKyAgICBpZiAoIWluZGV4KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSURC
SW5kZXg6OmNyZWF0ZShpbmRleC5yZWxlYXNlKCksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogfQog
CiBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lKQpAQCAtMTA4LDExICsxMDksOSBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmpl
Y3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBJREJJbmRleDo6
Y3JlYXRlKGluZGV4LnJlbGVhc2UoKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnJlbW92ZUluZGV4KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgSURCT2JqZWN0
U3RvcmU6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9vYmplY3RTdG9yZS0+cmVt
b3ZlSW5kZXgobmFtZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgcmV0dXJu
IHJlcXVlc3Q7CisgICAgbV9vYmplY3RTdG9yZS0+cmVtb3ZlSW5kZXgobmFtZSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmgKaW5kZXggZGY1YjNmNzUwYjlkNjI2OGNmNzIwOWI3MjkxODU4MjY5OWRhNGZi
Mi4uYTE3M2I2OGE1N2VhNzJhMDM0NmU1ODNkOTZmMGMxYWEzM2M0YTQ4ZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmgKQEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gcHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkgPSAwKTsKICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSk7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNy
ZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUgPSBmYWxzZSk7CisgICAgUGFzc1JlZlB0
cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlID0gZmFsc2UpOwogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+
IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBy
ZW1vdmVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
KyAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+ID0gMCwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vy
c29yOjpORVhUKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXggYzhhYTM1ZDI4
MGMwNzJkNmIxYWUxM2JjYWUxMjhmMGJjMDU4NDlhYy4uZWYzYWFkODVhYWY4Njg5YzNjOWMzYTc3
YTY0NGVhZGNlOTI1OWM0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC0zNyw5
ICszNywxMiBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGFkZChpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdmFs
dWUsIGluIFtPcHRpb25hbF0gSURCS2V5IGtleSk7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHB1dChpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUg
dmFsdWUsIGluIFtPcHRpb25hbF0gSURCS2V5IGtleSk7CiAgICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHJlbW92ZShpbiBJREJLZXkga2V5KTsKLSAg
ICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgY3JlYXRl
SW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9N
U3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1bmlxdWUpOworICAgICAgICAv
LyBGSVhNRTogd3JpdGUgb3BlbkN1cnNvcgorICAgICAgICBJREJJbmRleCBjcmVhdGVJbmRleChp
biBET01TdHJpbmcgbmFtZSwgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcg
a2V5UGF0aCwgaW4gW09wdGlvbmFsXSBib29sZWFuIHVuaXF1ZSk7CisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIG5lZWRzIHRvIHJhaXNlIGFuIElEQkRhdGFiYXNlRXhjZXB0aW9uIG9uIGVycm9ycy4K
ICAgICAgICAgSURCSW5kZXggaW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUpOwotICAgICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCByZW1vdmVJbmRleChpbiBE
T01TdHJpbmcgbmFtZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlSW5kZXgoaW4gRE9NU3RyaW5nIG5h
bWUpOworCiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1
ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwgaW4gW09wdGlv
bmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggNTBhMmRlYzI3Y2U5NzM1
ZDIzMDhjZTZiZjYzYTJmNzg1OTI0ZTg3Zi4uY2ZkOGE5NWZkZmM2ZjU1M2I2ZjcyMWIyYWI2M2Nj
NTIwNDRjNDk5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcApAQCAtNjIsNiArNjIsMTUgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXQKICAgICBs
b2FkSW5kZXhlcygpOwogfQogCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsKElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQor
ICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKKyAgICAsIG1faWQoSW52YWxpZElkKQorICAgICwg
bV9uYW1lKG5hbWUpCisgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKKyAgICAsIG1fYXV0b0luY3Jl
bWVudChhdXRvSW5jcmVtZW50KQoreworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CkBA
IC0yNTQsMzYgKzI2MywzOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92
ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUAogICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKKyAgICBpZiAobV9p
bmRleGVzLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBSYWlzZSBDT05TVFJB
SU5UX0VSUi4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPElEQkluZGV4
QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKHRoaXMsIG5h
bWUsIGtleVBhdGgsIHVuaXF1ZSk7CisgICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7
CisgICAgbV9pbmRleGVzLnNldChuYW1lLCBpbmRleCk7CisKICAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwotICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpjcmVhdGVJbmRleEludGVybmFsLCBvYmplY3RTdG9yZSwgbmFtZSwga2V5UGF0aCwgdW5pcXVl
LCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSLCAiY3JlYXRl
SW5kZXggbXVzdCBiZSBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgYSB0cmFuc2FjdGlvbi4iKSk7
CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25Q
dHIgPSB0cmFuc2FjdGlvbjsKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleElu
dGVybmFsLCBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uKSkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKIHsKLSAgICBpZiAob2JqZWN0U3RvcmUtPm1f
aW5kZXhlcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VS
UiwgIkluZGV4IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgU1FMaXRlU3RhdGVtZW50IGluc2VydChvYmplY3RTdG9yZS0+c3FsaXRlRGF0YWJh
c2UoKSwgIklOU0VSVCBJTlRPIEluZGV4ZXMgKG9iamVjdFN0b3JlSWQsIG5hbWUsIGtleVBhdGgs
IGlzVW5pcXVlKSBWQUxVRVMgKD8sID8sID8sID8pIik7CiAgICAgYm9vbCBvayA9IGluc2VydC5w
cmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7CiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBG
SVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgogICAgIGluc2VydC5iaW5kSW50NjQoMSwgb2Jq
ZWN0U3RvcmUtPm1faWQpOwotICAgIGluc2VydC5iaW5kVGV4dCgyLCBuYW1lKTsKLSAgICBpbnNl
cnQuYmluZFRleHQoMywga2V5UGF0aCk7Ci0gICAgaW5zZXJ0LmJpbmRJbnQoNCwgc3RhdGljX2Nh
c3Q8aW50Pih1bmlxdWUpKTsKKyAgICBpbnNlcnQuYmluZFRleHQoMiwgaW5kZXgtPm5hbWUoKSk7
CisgICAgaW5zZXJ0LmJpbmRUZXh0KDMsIGluZGV4LT5rZXlQYXRoKCkpOworICAgIGluc2VydC5i
aW5kSW50KDQsIHN0YXRpY19jYXN0PGludD4oaW5kZXgtPnVuaXF1ZSgpKSk7CiAgICAgb2sgPSBp
bnNlcnQuc3RlcCgpID09IFNRTFJlc3VsdERvbmU7CiAgICAgQVNTRVJUX1VOVVNFRChvaywgb2sp
OyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgogICAgIGludDY0X3QgaWQgPSBvYmpl
Y3RTdG9yZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0SW5zZXJ0Um93SUQoKTsKLQotICAgIFJlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0
ZShvYmplY3RTdG9yZS5nZXQoKSwgaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSk7Ci0gICAgQVNT
RVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7Ci0gICAgb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5z
ZXQobmFtZSwgaW5kZXgpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGluZGV4LmdldCgpKTsK
KyAgICBpbmRleC0+c2V0SWQoaWQpOworICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tF
dmVudHMoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTMwMSwy
NyArMzEzLDI2IEBAIHN0YXRpYyB2b2lkIGRvRGVsZXRlKFNRTGl0ZURhdGFiYXNlJiBkYiwgY29u
c3QgY2hhciogc3FsLCBpbnQ2NF90IGlkKQogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8g
RklYTUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24pCi17Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlID0gdGhpczsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5kZXhJbnRlcm5h
bCwgb2JqZWN0U3RvcmUsIG5hbWUsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1Rf
QUxMT1dFRF9FUlIsICJjcmVhdGVJbmRleCBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgY29udGV4dCBv
ZiBhIHRyYW5zYWN0aW9uLiIpKTsKLX0KLQotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpyZW1vdmVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKLSAgICBSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmdldChuYW1lKTsK
KyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KG5h
bWUpOwogICAgIGlmICghaW5kZXgpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwg
IkluZGV4IG5hbWUgZG9lcyBub3QgZXhpc3QuIikpOworICAgICAgICAvLyBGSVhNRTogUmFpc2Ug
Tk9UX0ZPVU5EX0VSUi4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBtX2luZGV4ZXMucmVt
b3ZlKG5hbWUpOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RT
dG9yZSA9IHRoaXM7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlvbjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3Zl
SW5kZXhJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGluZGV4LCB0cmFuc2FjdGlvblB0cikpOworICAg
IC8vIEZJWE1FOiBSYWlzZSBOT1RfQUxMT1dFRF9FUlIgaWYgdGhlIGFib3ZlIHN0YXRlbWVudCBm
YWlscy4KK30KIAordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJbmRleElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
IGluZGV4LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNh
Y3Rpb24pCit7CiAgICAgZG9EZWxldGUob2JqZWN0U3RvcmUtPnNxbGl0ZURhdGFiYXNlKCksICJE
RUxFVEUgRlJPTSBJbmRleGVzIFdIRVJFIGlkID0gPyIsIGluZGV4LT5pZCgpKTsKICAgICBkb0Rl
bGV0ZShvYmplY3RTdG9yZS0+c3FsaXRlRGF0YWJhc2UoKSwgIkRFTEVURSBGUk9NIEluZGV4RGF0
YSBXSEVSRSBpbmRleElkID0gPyIsIGluZGV4LT5pZCgpKTsKIAotICAgIG9iamVjdFN0b3JlLT5t
X2luZGV4ZXMucmVtb3ZlKG5hbWUpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CisgICAg
dHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCiB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJw
UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
blB0cikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4
IGVkOTk0ZmI0OWZlM2EwZWRlYjY2Y2I4YmY1ZjkxZjJhNjU3MDUwMzEuLjc0ZmMwZGRhOTdlYTZl
ZjFjYjFiYTlmZWVlZjlkZTk0YzMyYjg5M2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaApAQCAtNDYsMjAgKzQ2LDMwIEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChkYXRh
YmFzZSwgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkRhdGFi
YXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGRhdGFiYXNlLCBuYW1lLCBrZXlQ
YXRoLCBhdXRvSW5jcmVtZW50KSk7CisgICAgfQogICAgIH5JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKCk7CiAKLSAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIGlu
dDY0X3QgaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faWQgIT0gSW52YWxpZElk
KTsKKyAgICAgICAgcmV0dXJuIG1faWQ7CisgICAgfQorICAgIHZvaWQgc2V0SWQoaW50NjRfdCBp
ZCkgeyBtX2lkID0gaWQ7IH0KICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CiAg
ICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CisgICAgYm9v
bCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9hdXRvSW5jcmVtZW50OyB9CiAKICAg
ICB2b2lkIGdldChQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZvaWQgcHV0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgYm9vbCBhZGRPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSopOwogICAgIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CiAKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqKTsKICAgICBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqKTsKKyAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAKICAgICB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKIApAQCAt
NjcsNiArNzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7CisgICAg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7
CiAKICAgICB2b2lkIGxvYWRJbmRleGVzKCk7CiAgICAgU1FMaXRlRGF0YWJhc2UmIHNxbGl0ZURh
dGFiYXNlKCkgY29uc3Q7CkBAIC03NCwxMCArODUsMTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBwdXRJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBib29sIGFkZE9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgc3RhdGlj
IHZvaWQgcmVtb3ZlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlSW5kZXhJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHN0YXRpYyB2b2lkIHJlbW92
ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVJbmRleEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZGV4SW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4sIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvcklu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJ
bnZhbGlkSWQgPSAwOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0
YWJhc2U7CiAKICAgICBpbnQ2NF90IG1faWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNTNhZGU2Mjg3MmRjN2Y2MjNiNjI5ZGYz
ZTM3ZDY1NjJmOGY2NTIzMi4uNmQ5ZmNiOGNkMjZmOWUzYTVkNzI1ZGFjOWFlNjYzYjg4MmViOWM0
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UuaApAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgYm9vbCBh
ZGRPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1
cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSop
ID0gMDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHAKaW5kZXggMzJhN2Q3MGMzNTRmMTI5MmQ1MWYxMjZjZTc2NTNmNzU0NGMxNTcyYy4uMGFkNzdm
Nzk5ZDkxZmQxMjZlOTk4YTFlNDliZTgyNzIzYjAyMzg3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtNDcsMjEgKzQ3LDIyIEBAIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoRE9NU3RyaW5n
TGlzdCogb2JqZWN0U3RvcmVzCiAgICAgLCBtX3N0YXRlKFVudXNlZCkKICAgICAsIG1fZGF0YWJh
c2UoZGF0YWJhc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKG5ldyBTUUxpdGVUcmFuc2FjdGlvbihk
YXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSkpCi0gICAgLCBtX3RpbWVyKHRoaXMsICZJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjp0aW1lckZpcmVkKQorICAgICwgbV90YXNrVGltZXIodGhpcywg
JklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKQorICAgICwgbV90YXNr
RXZlbnRUaW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGlt
ZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ0V2ZW50cygwKQogewogfQogCiBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChpc0ZpbmlzaGVkKCkp
CisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJl
dHVybiBtX2RhdGFiYXNlLT5vYmplY3RTdG9yZShuYW1lLCAwKTsgLy8gRklYTUU6IHJlbW92ZSBt
b2RlIHBhcmFtLgogfQogCiBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxl
VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7Ci0g
ICAgaWYgKGlzRmluaXNoZWQoKSkKKyAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV90YXNrUXVldWUuYXBwZW5kKHRhc2spOwpAQCAtNzMs
MTEgKzc0LDEyIEBAIGJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNr
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6YWJvcnQoKQogewotICAgIGlmIChpc0ZpbmlzaGVkKCkpCisgICAgaWYg
KG1fc3RhdGUgPT0gRmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc3RhdGUgPSBG
aW5pc2hlZDsKLSAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX3Rhc2tUaW1lci5zdG9wKCk7Cisg
ICAgbV90YXNrRXZlbnRUaW1lci5zdG9wKCk7CiAgICAgbV90cmFuc2FjdGlvbi0+cm9sbGJhY2so
KTsKICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydCgpOwogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJhbnNhY3Rpb24odGhpcyk7CkBAIC05MCwyOSAr
OTIsMTggQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkaWRDb21wbGV0ZVRhc2tF
dmVudHMoKQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7CiAgICAgQVNTRVJUKG1f
cGVuZGluZ0V2ZW50cyk7Ci0KICAgICBtX3BlbmRpbmdFdmVudHMtLTsKIAotICAgIGlmICghbV9w
ZW5kaW5nRXZlbnRzICYmIG1fdGFza1F1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBUaGUg
bGFzdCB0YXNrIGV2ZW50IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0YXNrCi0gICAgICAgIC8vIHF1
ZXVlIGlzIGVtcHR5LiBDb21taXQgdGhlIHRyYW5zYWN0aW9uLgotICAgICAgICBjb21taXQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlIGFyZSBzdGlsbCB3YWl0aW5nIGZv
ciBvdGhlciBldmVudHMgdG8gY29tcGxldGUuIEhvd2V2ZXIsCi0gICAgLy8gdGhlIHRhc2sgcXVl
dWUgaXMgbm9uLWVtcHR5IGFuZCB0aGUgdGltZXIgaXMgaW5hY3RpdmUuCi0gICAgLy8gV2UgY2Fu
IHRoZXJmb3JlIHNjaGVkdWxlIHRoZSB0aW1lciBhZ2Fpbi4KLSAgICBpZiAoIW1fdGFza1F1ZXVl
LmlzRW1wdHkoKSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKKyAgICBpZiAoIW1fdGFza0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAg
ICAgbV90YXNrRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6cnVuKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGFydFBl
bmRpbmcgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICBBU1NFUlQoIW1fdGltZXIuaXNBY3Rp
dmUoKSk7CisgICAgQVNTRVJUKCFtX3Rhc2tUaW1lci5pc0FjdGl2ZSgpKTsKIAotICAgIG1fdGlt
ZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0K
IAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzdGFydCgpCkBAIC0xMzMsNyArMTI0
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogICAgIG1fZGF0
YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJhbnNhY3Rpb24odGhp
cyk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGltZXJGaXJlZChUaW1l
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OnRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KikK
IHsKICAgICBBU1NFUlQoIW1fdGFza1F1ZXVlLmlzRW1wdHkoKSk7CiAKQEAgLTE1Myw2ICsxNDQs
MjQgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0aW1lckZpcmVkKFRpbWVyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KikKICAgICB9CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiopCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7CisKKyAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50cyAmJiBtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Ly8gVGhlIGxhc3QgdGFzayBldmVudCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGFzaworICAgICAg
ICAvLyBxdWV1ZSBpcyBlbXB0eS4gQ29tbWl0IHRoZSB0cmFuc2FjdGlvbi4KKyAgICAgICAgY29t
bWl0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBhcmUgc3RpbGwgd2Fp
dGluZyBmb3Igb3RoZXIgZXZlbnRzIHRvIGNvbXBsZXRlLiBIb3dldmVyLAorICAgIC8vIHRoZSB0
YXNrIHF1ZXVlIGlzIG5vbi1lbXB0eSBhbmQgdGhlIHRpbWVyIGlzIGluYWN0aXZlLgorICAgIC8v
IFdlIGNhbiB0aGVyZm9yZSBzY2hlZHVsZSB0aGUgdGltZXIgYWdhaW4uCisgICAgaWYgKCFtX3Rh
c2tRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1f
dGFza1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmgKaW5kZXggMDlhNmExYzZkN2UyMTAyNjJjMmIwZGNkYWFlZDkyODQ1MTc0MzlmOC4uY2Y0
MGViYTdjMTg4NWVlZDM2YTM1NDM1MTVhOGUyODRhNTY2YzNiYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3Jh
Z2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKiBj
YWxsYmFja3MpIHsgbV9jYWxsYmFja3MgPSBjYWxsYmFja3M7IH0KIAogICAgIHZvaWQgcnVuKCk7
Ci0gICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBGaW5pc2hl
ZDsgfQogCiBwcml2YXRlOgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoRE9NU3RyaW5n
TGlzdCogb2JqZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRp
bWVvdXQsIGludCBpZCwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOwpAQCAtNjksNyArNjgsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNvbW1pdCgpOwogCi0gICAg
dm9pZCB0aW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+Kik7CisgICAg
dm9pZCB0YXNrVGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopOwor
ICAgIHZvaWQgdGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiopOwogCiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG1fb2JqZWN0U3RvcmVOYW1lczsK
ICAgICB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CkBAIC04Niw3ICs4Niw4IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPFNRTGl0ZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiAgICAgLy8gRklY
TUU6IGRlbGV0ZSB0aGUgdGltZXIgb25jZSB3ZSBoYXZlIHRocmVhZHMgaW5zdGVhZC4KLSAgICBU
aW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBtX3RpbWVyOworICAgIFRpbWVyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IG1fdGFza1RpbWVyOworICAgIFRpbWVyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IG1fdGFza0V2ZW50VGltZXI7CiAgICAgaW50IG1fcGVuZGluZ0V2ZW50
czsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBlOTQ1NzgxOGQ0NGExNjIyOWJiNmFiZjVjMzJiZDFh
MjI4NmVlMTguLmE4MDIzODVlZTFkMDU4ZDVlZjU1YzQ0NjMzMGQ0ZWJiYWU1OGJjNjYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTEwLTA0ICBBbmRyZWkgUG9wZXNjdSAgPGFu
ZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUvcmVtb3ZlT2JqZWN0U3Rv
cmUgYW5kIElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleC9yZW1vdmVJbmRleCBzaG91bGQgYmUg
c3luY2hyb25vdXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00Njg4MworCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICogcHVi
bGljL1dlYklEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpy
ZW1vdmVJbmRleCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAqIHNyYy9JREJEYXRhYmFzZVByb3h5Lmg6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3Jl
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRl
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3ZlSW5k
ZXgpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZVByb3h5Lmg6CisgICAgICAgICogc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNl
SW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFz
ZUltcGw6OnJlbW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBz
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisKIDIwMTAtMTAtMDQgIEplcmVteSBPcmxvdyAg
PGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4u
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggOGM0YjQ3MDNmNTA2
MjdiZWVkMmM4ZDg0Y2I2MzBiYTc5ZDg0YWI1OS4uZmUwN2FjODI2YTZkY2I2MGZlMjA1ZGE0MjVm
MjJlZDAwYzM2YTFjMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApA
QCAtNjEsMTggKzYxLDIzIEBAIHB1YmxpYzoKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nTGlzdCgpOwogICAgIH0KKwogICAg
IC8vIEZJWE1FOiBSZW1vdmUgb25jZSB3ZSB1cGRhdGUgQ2hyb21pdW0gc2lkZS4KICAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwg
V2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJikKKyAgICB7IAorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICAvLyBUcmFuc2ZlcnMgb3duZXJz
aGlwIG9mIHRoZSBXZWJJREJPYmplY3RTdG9yZSB0byB0aGUgY2FsbGVyLgogICAgIHZpcnR1YWwg
V2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5z
aWduZWQgc2hvcnQgbW9kZSkKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgb25j
ZSB3ZSB1cGRhdGUgQ2hyb21pdW0gc2lkZS4KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIFdl
YktpdCByb2xsLgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCVHJhbnNhY3Rpb24gdG8gdGhl
IGNhbGxlci4KICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25z
dCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQg
bG9uZyB0aW1lb3V0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJP
YmplY3RTdG9yZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5o
CmluZGV4IGUxNTdlOTU0YTdjMGUzYWM5MDkzNzQ5ZTcyOGYzOGE1OGMyNDYyNmUuLjI0YTQzMmUx
ZjgzMWY2MjY3MTc4MjkxMjliNzQwMGIyNWI2NjUyMTcgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQk9iamVjdFN0b3JlLmgKQEAgLTYzLDcgKzYzLDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugd2UgdXBkYXRlIENocm9taXVtIHNpZGUuCiAgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViSURCQ2FsbGJhY2tzKikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpCisgICAgeworICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICAvLyBU
cmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBXZWJJREJJbmRleCB0byB0aGUgY2FsbGVyLgogICAg
IHZpcnR1YWwgV2ViSURCSW5kZXgqIGluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKICAgICB7
CkBAIC03Miw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSBv
bmNlIHdlIHVwZGF0ZSBDaHJvbWl1bSBzaWRlLgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRl
eChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1
cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2Vi
SURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIC8vIEZJWE1FOiBmaW5pc2guCiB9OwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKaW5kZXggNTY0ZmRkYjZlNmFiOGZmMmY0NmU0ODQ0
MmQ1NzhmOWJhNDY3NGU1Yi4uMWRlYzE4YTQ5Y2E3MTk5MDk4NGJkMmE2NDMwYWZjNjQ2YzQxNzA0
NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCkBAIC03NiwxMiAr
NzYsMTUgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZVByb3h5OjpvYmpl
Y3RTdG9yZXMoKSBjb25zdAogICAgIHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT5vYmplY3RTdG9y
ZXMoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZVByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCiB7CiAgICAgLy8gVGhl
IHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBw
cm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKICAgICAvLyBhbGwgaW1wbGVtZW50YXRp
b25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgogICAgIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+
Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRy
YW5zYWN0aW9uKCkpOworICAgIFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3Jl
ID0gbV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0
b0luY3JlbWVudCwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCkpOwor
ICAgIGlmICghb2JqZWN0U3RvcmUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBJREJP
YmplY3RTdG9yZVByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOwogfQogCiBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VQcm94eTo6b2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQpAQCAtOTIsMTIgKzk1
LDEyIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRh
YmFzZVByb3h5OjpvYmplY3RTdG9yZShjb25zdCBTCiAgICAgcmV0dXJuIElEQk9iamVjdFN0b3Jl
UHJveHk6OmNyZWF0ZShvYmplY3RTdG9yZSk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6
cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uKQordm9pZCBJREJEYXRhYmFzZVByb3h5OjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCiB7
CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBv
aW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKICAgICAvLyBhbGwg
aW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgogICAg
IElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nh
c3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7Ci0gICAgbV93ZWJJ
REJEYXRhYmFzZS0+cmVtb3ZlT2JqZWN0U3RvcmUobmFtZSwgbmV3IFdlYklEQkNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCkp
OworICAgIG1fd2ViSURCRGF0YWJhc2UtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsICp0cmFuc2Fj
dGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKIH0KIAogdm9pZCBJREJEYXRhYmFz
ZVByb3h5OjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgK
aW5kZXggZWFlZWIyN2I1NWIzMzc2ODZmNGM5MjNmMTQ5MTRjM2Y3NjE0OTJmYS4uMTQ5NGVmMGQz
ODU4NTg1OGVkNjNlM2Q5ZTExZGNmNTIwMTc4OGZkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZVByb3h5LmgKQEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3Ry
aW5nIHZlcnNpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gb2JqZWN0U3RvcmVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVk
IHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJv
eHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcAppbmRl
eCA2OWFhOGNhODk1MDUwZDUxZTcyMmJhMmU1YmI0OThhNTA4YWE5ZmE3Li5hMDA5YWE4MGZkNDUw
Y2M3NDdmODM3NmViMjg0MTQ2MzkzMTA4YjBmIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
T2JqZWN0U3RvcmVQcm94eS5jcHAKQEAgLTk2LDEyICs5NiwxNSBAQCB2b2lkIElEQk9iamVjdFN0
b3JlUHJveHk6OnJlbW92ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcwogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPnJlbW92ZShrZXksIG5ldyBXZWJJREJD
YWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFu
c2FjdGlvbigpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24pCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFj
ZT4gSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVy
IGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0
aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNl
cyBhcmUgcHJveHkgb2JqZWN0cy4KICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJh
bnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4o
dHJhbnNhY3Rpb24pOwotICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUs
IGtleVBhdGgsIHVuaXF1ZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRy
YW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCkpOworICAgIFdlYktpdDo6V2Vi
SURCSW5kZXgqIGluZGV4ID0gbV93ZWJJREJPYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwg
a2V5UGF0aCwgdW5pcXVlLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24o
KSk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQklu
ZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoaW5kZXgpOwogfQogCiBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVQcm94eTo6aW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lKQpAQCAtMTEyLDEyICsxMTUsMTIgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IElEQk9iamVjdFN0b3JlUHJveHk6OmluZGV4KGNvbnN0IFN0cmluZyYgbmEKICAg
ICByZXR1cm4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleCk7CiB9CiAKLXZvaWQg
SURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uKQordm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpyZW1vdmVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24pCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwK
ICAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBv
YmplY3RzLgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5
ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7
Ci0gICAgbV93ZWJJREJPYmplY3RTdG9yZS0+cmVtb3ZlSW5kZXgobmFtZSwgbmV3IFdlYklEQkNh
bGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5z
YWN0aW9uKCkpOworICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsICp0
cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpKTsKIH0KIAogdm9pZCBJREJP
YmplY3RTdG9yZVByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5oCmluZGV4IDgwZTQ2NjhjNWVkMDVh
OTAxMmU5ZWFiOWYwZTdlMTU3OTBhYzc4YTQuLjg2YjljNjgzMTA4OWFjMTExMzEzZTRhMmI1ZWRl
OTVhMDE1ZTc0ODEgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3Rv
cmVQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5o
CkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0KFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBib29sIGFkZE9u
bHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlbW92ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSopOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5jcHAKaW5kZXggYWJlNmZiZDA4MTdkNjE5NWUwYTlmYzBkOTg4NDdkMWMzMWQ1NGQ3
Ni4uYzhkODFkNjA2ZWMyNjE3OGI5NWY5MDM2OTVlNTcxNDM5YWJjZTIzNyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtNjksOSArNjksMTIgQEAgV2Vi
RE9NU3RyaW5nTGlzdCBXZWJJREJEYXRhYmFzZUltcGw6Om9iamVjdFN0b3JlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5vYmplY3RTdG9yZXMoKTsKIH0KIAotdm9pZCBX
ZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYklEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24p
CitXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0g
ICAgbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgdHJhbnNh
Y3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOworICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUJh
Y2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHRy
YW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKKyAgICBpZiAo
IW9iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdlYklEQk9i
amVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7CiB9CiAKIFdlYklEQk9iamVjdFN0b3JlKiBXZWJJ
REJEYXRhYmFzZUltcGw6Om9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5zaWdu
ZWQgc2hvcnQgbW9kZSkKQEAgLTgyLDkgKzg1LDkgQEAgV2ViSURCT2JqZWN0U3RvcmUqIFdlYklE
QkRhdGFiYXNlSW1wbDo6b2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCB1bnNpZ24K
ICAgICByZXR1cm4gbmV3IFdlYklEQk9iamVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7CiB9CiAK
LXZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6cmVtb3ZlT2JqZWN0
U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24pCiB7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPnJlbW92ZU9iamVjdFN0b3JlKG5h
bWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgdHJhbnNhY3Rpb24uZ2V0
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOworICAgIG1fZGF0YWJhc2VCYWNrZW5k
LT5yZW1vdmVPYmplY3RTdG9yZShuYW1lLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UoKSk7CiB9CiAKIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpzZXRWZXJz
aW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Mp
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCAyMjc0ZTQ4Y2Zk
NTk4MDU1YTMzMTdkNTg2ODQ0ZmM0ZDFlNmJkOGI5Li44ZTM2MGRhYjA2YzQxYjEwYWNiMzBiM2U4
YjcyMGE1NTVkNDU3ZGQxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmgKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNp
b24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVzKCkg
Y29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwg
V2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7Cisg
ICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1v
ZGUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlv
biYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZl
cnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cyk7CiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2Vi
RE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcg
dGltZW91dCk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggM2NmN2YyNTc5ZWE3Mzk2Y2U1MmEx
ZjkwNGQzNDQ3MGIwY2VlMWEzZi4uOWZiN2FiNjg3NTg0YzZhNmMzNGNjZGQ0ZjI0Mjc4NGNhMTQ2
NzQ1NSAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNw
cApAQCAtODEsOSArODEsMTIgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OnJlbW92ZShj
b25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmEKICAgICBtX29iamVj
dFN0b3JlLT5yZW1vdmUoa2V5LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyks
IHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKIH0KIAot
dm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK1dl
YklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIG1fb2JqZWN0U3RvcmUtPmNy
ZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShjYWxsYmFja3MpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSk7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29i
amVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIHRyYW5zYWN0aW9u
LmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKKyAgICBpZiAoIWluZGV4KQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1wbChpbmRleCk7
CiB9CiAKIFdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmluZGV4KGNvbnN0IFdl
YlN0cmluZyYgbmFtZSkKQEAgLTk0LDkgKzk3LDkgQEAgV2ViSURCSW5kZXgqIFdlYklEQk9iamVj
dFN0b3JlSW1wbDo6aW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBuZXcg
V2ViSURCSW5kZXhJbXBsKGluZGV4KTsKIH0KIAotdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6
OnJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3ZvaWQgV2ViSURC
T2JqZWN0U3RvcmVJbXBsOjpyZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX29iamVjdFN0b3JlLT5y
ZW1vdmVJbmRleChuYW1lLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIHRy
YW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKKyAgICBtX29i
amVjdFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UoKSk7CiB9CiAKIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpv
cGVuQ3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmgKaW5kZXggNzZlNDE0YjVjM2VmNTNjMWY3ZGE4MGUxOWZmZWYyOTQyNGE0N2VkZC4u
ZWUxZWMwYmU2ZjVhMzQ2NGVkMTAyNzExY2I4MzQ2YWMzNDgzODE3MiAxMDA3NTUKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC01MSw5ICs1MSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHB1dChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBX
ZWJJREJLZXkmIGtleSwgYm9vbCBhZGRPbmx5LCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYklEQktleSYga2V5LCBX
ZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpOwogCi0gICAgdm9pZCBj
cmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0
aCwgYm9vbCB1bmlxdWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
Jik7CisgICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mKTsKICAgICBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsK
LSAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUluZGV4KGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKIAogICAgIHZv
aWQgb3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKIAo=
</data>
<flag name="review"
          id="59469"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>