<?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>59234</bug_id>
          
          <creation_ts>2011-04-22 14:31:12 -0700</creation_ts>
          <short_desc>CrossThreadCopier should not have a default specialization for raw pointers</short_desc>
          <delta_ts>2011-04-28 00:15:07 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dslomov</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391071</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-22 14:31:12 -0700</bug_when>
    <thetext>Raw pointers are dangerous to pass cross-thread. Special annotations should be required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391082</commentid>
    <comment_count>1</comment_count>
      <attachid>90764</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-22 14:40:47 -0700</bug_when>
    <thetext>Created attachment 90764
Proposed patch

Proposed patch - let me know what you think.
As a minimum, we should give a good thought to the names (AllowCrossThreadAccess and AllowExtendedLifetime).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391684</commentid>
    <comment_count>2</comment_count>
      <attachid>90764</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-24 22:28:35 -0700</bug_when>
    <thetext>Comment on attachment 90764
Proposed patch

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

In general, I think this is a great change!

 I think we should think about the names a bit more.

Also putting the extended life time stuff into the CrossThreadCopier.h doesn&apos;t quite fit with theme of that file.

Some other minor comments below.

&gt; Source/WebCore/ChangeLog:4
&gt; +

Bug title should be here.

&gt; Source/WebCore/fileapi/FileStreamProxy.cpp:140
&gt; +    fileThread()-&gt;postTask(

Please undo this change since nothing is being done here except reformatting.

&gt; Source/WebCore/fileapi/FileStreamProxy.cpp:153
&gt; +    fileThread()-&gt;postTask(

Ditto.

&gt; Source/WebCore/fileapi/FileStreamProxy.cpp:166
&gt; +    fileThread()-&gt;postTask(

Ditto.

&gt; Source/WebCore/fileapi/FileStreamProxy.cpp:204
&gt; +        createFileThreadTask(this,

Ditto.

&gt; Source/WebCore/fileapi/FileStreamProxy.cpp:223
&gt; +        createFileThreadTask(this,

Ditto.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:90
&gt; +          createCallbackTask(&amp;IDBObjectStoreBackendImpl::getInternal,

Ditto.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:139
&gt; +            createCallbackTask(&amp;IDBObjectStoreBackendImpl::putInternal,

Ditto.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:289
&gt; +            createCallbackTask(&amp;IDBObjectStoreBackendImpl::deleteInternal,

Ditto.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:325
&gt; +              createCallbackTask(&amp;IDBObjectStoreBackendImpl::clearInternal,

Ditto and many other places. (I&apos;m tired of putting in ditto :) ).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391797</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-25 09:51:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 90764 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90764&amp;action=review
&gt; 
&gt; In general, I think this is a great change!
&gt; 
&gt;  I think we should think about the names a bit more.
&gt; 
&gt; Also putting the extended life time stuff into the CrossThreadCopier.h doesn&apos;t quite fit with theme of that file.

The real problem is not that we have something related to extended lifetime in CrossThreadCopier, but the fact that CrossThreadCopier is required where no cross-thread communication happen! 

Viz, in FileReader and in SQLCallbackWrapper, the posted tasks are guaranteed to execute on the _same_ thread, and implementation throughout relies on this fact heavily (mutates objects without any synchronization). If we statically type our threading assumptions, we should distinguish between true cross-thread (i.e. parallel) access and &quot;co-routine style&quot; access. I think they should be different kinds of CallbackTasks, coroutine one just passing everything via RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391798</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-25 09:51:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 90764 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90764&amp;action=review
&gt; 
&gt; In general, I think this is a great change!
&gt; 
&gt;  I think we should think about the names a bit more.
&gt; 
&gt; Also putting the extended life time stuff into the CrossThreadCopier.h doesn&apos;t quite fit with theme of that file.

The real problem is not that we have something related to extended lifetime in CrossThreadCopier, but the fact that CrossThreadCopier is required where no cross-thread communication happen! 

Viz, in FileReader and in SQLCallbackWrapper, the posted tasks are guaranteed to execute on the _same_ thread, and implementation throughout relies on this fact heavily (mutates objects without any synchronization). If we statically type our threading assumptions, we should distinguish between true cross-thread (i.e. parallel) access and &quot;co-routine style&quot; access. I think they should be different kinds of CallbackTasks, coroutine one just passing everything via RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391828</commentid>
    <comment_count>5</comment_count>
      <attachid>90930</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-25 10:44:46 -0700</bug_when>
    <thetext>Created attachment 90930
Proposed patch: second iteration

Code review feedback addressed.

There is one real (and quite horrible) issue that this patch uncovered - direct your attention to changes in  IDBObjectStoreBackendImpl.cpp.
In two places, the code created a 
   RefPtr&lt;Transaction&gt; transactionPtr = transaction;
where transaction is Transaction*, but then passed a transaction, and not a transactionPtr, to a scheduled task. Why this does not die a horrible death I have no idea.
I would venture a suggestion that, besides a lax implementation of CrossThreadCopier, a horrendous line length that pushed arguments to scheduleTask way beyond an editor view port, was a contributing factor to this bug.

On a subject of AllowExtendedLifetime: my suggestion would be - let us keep AllowExtendedLifetime as an eyesore - it is something that should not be there. ScriptExecutionContext should have a special method that only schedules tasks on current thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391829</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-25 10:46:23 -0700</bug_when>
    <thetext>Attachment 90930 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:320:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391832</commentid>
    <comment_count>7</comment_count>
      <attachid>90931</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-25 10:49:47 -0700</bug_when>
    <thetext>Created attachment 90931
Style issues fixed

Style issues fixed, but check previous patch for extra comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393013</commentid>
    <comment_count>8</comment_count>
      <attachid>90931</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-26 16:30:51 -0700</bug_when>
    <thetext>Comment on attachment 90931
Style issues fixed

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

&gt; Source/WebCore/fileapi/FileReader.cpp:133
&gt; +        scriptExecutionContext()-&gt;postTask(
&gt; +            createCallbackTask(&amp;delayedStart, AllowExtendedLifetime(this)));

webkit has no column limit.

&gt; Source/WebCore/platform/CrossThreadCopier.h:142
&gt; +    template&lt;typename T&gt; struct AllowExtendedLifetimeWrapper {
&gt; +      public:
&gt; +        explicit AllowExtendedLifetimeWrapper(T* value) : m_value(value) { }
&gt; +        T* value() const { return m_value; }
&gt; +      private:
&gt; +        T* m_value;
&gt; +    };

4 space indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393186</commentid>
    <comment_count>9</comment_count>
      <attachid>91195</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-26 17:42:29 -0700</bug_when>
    <thetext>Created attachment 91195
Style feedback

More style feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393775</commentid>
    <comment_count>10</comment_count>
      <attachid>91195</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-27 13:55:40 -0700</bug_when>
    <thetext>Comment on attachment 91195
Style feedback

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

Some initial comments. I need to look a little more at this though.

&gt; Source/WebCore/platform/CrossThreadCopier.h:128
&gt; +        static Type copy(const AllowCrossThreadAccessWrapper&lt;T&gt;&amp; r) { return r.value(); }

Avoid single letter variables in WebKit (other places too).

&gt; Source/WebCore/platform/CrossThreadCopier.h:134
&gt; +    };

No ; needed here.

&gt; Source/WebCore/platform/CrossThreadCopier.h:136
&gt; +    template&lt;typename T&gt; struct AllowExtendedLifetimeWrapper {

AllowAccessLater? (feels like it mirrors the name AllowCrossThreadAccessWrapper better).

&gt; Source/WebCore/platform/CrossThreadCopier.h:144
&gt; +    template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, AllowExtendedLifetimeWrapper&lt;T&gt; &gt; {

Should add a FIXME about moving this out of this header file.

&gt; Source/WebCore/platform/CrossThreadCopier.h:152
&gt; +    };

No ; needed here.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:91
&gt; +

Best not to do misc whitespace changes.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:457
&gt; +void IDBObjectStoreBackendImpl::openCursor(PassRefPtr&lt;IDBKeyRange&gt; prpRange, unsigned short direction, PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks, IDBTransactionBackendInterface* transaction, ExceptionCode&amp; ec)

I like the old naming better because IDBTransactionBackendInterface* is a pointer but RefPtr&lt;IDBTransactionBackendInterface&gt; is not.

&gt; Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp:251
&gt; +                          AllowCrossThreadAccess(thisPtr), 

indenting is off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393930</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-27 16:13:29 -0700</bug_when>
    <thetext>(In reply to comment #10) 
&gt; I like the old naming better because IDBTransactionBackendInterface* is a pointer but RefPtr&lt;IDBTransactionBackendInterface&gt; is not.

I take this back and I have no other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394029</commentid>
    <comment_count>12</comment_count>
      <attachid>91389</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-27 17:26:04 -0700</bug_when>
    <thetext>Created attachment 91389
CR feedback addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394030</commentid>
    <comment_count>13</comment_count>
      <attachid>91390</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-04-27 17:27:45 -0700</bug_when>
    <thetext>Created attachment 91390
CR feedback addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394254</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-27 23:20:12 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 91390:

java/lc3/JSObject/ToObject-001.html bug 53091 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394256</commentid>
    <comment_count>15</comment_count>
      <attachid>91390</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-27 23:21:46 -0700</bug_when>
    <thetext>Comment on attachment 91390
CR feedback addressed

Clearing flags on attachment: 91390

Committed r85165: &lt;http://trac.webkit.org/changeset/85165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394257</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-27 23:21:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394280</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-28 00:15:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85165 might have broken Qt Linux Release
The following tests are not passing:
fast/events/mouseout-dead-node.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90764</attachid>
            <date>2011-04-22 14:40:47 -0700</date>
            <delta_ts>2011-04-25 10:44:46 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-59234.diff</filename>
            <type>text/plain</type>
            <size>59774</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTBlMDdmLi45MDVjYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTEtMDQtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyMzQKKyAgICAgICAgUmVtb3ZlZCB0aGUgYWJs
aXR5IHRvIHBhc3MgcmF3IHBvaW50ZXJzIGNyb3NzLXRocmVhZAorICAgICAgICBBZGRlZCBhbmQg
YXBwbGllZCBhbm5vdGF0aW9ucyBmb3IgZG9pbmcgdGhhdAorCisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjphYm9ydCk6CisgICAgICAgICogZmls
ZWFwaS9GaWxlU3RyZWFtUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVBy
b3h5OjpzdGFydE9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJv
eHk6OnN0b3BPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5
OjpnZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZU9u
RmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JS
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvclJlYWRPbkZp
bGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGVPbkZp
bGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6OnJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN0cmVhbVByb3h5OjpyZWFkT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVBy
b3h5Ojp3cml0ZU9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJv
eHk6OnRydW5jYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6dHJ1bmNh
dGVPbkZpbGVUaHJlYWQpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgor
ICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlclJlYWRGcm9tRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjp0cmlnZ2VyV3Jp
dGVUb0RhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXI6OkFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3NXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3NXcmFwcGVyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBw
ZXI6OkFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWxs
b3dFeHRlbmRlZExpZmV0aW1lV3JhcHBlcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWxs
b3dFeHRlbmRlZExpZmV0aW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IpOgorICAgICAgICAqIHN0b3JhZ2UvU1FMQ2FsbGJhY2tXcmFwcGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OmNsZWFyKToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6
Om1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OkJyaWRnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25u
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlz
Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnJlc3VtZSk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorCiAyMDExLTA0LTIw
ICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAppbmRleCBmZDJlMjYzLi5hMTAyZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAKQEAgLTEyOSw3ICsxMjksOCBAQCB2b2lkIEZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbChC
bG9iKiBibG9iLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSB0eXBlKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9zdGF0ZSA9PSBOb25lKQotICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVsYXllZFN0YXJ0LCB0aGlz
KSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soCisgICAgICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRlbGF5ZWRTdGFydCwgQWxsb3dFeHRlbmRlZExpZmV0
aW1lKHRoaXMpKSk7CiAKICAgICBtX2Jsb2IgPSBibG9iOwogICAgIG1fcmVhZFR5cGUgPSB0eXBl
OwpAQCAtMTUwLDcgKzE1MSw4IEBAIHZvaWQgRmlsZVJlYWRlcjo6YWJvcnQoKQogICAgIG1fc3Rh
dGUgPSBBYm9ydGluZzsKIAogICAgIC8vIFNjaGVkdWxlIHRvIGhhdmUgdGhlIGFib3J0IGRvbmUg
bGF0ZXIgc2luY2UgYWJvcnQoKSBtaWdodCBiZSBjYWxsZWQgZnJvbSB0aGUgZXZlbnQgaGFuZGxl
ciBhbmQgd2UgZG8gbm90IHdhbnQgdGhlIHJlc291cmNlIGxvYWRpbmcgY29kZSB0byBiZSBpbiB0
aGUgc3RhY2suCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhjcmVhdGVD
YWxsYmFja1Rhc2soJmRlbGF5ZWRBYm9ydCwgdGhpcykpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVsYXllZEFi
b3J0LCBBbGxvd0V4dGVuZGVkTGlmZXRpbWUodGhpcykpKTsKIH0KIAogdm9pZCBGaWxlUmVhZGVy
Ojpkb0Fib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN0cmVh
bVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcApp
bmRleCA5MmIwN2NkLi4zZDdmNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVTdHJlYW1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3Ry
ZWFtUHJveHkuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpzdGFy
dE9uRmlsZVRocmVhZCgpCiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fc3RyZWFtLT5zdGFydCgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRTdGFydCwgdGhpcykpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRl
Q2FsbGJhY2tUYXNrKCZkaWRTdGFydCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwog
fQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6c3RvcCgpCkBAIC0xMDcsNyArMTA3LDcgQEAgc3Rh
dGljIHZvaWQgZGVyZWZQcm94eU9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmls
ZVN0cmVhbVByb3h5KiBwcm94eSkKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpzdG9wT25GaWxlVGhy
ZWFkKCkKIHsKICAgICBtX3N0cmVhbS0+c3RvcCgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2so
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkZXJlZlByb3h5T25Db250ZXh0LCB0aGlzKSk7CisgICAgbV9j
b250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRlcmVmUHJveHlPbkNvbnRleHQs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkR2V0
U2l6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgbG9u
ZyBsb25nIHNpemUpCkBAIC0xMTgsMTMgKzExOCwxNSBAQCBzdGF0aWMgdm9pZCBkaWRHZXRTaXpl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3RyZWFtUHJveHkqIHByb3h5LCBsb25nIGxv
bgogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRv
dWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7Ci0gICAgZmlsZVRocmVhZCgpLT5wb3N0
VGFzayhjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmlsZVN0cmVhbVByb3h5OjpnZXRTaXpl
T25GaWxlVGhyZWFkLCBwYXRoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKKyAgICBmaWxl
VGhyZWFkKCktPnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRmlsZVN0cmVhbVByb3h5OjpnZXRTaXplT25G
aWxlVGhyZWFkLCBwYXRoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKIH0KIAogdm9pZCBG
aWxlU3RyZWFtUHJveHk6OmdldFNpemVPbkZpbGVUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBk
b3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewogICAgIGxvbmcgbG9uZyBzaXplID0g
bV9zdHJlYW0tPmdldFNpemUocGF0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKLSAgICBt
X2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkR2V0U2l6ZSwgdGhpcywg
c2l6ZSkpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRH
ZXRTaXplLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBzaXplKSk7CiB9CiAKIHN0YXRp
YyB2b2lkIGRpZE9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSog
cHJveHksIGJvb2wgc3VjY2VzcykKQEAgLTEzNSwyOSArMTM3LDM1IEBAIHN0YXRpYyB2b2lkIGRp
ZE9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGJv
b2wgc3VjY2VzCiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZChjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiB7Ci0gICAgZmls
ZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmlsZVN0cmVh
bVByb3h5OjpvcGVuRm9yUmVhZE9uRmlsZVRocmVhZCwgcGF0aCwgb2Zmc2V0LCBsZW5ndGgpKTsK
KyAgICBmaWxlVGhyZWFkKCktPnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVGaWxlVGhyZWFkVGFz
ayh0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRmlsZVN0cmVhbVByb3h5Ojpv
cGVuRm9yUmVhZE9uRmlsZVRocmVhZCwgcGF0aCwgb2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAogdm9p
ZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKGNvbnN0IFN0cmluZyYg
cGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKIHsKICAgICBib29sIHN1
Y2Nlc3MgPSBtX3N0cmVhbS0+b3BlbkZvclJlYWQocGF0aCwgb2Zmc2V0LCBsZW5ndGgpOwotICAg
IG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuLCB0aGlzLCBz
dWNjZXNzKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRp
ZE9wZW4sIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1Y2Nlc3MpKTsKIH0KIAogdm9p
ZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JXcml0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0g
ICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmls
ZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGVPbkZpbGVUaHJlYWQsIHBhdGgpKTsKKyAgICBmaWxl
VGhyZWFkKCktPnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3Jp
dGVPbkZpbGVUaHJlYWQsIHBhdGgpKTsKIH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5G
b3JXcml0ZU9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYm9vbCBzdWNj
ZXNzID0gbV9zdHJlYW0tPm9wZW5Gb3JXcml0ZShwYXRoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgdGhpcywgc3VjY2VzcykpOworICAgIG1f
Y29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuLCBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpLCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5
OjpjbG9zZSgpCiB7Ci0gICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhyZWFk
VGFzayh0aGlzLCAmRmlsZVN0cmVhbVByb3h5OjpjbG9zZU9uRmlsZVRocmVhZCkpOworICAgIGZp
bGVUaHJlYWQoKS0+cG9zdFRhc2soCisgICAgICAgIGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHRoaXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGaWxlU3RyZWFtUHJveHk6OmNsb3NlT25G
aWxlVGhyZWFkKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpjbG9zZU9uRmlsZVRocmVh
ZCgpCkBAIC0xNzMsMTMgKzE4MSwxNSBAQCBzdGF0aWMgdm9pZCBkaWRSZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBGaWxlU3RyZWFtUHJveHkqIHByb3h5LCBpbnQgYnl0ZXNSZQogCiB2b2lk
IEZpbGVTdHJlYW1Qcm94eTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpCiB7Ci0gICAg
ZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmlsZVN0
cmVhbVByb3h5OjpyZWFkT25GaWxlVGhyZWFkLCBidWZmZXIsIGxlbmd0aCkpOworICAgIGZpbGVU
aHJlYWQoKS0+cG9zdFRhc2soCisgICAgICAgIGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHRoaXMsICZG
aWxlU3RyZWFtUHJveHk6OnJlYWRPbkZpbGVUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoYnVmZmVyKSwgbGVuZ3RoKSk7CiB9CiAKIHZv
aWQgRmlsZVN0cmVhbVByb3h5OjpyZWFkT25GaWxlVGhyZWFkKGNoYXIqIGJ1ZmZlciwgaW50IGxl
bmd0aCkKIHsKICAgICBpbnQgYnl0ZXNSZWFkID0gbV9zdHJlYW0tPnJlYWQoYnVmZmVyLCBsZW5n
dGgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFk
LCB0aGlzLCBieXRlc1JlYWQpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkUmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgYnl0ZXNSZWFk
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFdyaXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBG
aWxlU3RyZWFtUHJveHkqIHByb3h5LCBpbnQgYnl0ZXNXcml0dGVuKQpAQCAtMTkwLDEzICsyMDAs
MTUgQEAgc3RhdGljIHZvaWQgZGlkV3JpdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVT
dHJlYW1Qcm94eSogcHJveHksIGludCBieXRlc1cKIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6Ondy
aXRlKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkK
IHsKLSAgICBmaWxlVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHRoaXMs
ICZGaWxlU3RyZWFtUHJveHk6OndyaXRlT25GaWxlVGhyZWFkLCBibG9iVVJMLCBwb3NpdGlvbiwg
bGVuZ3RoKSk7CisgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzaygKKyAgICAgICAgY3JlYXRlRmls
ZVRocmVhZFRhc2sodGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZpbGVTdHJl
YW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQsIGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpKTsK
IH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OndyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwm
IGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0
ZXNXcml0dGVuID0gbV9zdHJlYW0tPndyaXRlKGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpOwot
ICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZSwgdGhp
cywgYnl0ZXNXcml0dGVuKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZFdyaXRlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlc1dyaXR0
ZW4pKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkVHJ1bmNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGJvb2wgc3VjY2VzcykKQEAgLTIwNywxMyArMjE5
LDE1IEBAIHN0YXRpYyB2b2lkIGRpZFRydW5jYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBG
aWxlU3RyZWFtUHJveHkqIHByb3h5LCBib29sIHN1CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5Ojp0
cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pCiB7Ci0gICAgZmlsZVRocmVhZCgpLT5wb3N0VGFz
ayhjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZU9u
RmlsZVRocmVhZCwgcG9zaXRpb24pKTsKKyAgICBmaWxlVGhyZWFkKCktPnBvc3RUYXNrKAorICAg
ICAgICBjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmRmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZU9uRmlsZVRocmVhZCwgcG9zaXRpb24pKTsK
IH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9u
ZyBwb3NpdGlvbikKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+dHJ1bmNhdGUocG9z
aXRpb24pOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRU
cnVuY2F0ZSwgdGhpcywgc3VjY2VzcykpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRl
Q2FsbGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwg
c3VjY2VzcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjY3MmVlZS4uMDk3
YzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcApAQCAtOTUsNyArOTUsOSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZQogICAgICwg
bV90YXNrTW9kZSh0YXNrTW9kZS5jcm9zc1RocmVhZFN0cmluZygpKQogewogICAgIEFTU0VSVCht
X3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRD
cmVhdGVMb2FkZXIsIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMsIG91dGdvaW5nUmVmZXJyZXIpKTsK
KyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxi
YWNrVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlciwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCByZXF1
ZXN0LCBvcHRpb25zLCBvdXRnb2luZ1JlZmVycmVyKSk7CiB9CiAKIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJpZGdlKCkKQEAgLTEyOSw3ICsx
MzEsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRl
c3Ryb3koKQogICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOwogCiAgICAgLy8gImRlbGV0ZSB0aGlz
IiBhbmQgbV9tYWluVGhyZWFkTG9hZGVyOjpkZXJlZigpIG9uIHRoZSB3b3JrZXIgb2JqZWN0J3Mg
dGhyZWFkLgotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFj
a1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCB0aGlzKSk7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyKQpAQCAtMTQ1LDcgKzE0OCw4IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNl
bChTY3JpcHRFeGVjdXRpb25DCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6Y2FuY2VsKCkKIHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2Vs
LCB0aGlzKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDYW5jZWwsIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKICAg
ICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50
IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBi
eSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwCmluZGV4IDVhMGY0MmQuLmE0MmYyZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAK
QEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6dGhyZWFk
RW50cnlQb2ludEltcGwoKQogCiB2b2lkIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dl
clJlYWRGcm9tRGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5kKGNyZWF0ZUNhbGxiYWNr
VGFzaygmR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjpyZWFkRnJvbURhdGFiYXNlLCB0aGlzKSk7
CisgICAgbV9xdWV1ZS5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZHZW9sb2NhdGlvblBvc2l0
aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykp
KTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZSogY2FjaGUp
CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRG
cm9tRGF0YWJhc2VJbXBsKCkKIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnRyaWdn
ZXJXcml0ZVRvRGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5kKGNyZWF0ZUNhbGxiYWNr
VGFzayh3cml0ZVRvRGF0YWJhc2UsIHRoaXMpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChjcmVhdGVD
YWxsYmFja1Rhc2sod3JpdGVUb0RhdGFiYXNlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
KSk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjp3cml0ZVRvRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZSogY2FjaGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCBhMjVk
NmZhLi4xNTgxMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1Ro
cmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmgKQEAgLTYxLDExICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBJbnRl
Z2VycyBnZXQgcGFzc2VkIHRocm91Z2ggd2l0aG91dCBhbnkgY2hhbmdlcy4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPHRydWUsIGZhbHNlLCBU
PiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPFQ+IHsKICAgICB9OwotCi0g
ICAgLy8gUG9pbnRlcnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQgYW55IHNpZ25pZmljYW50
IGNoYW5nZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29w
aWVyQmFzZTxmYWxzZSwgZmFsc2UsIFQqPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NU
aHJvdWdoPFQqPiB7Ci0gICAgfTsKLQorICAgCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM+IDog
cHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8VGhyZWFkYWJsZUxvYWRlck9wdGlv
bnM+IHsKICAgICB9OwogCkBAIC0xMTksNiArMTE1LDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFQ+IHsKICAgICB9OwogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NXcmFwcGVyIHsKKyAgICAgIHB1
YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXIoVCog
dmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgICAgIFQqIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorICAgICAgcHJpdmF0ZToKKyAgICAgICAgVCogbV92YWx1ZTsKKyAg
ICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NXcmFwcGVyPFQ+ID4gewor
ICAgICAgICB0eXBlZGVmIFQqIFR5cGU7CisgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3Qg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXI8VD4mIHIpIHsgcmV0dXJuIHIudmFsdWUoKTsg
fQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzV3JhcHBlcjxUPiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKFQqIHZhbHVlKSAKKyAgICB7Cisg
ICAgICAgIHJldHVybiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjxUPih2YWx1ZSk7Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBbGxvd0V4dGVuZGVkTGlm
ZXRpbWVXcmFwcGVyIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQWxsb3dFeHRl
bmRlZExpZmV0aW1lV3JhcHBlcihUKiB2YWx1ZSkgOiBtX3ZhbHVlKHZhbHVlKSB7IH0KKyAgICAg
ICAgVCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgICBwcml2YXRlOgor
ICAgICAgICBUKiBtX3ZhbHVlOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQWxsb3dFeHRlbmRlZExp
ZmV0aW1lV3JhcHBlcjxUPiA+IHsKKyAgICAgICAgdHlwZWRlZiBUKiBUeXBlOworICAgICAgICBz
dGF0aWMgVHlwZSBjb3B5KGNvbnN0IEFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXI8VD4mIHIp
IHsgcmV0dXJuIHIudmFsdWUoKTsgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyPFQ+IEFsbG93RXh0ZW5kZWRMaWZldGltZShU
KiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFw
cGVyPFQ+KHZhbHVlKTsKKyAgICB9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIENyb3NzVGhyZWFkQ29waWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5o
CmluZGV4IGE4YWMxNTEuLjk5ZTM2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQu
aApAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGNiNmIwZGEuLjM0YzE5Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcApAQCAtODYsOCArODYsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWwKICAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwog
ICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0
SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXksIGNhbGxiYWNrcykpKQorICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzaygKKyAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3RTdG9yZSwga2V5LCBjYWxsYmFja3MpKSkgewogICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CisgICAgfQogfQogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQpAQCAtMTMyLDcgKzEzNSw5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9u
UHRyOwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0aHJvdyBhIFNFUklBTF9FUlIgb24gc3Ry
dWN0dXJlZCBjbG9uZSBwcm9ibGVtcy4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGhyb3cg
YSBEQVRBX0VSUiB3aGVuIHRoZSB3cm9uZyBrZXkva2V5UGF0aCBkYXRhIGlzIHN1cHBsaWVkLgot
ICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsLCBvYmplY3RTdG9yZSwgdmFsdWUs
IGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzaygKKyAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0U3RvcmUsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb24pKSkKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FM
TE9XRURfRVJSOwogfQogCkBAIC0yODAsNyArMjg1LDkgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNz
UmUKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6ZGVsZXRlSW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXksIGNhbGxiYWNrcykpKQorICAgIGlm
ICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKKyAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNr
VGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUsIGtleSwgY2FsbGJhY2tzKSkpCiAg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKIH0KIApA
QCAtMzE0LDggKzMyMSwxMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFy
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQgogICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogCi0gICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGNhbGxiYWNrcykpKQorICAg
IGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKKyAgICAgICAgICAgICAgY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVybmFsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUsIGNhbGxiYWNrcykpKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKyAg
ICB9CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKQEAg
LTM4MCw4ICszOTAsMTEgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnMKIAogICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2Fj
dGlvbjsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsLCBvYmpl
Y3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpy
ZW1vdmVJbmRleEZyb21NYXAsIG9iamVjdFN0b3JlLCBpbmRleCkpKSB7CisgICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb25QdHIp
LAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpyZW1vdmVJbmRleEZyb21NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0U3RvcmUsIGluZGV4KSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6Tk9UX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00MzMsOCAr
NDQ2LDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhCiAKICAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uUHRyID0gdHJhbnNhY3Rpb247Ci0g
ICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbCwgb2JqZWN0U3RvcmUs
IGluZGV4LCB0cmFuc2FjdGlvblB0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6YWRkSW5k
ZXhUb01hcCwgb2JqZWN0U3RvcmUsIGluZGV4KSkpIHsKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soCisgICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb25QdHIpLAorICAg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmFkZEluZGV4VG9NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RT
dG9yZSwgaW5kZXgpKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1Rf
QUxMT1dFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NTMsOCArNDY5LDExIEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBwcnBSYW5nZSwgdW5zCiAgICAgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSA9
IHBycFJhbmdlOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbiA9IHRyYW5zYWN0aW9uUHRyOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJz
b3JJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNrcywgdHJh
bnNhY3Rpb24pKSkKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5D
dXJzb3JJbnRlcm5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9y
ZSwgcmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKyAgICB9CiB9CiAK
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hv
cnQgdG1wRGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxDYWxsYmFja1dyYXBwZXIuaAppbmRleCAzODA1OWZhLi5k
Mzk1MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTENhbGxiYWNrV3Jh
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgY29udGV4dCA9IG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICAgICAgY2FsbGJh
Y2sgPSBtX2NhbGxiYWNrLnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgICAgIH0KLSAgICAgICAg
Y29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZzYWZlUmVsZWFzZSwgY2FsbGJh
Y2spKTsKKyAgICAgICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZzYWZl
UmVsZWFzZSwgQWxsb3dFeHRlbmRlZExpZmV0aW1lKGNhbGxiYWNrKSkpOwogICAgIH0KIAogICAg
IFBhc3NSZWZQdHI8VD4gdW53cmFwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
ZmQ4MjU5MS4uNzRkMWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI0Niw3
ICsyNDYsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdl
OjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbCgKICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBQZWVyKiBwZWVyID0gUGVlcjo6
Y3JlYXRlKGNsaWVudFdyYXBwZXIsIHRoaXNQdHItPm1fbG9hZGVyUHJveHksIGNvbnRleHQsIHRh
c2tNb2RlLCB1cmwsIHByb3RvY29sKTsKLSAgICB0aGlzUHRyLT5tX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6c2V0
V2ViU29ja2V0Q2hhbm5lbCwgdGhpc1B0ciwgcGVlciwgY2xpZW50V3JhcHBlciksIHRhc2tNb2Rl
KTsKKyAgICB0aGlzUHRyLT5tX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29u
dGV4dCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6OnNldFdlYlNvY2tldENo
YW5uZWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXNQdHIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2VzcyhwZWVyKSwgY2xpZW50V3JhcHBlciksIHRhc2tNb2RlKTsKIH0KIAogV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNz
UmVmUHRyPFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01v
ZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKQEAgLTI1OCw3ICsy
NjEsOSBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpCcmlkZ2Uo
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0QwogewogICAgIEFTU0VSVChtX3dvcmtlckNs
aWVudFdyYXBwZXIuZ2V0KCkpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6
bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwsIHRoaXMsIG1fd29ya2VyQ2xpZW50V3Jh
cHBlciwgbV90YXNrTW9kZSwgdXJsLCBwcm90b2NvbCkpOworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6Om1haW5U
aHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV90
YXNrTW9kZSwgdXJsLCBwcm90b2NvbCkpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7
CiAgICAgQVNTRVJUKG1fcGVlcik7CiB9CkBAIC0yODEsNyArMjg2LDggQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KCkKIHsKICAgICBBU1NF
UlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QsIG1fcGVlcikpOworICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tU
YXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3Qs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwogfQogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0yOTks
NyArMzA1LDkgQEAgYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdl
OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEFTU0VSVChtX3BlZXIpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZCwgbV9wZWVyLCBtZXNzYWdlKSk7
CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1f
cGVlciksIG1lc3NhZ2UpKTsKICAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAg
IHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdl
dCgpOwpAQCAtMzIxLDcgKzMyOSw4IEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQoKQogICAgICAgICByZXR1cm4g
MDsKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKLSAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50LCBt
X3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNy
ZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5U
aHJlYWRCdWZmZXJlZEFtb3VudCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CiAg
ICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxl
dGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKQEAgLTM0Miw3ICszNTEs
OCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xv
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYwogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9zZSgpCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0gICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZSwgbV9wZWVyKSk7Cisg
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2Us
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwogfQogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQpAQCAtMzYwLDcgKzM3MCw4IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiAgICAg
aWYgKG1fcGVlcikgewogICAgICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwogICAgICAgICBtX3Bl
ZXIgPSAwOwotICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZtYWluVGhyZWFkRGVzdHJveSwgcGVlcikpOworICAgICAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm1h
aW5UaHJlYWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHBlZXIpKSk7CiAgICAgfQog
ICAgIG1fd29ya2VyQ29udGV4dCA9IDA7CiB9CkBAIC0zNzcsNyArMzg4LDggQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCoKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6c3VzcGVuZCgpCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kLCBtX3BlZXIpKTsKKyAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKG1fcGVlcikpKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQZWVyKiBwZWVyKQpAQCAtMzkyLDcgKzQwNCw4IEBAIHZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRSZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCoKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6cmVz
dW1lKCkKIHsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZFJlc3VtZSwgbV9wZWVyKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkUmVzdW1lLCBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKG1fcGVlcikpKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpjbGVhckNsaWVudFdyYXBwZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBlY2E4ZTJlLi5hZDEyZjdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAt
Mjg4LDcgKzI4OCw5IEBAIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyTWVzc2FnCiAKIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQog
ewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xl
TWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VVUkwpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFk
Q3JlYXRlZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzZjQyYmIxLi5kZGM1ZGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDExLTA0LTIyICBEbWl0cnkgTG9t
b3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTkyMzQKKyAgICAgICAgUmVtb3ZlZCB0aGUgYWJsaXR5IHRvIHBhc3MgcmF3IHBv
aW50ZXJzIGNyb3NzLXRocmVhZAorICAgICAgICBBZGRlZCBhbmQgYXBwbGllZCBhbm5vdGF0aW9u
cyBmb3IgZG9pbmcgdGhhdAorCisgICAgICAgICogc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdFRhc2spOgorICAgICAgICAq
IHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNl
Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
b3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
b3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VyQmFzZTo6d29ya2VyQ29udGV4dERlc3Ryb3llZCk6CisgICAgICAgICogc3JjL1dlYldvcmtl
ckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpz
dGFydFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBs
Ojp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xp
ZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGll
bnRJbXBsOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAq
IHNyYy9XZWJXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVUb01h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0Q29weVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVUb01haW5UaHJlYWQpOgorICAgICAgICAo
V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJz
aXZlbHlUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdl
YktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZpbGVUb01h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdEZpbGVFeGlzdHNUb01haW5UaHJl
YWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpw
b3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQp
OgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRG
YWlsT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVkT25NYWluVGhy
ZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
ZGlkUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkUmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCk6Cisg
ICAgICAgICogc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0V3JpdGVUb01h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0VHJ1bmNhdGVUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJG
aWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0QWJvcnRUb01haW5UaHJlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRXcml0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWwp
OgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRU
cnVuY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlk
Z2U6OnBvc3RJbml0VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdy
aXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9X
b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0wNC0yMCAgRG9taW5pYyBDb29uZXkgIDxkb21pbmlj
Y0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNw
cAppbmRleCBlNzNjMGY0Li45ZjE0NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcApAQCAtNzYsMTIgKzc2LDEyIEBAIHZvaWQg
V2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdChXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYkNo
YW5uZWwsIENvbm5lY3RMaXN0CiAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBs
YXRmb3JtX2NoYW5uZWwpOwogCiAgICAgd29ya2VyVGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFz
aygKLSAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25uZWN0VGFzaywgdGhpcywgY2hhbm5l
bC5yZWxlYXNlKCkpKTsKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25uZWN0VGFzaywg
Y2hhbm5lbC5yZWxlYXNlKCkpKTsKICAgICBpZiAobGlzdGVuZXIpCiAgICAgICAgIGxpc3RlbmVy
LT5jb25uZWN0ZWQoKTsKIH0KIAotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTaGFyZWRXb3JrZXJJbXBsKiB3
b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQordm9pZCBXZWJT
aGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKIHsKICAgICAvLyBX
cmFwIHRoZSBwYXNzZWQtaW4gY2hhbm5lbCBpbiBhIE1lc3NhZ2VQb3J0LCBhbmQgc2VuZCBpdCBv
ZmYgdmlhIGEgY29ubmVjdCBldmVudC4KICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBN
ZXNzYWdlUG9ydDo6Y3JlYXRlKCpjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaAppbmRleCBiNTkxYzdiLi4zMTQ3NTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oCkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+V2ViU2hhcmVk
V29ya2VySW1wbCgpOwogCi0gICAgc3RhdGljIHZvaWQgY29ubmVjdFRhc2soV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNoYXJlZFdvcmtlckltcGwqLCBQYXNzT3duUHRyPFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbD4pOworICAgIHN0YXRpYyB2b2lkIGNvbm5lY3RUYXNr
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbD4pOwogCiAgICAgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBtX2NsaWVu
dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCmlu
ZGV4IDBjZDVmNDEuLjFkNGFjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckJhc2UuY3BwCkBAIC04OSw3ICs4OSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICAgICAgaWYgKG1fd29ya2VyKQotICAg
ICAgICAgICAgbV93b3JrZXItPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVD
YWxsYmFja1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtX21vZGUpOworICAgICAg
ICAgICAgbV93b3JrZXItPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCgKKyAgICAgICAg
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZENvbXBsZXRlLCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpLCByZXN1bHQpLCBtX21vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTk3
LDcgKzk4LDExIEBAIHByaXZhdGU6CiAgICAgICAgIDogbV93b3JrZXIod29ya2VyKQogICAgICAg
ICAsIG1fbW9kZShtb2RlKQogICAgIHsKLSAgICAgICAgd29ya2VyLT5kaXNwYXRjaFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0RhdGFiYXNlVGFzaywgY29tbW9uQ2xp
ZW50LCBmcmFtZSwgU3RyaW5nKG5hbWUpLCBTdHJpbmcoZGlzcGxheU5hbWUpLCBlc3RpbWF0ZWRT
aXplLCB0aGlzKSk7CisgICAgICAgIHdvcmtlci0+ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAor
ICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0RhdGFiYXNlVGFzaywgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyhjb21tb25DbGllbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZnJhbWUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyhuYW1lKSwgU3RyaW5nKGRpc3BsYXlOYW1lKSwgZXN0aW1hdGVk
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgYWxsb3dEYXRhYmFzZVRhc2so
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViQ29tbW9uV29ya2Vy
Q2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcg
bmFtZSwgY29uc3QgV1RGOjpTdHJpbmcgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSwgUGFzc1JlZlB0cjxBbGxvd0RhdGFiYXNlTWFpblRocmVhZEJyaWRnZT4gYnJpZGdl
KQpAQCAtMjYyLDcgKzI2Nyw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6b3BlbkZpbGVTeXN0ZW1G
b3JXb3JrZXIoV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcKIHZvaWQgV2ViV29y
a2VyQmFzZTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykK
IHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0
TWVzc2FnZVRhc2ssIHRoaXMsCisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNh
bGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZS0+dG9XaXJlU3RyaW5nKCksIGNoYW5uZWxzKSk7CiB9CiAKQEAgLTI4Nyw5ICsyOTIsMTAgQEAg
dm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIGRpc3Bh
dGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25UYXNr
LCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc291cmNlVVJMKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25UYXNrLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3JNZXNzYWdlLCBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
VVJMKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKQEAgLTMxMiw3ICszMTgsNyBAQCB2b2lkIFdlYldv
cmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ug
c291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdl
VGFzaywgdGhpcywKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
LCB0eXBlLCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQpAQCAtMzM0LDcgKzM0
MCw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogCiB2b2lkIFdlYldvcmtlckJhc2U6OmNvbmZpcm1N
ZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAgICBk
aXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25maXJtTWVzc2Fn
ZVRhc2ssIHRoaXMsCisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNr
VGFzaygmY29uZmlybU1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUGVuZGlu
Z0FjdGl2aXR5KSk7CiB9CiAKQEAgLTM1MCw3ICszNTYsOCBAQCB2b2lkIFdlYldvcmtlckJhc2U6
OmNvbmZpcm1NZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogdm9p
ZCBXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFz
aygmcmVwb3J0UGVuZGluZ0FjdGl2aXR5VGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OnJl
cG9ydFBlbmRpbmdBY3Rpdml0eVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
QEAgLTM2NSw3ICszNzIsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnJlcG9ydFBlbmRpbmdBY3Rp
dml0eVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIHZvaWQgV2ViV29ya2Vy
QmFzZTo6d29ya2VyQ29udGV4dENsb3NlZCgpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dENsb3NlZFRhc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dENs
b3NlZFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKQEAgLTM4MCw3ICszODcs
NyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWRUYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRl
eHREZXN0cm95ZWQoKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHREZXN0cm95ZWRUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4IGY5MGU3ZTguLjEwMTBi
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpz
dGFydFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLAogICAgIGlmICghaXNNYWlu
VGhyZWFkKCkpIHsKICAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICAgICAgICAgICZzdGFydFdvcmtlckNvbnRleHRU
YXNrLAotICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcyksCiAgICAgICAgICAgICBzY3JpcHRVUkwuc3RyaW5nKCksCiAgICAgICAgICAgICB1
c2VyQWdlbnQsCiAgICAgICAgICAgICBzb3VyY2VDb2RlKSk7CkBAIC0xNTYsNyArMTU2LDggQEAg
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7CiAgICAgaWYgKCFpc01h
aW5UaHJlYWQoKSkgewotICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0ZXJtaW5hdGVXb3JrZXJDb250ZXh0VGFzaywgdGhp
cykpOworICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnRlcm1pbmF0ZVdvcmtlckNvbnRleHRUYXNr
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgbV93ZWJXb3JrZXItPnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKQEAgLTE3Miw3ICsx
NzMsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0KAogICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKICAgICBpZiAoIWlzTWFpblRo
cmVhZCgpKSB7CiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMpKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjAyLDcgKzIwMyw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50
SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBFdmVuIGlmIHRoaXMgaXMgY2Fs
bGVkIG9uIHRoZSBtYWluIHRocmVhZCwgdGhlcmUgY291bGQgYmUgYSBxdWV1ZWQgdGFzayBmb3IK
ICAgICAvLyB0aGlzIG9iamVjdCwgc28gZG9uJ3QgZGVsZXRlIGl0IHJpZ2h0IGF3YXkuCiAgICAg
V2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFz
aygmd29ya2VyT2JqZWN0RGVzdHJveWVkVGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBs
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKQEAg
LTIyMSw3ICsyMjIsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9X
b3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAogCiAgICAgaWYgKGN1cnJlbnRU
aHJlYWQoKSAhPSBtX3dvcmtlclRocmVhZElkKSB7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0VGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nKG1lc3NhZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczIucmVsZWFzZSgpKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIzNyw3ICsyMzgsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudElt
cGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmIGVycm9yTWVz
cwogewogICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAg
ICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKGVycm9yTWVzc2FnZSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhzb3VyY2VVUkwpKSk7CkBAIC0yNjEsNyArMjYy
LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtl
ck9iamVjdChpbnQgZGVzdGluYXRpb24sCiB7CiAgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSAhPSBt
X3dvcmtlclRocmVhZElkKSB7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUxldmVsLApAQCAt
Mjk0LDE0ICsyOTUsMTQgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25maXJtTWVzc2Fn
ZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkKICAgICAvLyBhY2Nlc3Nl
ZC4gIE90aGVyd2lzZSB0aGVyZSBhcmUgcmFjZSBjb25kaXRpb25zIHdpdGggdjgncyBnYXJiYWdl
CiAgICAgLy8gY29sbGVjdGlvbi4KICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0VGFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiB2b2lk
IFdlYldvcmtlckNsaWVudEltcGw6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSkKIHsKICAgICAvLyBTZWUgYWJvdmUgY29tbWVudCBpbiBjb25maXJtTWVzc2Fn
ZUZyb21Xb3JrZXJPYmplY3QuCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwCmluZGV4
IDE2NWFmNjguLmIyZDQ5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckltcGwuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJXb3JrZXJJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCiAKICAgICB3
b3JrZXJUaHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKAogICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMsIFN0cmluZyhtZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBT
dHJpbmcobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2UoKSkpOwogfQogCiB2b2lkIFdlYldvcmtl
ckltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3Bw
CmluZGV4IDUxNDdlMTUuLmZiNWRkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCkBA
IC0xNTUsNjQgKzE1NSw5NyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OnN0b3AoKQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVu
RmlsZVN5c3RlbVRvTWFpblRocmVhZChXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVu
dCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUs
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZCwgY29tbW9uQ2xpZW50
LCB0eXBlLCBzaXplLCBjcmVhdGUsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01h
aW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW1Pbk1h
aW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKGNvbW1vbkNsaWVudCksIHR5cGUsIHNpemUsIGNyZWF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0TW92ZVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmbW92ZU9uTWFpblRocmVh
ZCwgZmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCB0aGlzLCBtb2RlKSk7
CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJm1vdmVPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9z
dENvcHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgY29uc3QgU3RyaW5n
JiBtb2RlKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rh
c2soJmNvcHlPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9u
UGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb3B5T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgc291cmNlUGF0
aCwgZGVzdGluYXRpb25QYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
QVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJnJlbW92ZU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywg
bW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZyZW1vdmVPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQog
CiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVSZWN1cnNp
dmVseVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0g
ICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVtb3ZlUmVj
dXJzaXZlbHlPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAg
ICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQog
CiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkTWV0YWRhdGFU
b01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNo
VGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkTWV0YWRh
dGFPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZjcmVhdGVGaWxlT25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRo
LCBleGNsdXNpdmUsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
CisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY3JlYXRlRmlsZU9uTWFpblRocmVhZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3Rl
bSksIHBhdGgsIGV4Y2x1c2l2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmY3JlYXRlRGlyZWN0b3J5T25N
YWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCBleGNsdXNpdmUsIHRoaXMsIG1vZGUpKTsKKyAg
ICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwgZXhjbHVzaXZlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9k
ZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RGaWxl
RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsK
LSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZmaWxlRXhp
c3RzT25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7CisgICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmZpbGVF
eGlzdHNPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3BhdGNoVGFz
a1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpcmVjdG9yeUV4aXN0c09uTWFpblRo
cmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaXJlY3RvcnlFeGlzdHNP
bk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBt
b2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkLCBmaWxl
U3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVT
eXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRmlsZVN5c3RlbTo6
VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQpAQCAtMjc2LDI3ICsz
MDksMzAgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZWFkRGlyZWN0
b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEUKIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlOjpkaWRGYWlsT25NYWluVGhyZWFkKFdlYkZpbGVFcnJvciBlcnJvciwg
Y29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVycm9yKSwgbW9kZSk7Cisg
ICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEZhaWxPbldvcmtl
clRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgZXJyb3IpLCBtb2RlKTsKIH0K
IAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVuRmlsZVN5c3Rl
bU9uTWFpblRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgs
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNh
bGxiYWNrVGFzaygmZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZCwgdGhpcywgbmFtZSwg
cm9vdFBhdGgpLCBtb2RlKTsKKyAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNr
VGFzaygmZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBu
YW1lLCByb290UGF0aCksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OmRpZFN1Y2NlZWRPbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBtb2RlKQogewot
ICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRTdWNjZWVkT25X
b3JrZXJUaHJlYWQsIHRoaXMpLCBtb2RlKTsKKyAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmZGlkU3VjY2VlZE9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6ZGlkUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKGNvbnN0IFdlYkZpbGVJbmZvJiBp
bmZvLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkLCB0aGlzLCBpbmZv
KSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRp
ZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LCBpbmZvKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6ZGlkUmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5
c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3JlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7
Ci0gICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlYWREaXJl
Y3RvcnlPbldvcmtlclRocmVhZCwgdGhpcywgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOworICAg
IG1heVBvc3RUYXNrVG9Xb3JrZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVh
ZERpcmVjdG9yeU9uV29ya2VyVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOwogfQog
CiBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKFdlYldvcmtlckJhc2UqIHdvcmtlciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRl
ckNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJG
aWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCAxNzlhZWE1Li5iNzE4YmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJh
Y2tzQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxl
V3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtNjEsMjAgKzYxLDIyIEBAIHZvaWQgV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdFdyaXRlVG9NYWluVGhyZWFkKGxvbmcgbG9u
ZyBwb3NpdGlvbiwKIHsKICAgICBBU1NFUlQoIW1fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7CiAgICAg
bV9vcGVyYXRpb25JblByb2dyZXNzID0gdHJ1ZTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3cml0ZU9uTWFpblRocmVhZCwgdGhpcywgcG9zaXRpb24s
IGRhdGEpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZ3cml0ZU9uTWFpblRocmVhZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBwb3NpdGlvbiwgZGF0
YSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RUcnVu
Y2F0ZVRvTWFpblRocmVhZChsb25nIGxvbmcgbGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9vcGVy
YXRpb25JblByb2dyZXNzKTsKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwotICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnRydW5jYXRlT25N
YWluVGhyZWFkLCB0aGlzLCBsZW5ndGgpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZ0cnVuY2F0ZU9uTWFpblRocmVhZCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXMpLCBsZW5ndGgpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0QWJvcnRUb01haW5UaHJlYWQoKQogewogICAgIEFTU0VSVChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MpOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rh
c2soJmFib3J0T25NYWluVGhyZWFkLCB0aGlzKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmYWJvcnRPbk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0U2h1dGRvd25Ub01haW5UaHJlYWQoUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVy
Q2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UpCkBAIC0xMTMsMTcgKzExNSwyMCBAQCB2b2lkIFdvcmtl
ckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnNodXRkb3duT25NYWluVGhyZWFkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleAogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRp
ZFdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSkKIHsKLSAgICBkaXNwYXRjaFRh
c2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFdyaXRlT25Xb3JrZXJUaHJl
YWQsIHRoaXMsIGJ5dGVzLCBjb21wbGV0ZSkpOworICAgIGRpc3BhdGNoVGFza1RvV29ya2VyVGhy
ZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFdyaXRlT25Xb3JrZXJUaHJlYWQs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzLCBjb21wbGV0ZSkpOwogfQogCiB2
b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWwoV2ViRmlsZUVycm9y
IGVycm9yKQogewotICAgIGRpc3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxiYWNr
VGFzaygmZGlkRmFpbE9uV29ya2VyVGhyZWFkLCB0aGlzLCBlcnJvcikpOworICAgIGRpc3BhdGNo
VGFza1RvV29ya2VyVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEZhaWxP
bldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgZXJyb3IpKTsKIH0K
IAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRUcnVuY2F0ZSgpCiB7
Ci0gICAgZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRU
cnVuY2F0ZU9uV29ya2VyVGhyZWFkLCB0aGlzKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9Xb3JrZXJU
aHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkVHJ1bmNhdGVPbldvcmtlclRo
cmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiBzdGF0aWMgY29uc3Qg
Y2hhciBmaWxlV3JpdGVyT3BlcmF0aW9uc01vZGVbXSA9ICJmaWxlV3JpdGVyT3BlcmF0aW9uc01v
ZGUiOwpAQCAtMTQ0LDcgKzE0OSw4IEBAIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6
OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UoY29uc3QgU3RyaW5nJiBwCiAKIHZvaWQg
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEluaXRUb01haW5UaHJlYWQoY29u
c3QgU3RyaW5nJiBwYXRoKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJmluaXRPbk1haW5UaHJlYWQsIHRoaXMsIHBhdGgpKTsKKyAgICBkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmaW5pdE9uTWFp
blRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgcGF0aCkpOwogfQogCiBXb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjp+V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0Jy
aWRnZSgpCkBAIC0xOTYsMTMgKzIwMiwxNSBAQCB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFj
a3NCcmlkZ2U6OnJ1blRhc2tPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZQogdm9p
ZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAg
IEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBXZWJXb3Jr
ZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZydW5U
YXNrT25NYWluVGhyZWFkLCB0aGlzLCB0YXNrKSk7CisgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRhc2tP
bk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHRhc2spKTsKIH0KIAog
dm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaXNwYXRjaFRhc2tUb1dvcmtl
clRocmVhZChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Byb3h5LT5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZydW5UYXNrT25Xb3JrZXJUaHJl
YWQsIHRoaXMsIHRhc2spLCBtX21vZGUpOworICAgIG1fcHJveHktPnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyQ29udGV4dCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZydW5UYXNrT25Xb3Jr
ZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHRhc2spLCBtX21vZGUpOwog
fQogCiBib29sIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OndhaXRGb3JPcGVyYXRp
b25Ub0NvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaHJlYWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRU
ZXN0LmNwcAppbmRleCAwNGZiYTQ2Li42OWFlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1RocmVhZFRlc3QuY3BwCkBAIC01Myw3ICs1Myw4IEBAIFRFU1QoQ0NUaHJl
YWRUZXN0LCBwaW5nUG9uZ1VzaW5nQ29uZGl0aW9uKQogICAgIE93blB0cjxDQ1RocmVhZD4gdGhy
ZWFkID0gQ0NUaHJlYWQ6OmNyZWF0ZSgpOwogICAgIFBpbmdQb25nVXNpbmdDb25kaXRpb24gdGFy
Z2V0OwogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgdGhyZWFkLT5wb3N0
VGFzayhjcmVhdGVDQ1RocmVhZFRhc2soJnRhcmdldCwgJlBpbmdQb25nVXNpbmdDb25kaXRpb246
OnBpbmcsICZjb21wbGV0aW9uKSk7CisgICAgdGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2soJnRhcmdldCwgJlBpbmdQb25nVXNpbmdDb25kaXRpb246OnBpbmcsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNv
bXBsZXRpb24pKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiAKICAgICBFWFBFQ1RfRVEodGhy
ZWFkLT50aHJlYWRJRCgpLCB0YXJnZXQuaGl0VGhyZWFkSUQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90930</attachid>
            <date>2011-04-25 10:44:46 -0700</date>
            <delta_ts>2011-04-25 10:49:47 -0700</delta_ts>
            <desc>Proposed patch: second iteration</desc>
            <filename>bug-59234.diff</filename>
            <type>text/plain</type>
            <size>57148</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTBlMDdmLi41NWZhMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTEtMDQtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcm9zc1RocmVhZENv
cGllciBzaG91bGQgbm90IGhhdmUgYSBkZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciByYXcgcG9p
bnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MjM0CisgICAgICAgIFJlbW92ZWQgdGhlIGFibGl0eSB0byBwYXNzIHJhdyBwb2ludGVycyBjcm9z
cy10aHJlYWQKKyAgICAgICAgQWRkZWQgYW5kIGFwcGxpZWQgYW5ub3RhdGlvbnMgZm9yIGRvaW5n
IHRoYXQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlcjo6YWJvcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6c3RhcnRPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpzdG9wT25GaWxlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3RyZWFtUHJveHk6OmdldFNpemVPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
dHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVBy
b3h5OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmls
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKiBs
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uUG9z
aXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uQ2Fj
aGU6OnRyaWdnZXJSZWFkRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlcldyaXRlVG9EYXRhYmFzZSk6CisgICAgICAgICogcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3NXcmFwcGVyOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjo6dmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyOjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXI6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KiBzdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2Fs
bGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVk
QW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpy
ZXN1bWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KToKKwogMjAxMS0wNC0yMCAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggZmQyZTI2My4uYTEwMmVmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMjksNyArMTI5LDggQEAgdm9p
ZCBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiogYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6
UmVhZFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gTm9u
ZSkKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJmRlbGF5ZWRTdGFydCwgdGhpcykpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnBvc3RUYXNrKAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkZWxh
eWVkU3RhcnQsIEFsbG93RXh0ZW5kZWRMaWZldGltZSh0aGlzKSkpOwogCiAgICAgbV9ibG9iID0g
YmxvYjsKICAgICBtX3JlYWRUeXBlID0gdHlwZTsKQEAgLTE1MCw3ICsxNTEsOCBAQCB2b2lkIEZp
bGVSZWFkZXI6OmFib3J0KCkKICAgICBtX3N0YXRlID0gQWJvcnRpbmc7CiAKICAgICAvLyBTY2hl
ZHVsZSB0byBoYXZlIHRoZSBhYm9ydCBkb25lIGxhdGVyIHNpbmNlIGFib3J0KCkgbWlnaHQgYmUg
Y2FsbGVkIGZyb20gdGhlIGV2ZW50IGhhbmRsZXIgYW5kIHdlIGRvIG5vdCB3YW50IHRoZSByZXNv
dXJjZSBsb2FkaW5nIGNvZGUgdG8gYmUgaW4gdGhlIHN0YWNrLgotICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkZWxheWVkQWJvcnQsIHRo
aXMpKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKAorICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJmRlbGF5ZWRBYm9ydCwgQWxsb3dFeHRlbmRlZExpZmV0aW1lKHRo
aXMpKSk7CiB9CiAKIHZvaWQgRmlsZVJlYWRlcjo6ZG9BYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTdHJlYW1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVTdHJlYW1Qcm94eS5jcHAKaW5kZXggOTJiMDdjZC4uZDQzNTA2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3RyZWFtUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcApAQCAtODYsNyArODYsNyBA
QCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6c3RhcnRPbkZpbGVUaHJlYWQoKQogICAgIGlmICghY2xp
ZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0cmVhbS0+c3RhcnQoKTsKLSAgICBtX2Nv
bnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3RhcnQsIHRoaXMpKTsKKyAg
ICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3RhcnQsIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnN0
b3AoKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGRlcmVmUHJveHlPbkNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHkpCiB2b2lkIEZp
bGVTdHJlYW1Qcm94eTo6c3RvcE9uRmlsZVRocmVhZCgpCiB7CiAgICAgbV9zdHJlYW0tPnN0b3Ao
KTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVyZWZQcm94
eU9uQ29udGV4dCwgdGhpcykpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkZXJlZlByb3h5T25Db250ZXh0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEdldFNpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGxvbmcgbG9uZyBzaXplKQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91
YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6
ZU9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpCiB7CiAgICAgbG9uZyBsb25nIHNpemUgPSBtX3N0cmVhbS0+Z2V0U2l6ZShwYXRo
LCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZkaWRHZXRTaXplLCB0aGlzLCBzaXplKSk7CisgICAgbV9jb250ZXh0
LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEdldFNpemUsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3ModGhpcyksIHNpemUpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkT3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgYm9vbCBzdWNjZXNzKQpA
QCAtMTQxLDE4ICsxNDEsMjAgQEAgdm9pZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkKGNv
bnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb24KIHZvaWQgRmlsZVN0
cmVhbVByb3h5OjpvcGVuRm9yUmVhZE9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
bV9zdHJlYW0tPm9wZW5Gb3JSZWFkKHBhdGgsIG9mZnNldCwgbGVuZ3RoKTsKLSAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgdGhpcywgc3VjY2Vzcykp
OworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgRmlsZVN0
cmVhbVByb3h5OjpvcGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGZpbGVU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Q
cm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkLCBwYXRoKSk7CisgICAgZmlsZVRocmVhZCgp
LT5wb3N0VGFzaygKKyAgICAgICAgY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxl
VGhyZWFkLCBwYXRoKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGVP
bkZpbGVUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IG1f
c3RyZWFtLT5vcGVuRm9yV3JpdGUocGF0aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZE9wZW4sIHRoaXMsIHN1Y2Nlc3MpKTsKKyAgICBtX2NvbnRleHQt
PnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgc3VjY2VzcykpOwogfQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Y2xvc2Uo
KQpAQCAtMTczLDEzICsxNzUsMTUgQEAgc3RhdGljIHZvaWQgZGlkUmVhZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgaW50IGJ5dGVzUmUKIAogdm9pZCBG
aWxlU3RyZWFtUHJveHk6OnJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKQogewotICAgIGZp
bGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJl
YW1Qcm94eTo6cmVhZE9uRmlsZVRocmVhZCwgYnVmZmVyLCBsZW5ndGgpKTsKKyAgICBmaWxlVGhy
ZWFkKCktPnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmls
ZVN0cmVhbVByb3h5OjpyZWFkT25GaWxlVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGJ1ZmZlciksIGxlbmd0aCkpOwogfQogCiB2b2lk
IEZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmlsZVRocmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5n
dGgpCiB7CiAgICAgaW50IGJ5dGVzUmVhZCA9IG1fc3RyZWFtLT5yZWFkKGJ1ZmZlciwgbGVuZ3Ro
KTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZCwg
dGhpcywgYnl0ZXNSZWFkKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZFJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzUmVhZCkp
OwogfQogCiBzdGF0aWMgdm9pZCBkaWRXcml0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmls
ZVN0cmVhbVByb3h5KiBwcm94eSwgaW50IGJ5dGVzV3JpdHRlbikKQEAgLTE5Niw3ICsyMDAsNyBA
QCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBs
b25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogdm9pZCBGaWxlU3RyZWFtUHJveHk6OndyaXRlT25G
aWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxl
bmd0aCkKIHsKICAgICBpbnQgYnl0ZXNXcml0dGVuID0gbV9zdHJlYW0tPndyaXRlKGJsb2JVUkws
IHBvc2l0aW9uLCBsZW5ndGgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRXcml0ZSwgdGhpcywgYnl0ZXNXcml0dGVuKSk7CisgICAgbV9jb250ZXh0LT5w
b3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFdyaXRlLCBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLCBieXRlc1dyaXR0ZW4pKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkVHJ1bmNhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGJvb2wgc3Vj
Y2VzcykKQEAgLTIxMyw3ICsyMTcsNyBAQCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6dHJ1bmNhdGUo
bG9uZyBsb25nIHBvc2l0aW9uKQogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxl
VGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlvbikKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVh
bS0+dHJ1bmNhdGUocG9zaXRpb24pOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwgdGhpcywgc3VjY2VzcykpOworICAgIG1fY29udGV4dC0+
cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwgc3VjY2VzcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggNjY3MmVlZS4uMDk3YzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTUsNyArOTUsOSBAQCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5jcm9zc1RocmVhZFN0cmluZygpKQog
ewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlk
Z2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIsIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMsIG91dGdv
aW5nUmVmZXJyZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0
ZUxvYWRlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLCByZXF1ZXN0LCBvcHRpb25zLCBvdXRnb2luZ1JlZmVycmVyKSk7CiB9CiAKIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJpZGdl
KCkKQEAgLTEyOSw3ICsxMzEsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRlc3Ryb3koKQogICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOwogCiAgICAg
Ly8gImRlbGV0ZSB0aGlzIiBhbmQgbV9tYWluVGhyZWFkTG9hZGVyOjpkZXJlZigpIG9uIHRoZSB3
b3JrZXIgb2JqZWN0J3MgdGhyZWFkLgotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRl
cihjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95
LCB0aGlzKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyKQpAQCAtMTQ1LDcg
KzE0OCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25DCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKIHsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjpt
YWluVGhyZWFkQ2FuY2VsLCB0aGlzKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5U
aHJlYWRDYW5jZWwsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKICAgICBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlci5nZXQoKTsKICAgICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAv
LyBJZiB0aGUgY2xpZW50IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4g
dHJhbnNpdGlvbiBpdCBieSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9yLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwCmluZGV4IDVhMGY0
MmQuLmE0MmYyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Q
b3NpdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uUG9z
aXRpb25DYWNoZS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZTo6dGhyZWFkRW50cnlQb2ludEltcGwoKQogCiB2b2lkIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZTo6dHJpZ2dlclJlYWRGcm9tRGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5k
KGNyZWF0ZUNhbGxiYWNrVGFzaygmR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjpyZWFkRnJvbURh
dGFiYXNlLCB0aGlzKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZH
ZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2UsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJl
YWRGcm9tRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZSogY2FjaGUpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBvc2l0
aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2VJbXBsKCkKIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0
aW9uQ2FjaGU6OnRyaWdnZXJXcml0ZVRvRGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5k
KGNyZWF0ZUNhbGxiYWNrVGFzayh3cml0ZVRvRGF0YWJhc2UsIHRoaXMpKTsKKyAgICBtX3F1ZXVl
LmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2sod3JpdGVUb0RhdGFiYXNlLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjp3
cml0ZVRvRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9z
c1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAppbmRleCBhMjVkNmZhLi4xNTgxMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTYxLDExICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAvLyBJbnRlZ2VycyBnZXQgcGFzc2VkIHRocm91Z2ggd2l0aG91dCBhbnkgY2hhbmdl
cy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNl
PHRydWUsIGZhbHNlLCBUPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPFQ+
IHsKICAgICB9OwotCi0gICAgLy8gUG9pbnRlcnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQg
YW55IHNpZ25pZmljYW50IGNoYW5nZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFQqPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPFQqPiB7Ci0gICAgfTsKLQorICAgCiAgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnM+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8VGhyZWFk
YWJsZUxvYWRlck9wdGlvbnM+IHsKICAgICB9OwogCkBAIC0xMTksNiArMTE1LDQzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQ+IHsKICAgICB9OwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NXcmFw
cGVyIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzc1dyYXBwZXIoVCogdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgICAgIFQqIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgICAgcHJpdmF0ZToKKyAgICAgICAg
VCogbV92YWx1ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NX
cmFwcGVyPFQ+ID4geworICAgICAgICB0eXBlZGVmIFQqIFR5cGU7CisgICAgICAgIHN0YXRpYyBU
eXBlIGNvcHkoY29uc3QgQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXI8VD4mIHIpIHsgcmV0
dXJuIHIudmFsdWUoKTsgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjxUPiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKFQqIHZh
bHVlKSAKKyAgICB7CisgICAgICAgIHJldHVybiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBl
cjxUPih2YWx1ZSk7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
bGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgQWxsb3dFeHRlbmRlZExpZmV0aW1lV3JhcHBlcihUKiB2YWx1ZSkgOiBtX3ZhbHVlKHZh
bHVlKSB7IH0KKyAgICAgICAgVCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgICBwcml2YXRlOgorICAgICAgICBUKiBtX3ZhbHVlOworICAgIH07CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
QWxsb3dFeHRlbmRlZExpZmV0aW1lV3JhcHBlcjxUPiA+IHsKKyAgICAgICAgdHlwZWRlZiBUKiBU
eXBlOworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IEFsbG93RXh0ZW5kZWRMaWZldGlt
ZVdyYXBwZXI8VD4mIHIpIHsgcmV0dXJuIHIudmFsdWUoKTsgfQorICAgIH07CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyPFQ+IEFsbG93RXh0
ZW5kZWRMaWZldGltZShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBbGxvd0V4dGVu
ZGVkTGlmZXRpbWVXcmFwcGVyPFQ+KHZhbHVlKTsKKyAgICB9OworCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIENyb3NzVGhyZWFkQ29waWVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Nv
bXBsZXRpb25FdmVudC5oCmluZGV4IGE4YWMxNTEuLjk5ZTM2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
b21wbGV0aW9uRXZlbnQuaApAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGNi
NmIwZGEuLjc4ZGMzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtODgsNiArODgsNyBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVm
UHRyPElEQkNhbAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUs
IGtleSwgY2FsbGJhY2tzKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
VF9BTExPV0VEX0VSUjsKKwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Omdl
dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpAQCAtMzE0LDggKzMxNSw5IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgSURCCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVybmFs
LCBvYmplY3RTdG9yZSwgY2FsbGJhY2tzKSkpCisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xl
YXJJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGNhbGxiYWNrcykpKSB7CiAgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKyAgICB9CiB9CiAKIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKQEAgLTM4MCw4ICszODIsMTEgQEAg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmNyZWF0ZUluZGV4KGNvbnMKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlvbjsKLSAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsLCBvYmplY3RTdG9yZSwgaW5kZXgsIHRy
YW5zYWN0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJbmRleEZyb21NYXAs
IG9iamVjdFN0b3JlLCBpbmRleCkpKSB7CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKAorICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uUHRyKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJ
bmRleEZyb21NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9y
ZSwgaW5kZXgpKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxM
T1dFRF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQzMyw4ICs0MzgsMTEgQEAg
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQlRyYW5zYWN0aW9uQmEKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlvbjsKLSAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsLCBvYmplY3RTdG9yZSwgaW5kZXgsIHRy
YW5zYWN0aW9uUHRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjphZGRJbmRleFRvTWFwLCBv
YmplY3RTdG9yZSwgaW5kZXgpKSkgeworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
aygKKyAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2JqZWN0U3RvcmUsIGluZGV4LCB0cmFuc2FjdGlvblB0ciksCisgICAgICAgICAgICAg
IGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6YWRkSW5kZXhU
b01hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLCBpbmRl
eCkpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ0NywxNCArNDU1LDE3IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygp
OwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cHJwUmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IHJh
bmdlID0gcHJwUmFuZ2U7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJw
Q2FsbGJhY2tzOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRy
YW5zYWN0aW9uID0gdHJhbnNhY3Rpb25QdHI7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvckludGVybmFsLCBvYmplY3RTdG9yZSwgcmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tz
LCB0cmFuc2FjdGlvbikpKQorICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uUHRyID0gdHJhbnNhY3Rpb247CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0U3RvcmUsIHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNrcywgdHJh
bnNhY3Rpb25QdHIpKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1Rf
QUxMT1dFRF9FUlI7CisgICAgfQogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHRtcERpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
UUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMQ2FsbGJhY2tX
cmFwcGVyLmgKaW5kZXggMzgwNTlmYS4uZDM5NTIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKICAgICAgICAgICAgIGNhbGxiYWNrID0gbV9jYWxsYmFjay5yZWxlYXNlKCkubGVha1Jl
ZigpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmc2FmZVJlbGVhc2UsIGNhbGxiYWNrKSk7CisgICAgICAgIGNvbnRleHQtPnBvc3RUYXNr
KGNyZWF0ZUNhbGxiYWNrVGFzaygmc2FmZVJlbGVhc2UsIEFsbG93RXh0ZW5kZWRMaWZldGltZShj
YWxsYmFjaykpKTsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPFQ+IHVud3JhcCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGZkODI1OTEuLjc0ZDFhMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC0yNDYsNyArMjQ2LDEwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5u
ZWwoCiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwog
CiAgICAgUGVlciogcGVlciA9IFBlZXI6OmNyZWF0ZShjbGllbnRXcmFwcGVyLCB0aGlzUHRyLT5t
X2xvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgdXJsLCBwcm90b2NvbCk7Ci0gICAgdGhp
c1B0ci0+bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwsIHRoaXNQdHIsIHBlZXIs
IGNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSk7CisgICAgdGhpc1B0ci0+bV9sb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFz
aygmQnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzUHRyKSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MocGVlciksIGNsaWVudFdyYXBwZXIpLCB0YXNr
TW9kZSk7CiB9CiAKIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OkJy
aWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
d29ya2VyQ2xpZW50V3JhcHBlciwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiB3b3JrZXJDb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpCkBAIC0yNTgsNyArMjYxLDkgQEAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldEMK
IHsKICAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpKTsKICAgICBzZXRNZXRo
b2ROb3RDb21wbGV0ZWQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVs
LCB0aGlzLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fdGFza01vZGUsIHVybCwgcHJvdG9jb2wp
KTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbCwgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBt
X3dvcmtlckNsaWVudFdyYXBwZXIsIG1fdGFza01vZGUsIHVybCwgcHJvdG9jb2wpKTsKICAgICB3
YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIEFTU0VSVChtX3BlZXIpOwogfQpAQCAtMjgx
LDcgKzI4Niw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6Y29ubmVjdCgpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyQ2xpZW50V3JhcHBlcik7CiAgICAg
QVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJl
YWRDb25uZWN0LCBtX3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
CisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6Om1haW5UaHJlYWRDb25uZWN0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikp
KTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQpAQCAtMjk5LDcgKzMwNSw5IEBAIGJvb2wgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBzZXRNZXRob2RO
b3RDb21wbGV0ZWQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFNlbmQsIG1fcGVlciwgbWVzc2FnZSkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCBtZXNzYWdlKSk7CiAgICAgUmVmUHRyPEJy
aWRnZT4gcHJvdGVjdCh0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAg
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9
IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKQEAgLTMyMSw3ICszMjksOCBAQCB1bnNpZ25l
ZCBsb25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVk
QW1vdW50KCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKG1fcGVlcik7CiAgICAgc2V0
TWV0aG9kTm90Q29tcGxldGVkKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVy
KGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWRCdWZmZXJlZEFtb3VudCwgbV9wZWVyKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQnVmZmVyZWRBbW91bnQsIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MobV9wZWVyKSkpOwogICAgIFJlZlB0cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7
CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXIuZ2V0KCk7CkBAIC0zNDIsNyArMzUxLDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGMKIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoKQogewog
ICAgIEFTU0VSVChtX3BlZXIpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihj
cmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWlu
VGhyZWFkQ2xvc2UsIG1fcGVlcikpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRl
cigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikp
KTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKQEAg
LTM2MCw3ICszNzAsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmRpc2Nvbm5lY3QoKQogICAgIGlmIChtX3BlZXIpIHsKICAgICAgICAgUGVlciogcGVl
ciA9IG1fcGVlcjsKICAgICAgICAgbV9wZWVyID0gMDsKLSAgICAgICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmbWFpblRocmVhZERlc3Ryb3ksIHBl
ZXIpKTsKKyAgICAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZtYWluVGhyZWFkRGVzdHJveSwgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcyhwZWVyKSkpOwogICAgIH0KICAgICBtX3dvcmtlckNvbnRleHQgPSAwOwogfQpAQCAt
Mzc3LDcgKzM4OCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnN1c3BlbmQoKQogewogICAgIEFTU0VSVCht
X3BlZXIpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFj
a1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU3VzcGVu
ZCwgbV9wZWVyKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpt
YWluVGhyZWFkU3VzcGVuZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CiB9CiAK
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRSZXN1bWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKQEAgLTM5Miw3ICs0
MDQsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFk
UmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6OnJlc3VtZSgpCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRSZXN1bWUsIG1fcGVlcikp
OworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFJl
c3VtZSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CiB9CiAKIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xlYXJDbGllbnRXcmFwcGVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5k
ZXggZWNhOGUyZS4uYWQxMmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTI4OCw3ICsyODgsOSBAQCBzdGF0aWMgdm9pZCBwb3N0
Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtl
ck1lc3NhZwogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgdGhp
cywgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzaygKKyAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQ+IHdvcmtlclRocmVhZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2Y0
MmJiMS4uYWMzZGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBA
QAorMjAxMS0wNC0yMiAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ3Jvc3NU
aHJlYWRDb3BpZXIgc2hvdWxkIG5vdCBoYXZlIGEgZGVmYXVsdCBzcGVjaWFsaXphdGlvbiBmb3Ig
cmF3IHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTIzNAorICAgICAgICBSZW1vdmVkIHRoZSBhYmxpdHkgdG8gcGFzcyByYXcgcG9pbnRl
cnMgY3Jvc3MtdGhyZWFkCisgICAgICAgIEFkZGVkIGFuZCBhcHBsaWVkIGFubm90YXRpb25zIGZv
ciBkb2luZyB0aGF0CisKKyAgICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFzayk6CisgICAgICAgICogc3Jj
L1dlYlNoYXJlZFdvcmtlckltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1l
c3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OmNv
bmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckJhc2U6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJC
YXNlOjp3b3JrZXJDb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnN0YXJ0
V29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnRl
cm1pbmF0ZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJ
bXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldv
cmtlckNsaWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1l
c3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudElt
cGw6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YldvcmtlckNsaWVudEltcGw6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgICogc3Jj
L1dlYldvcmtlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0ZW1Ub01haW5UaHJlYWQpOgorICAgICAgICAo
V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0TW92ZVRvTWFpblRo
cmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OnBvc3RDb3B5VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJL
aXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVSZWN1cnNpdmVs
eVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRmlsZVRvTWFpblRo
cmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OnBvc3RDcmVhdGVEaXJlY3RvcnlUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZCk6
CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RE
aXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWxP
bk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpkaWRPcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6
OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFN1Y2NlZWRPbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRS
ZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRSZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKToKKyAgICAg
ICAgKiBzcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RXcml0ZVRvTWFpblRo
cmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6
OnBvc3RUcnVuY2F0ZVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVX
cml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RBYm9ydFRvTWFpblRocmVhZCk6CisgICAgICAgIChX
ZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpZFdyaXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpZFRydW5j
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6
cG9zdEluaXRUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVy
Q2FsbGJhY2tzQnJpZGdlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaXNwYXRjaFRhc2tUb1dvcmtl
clRocmVhZCk6CisgICAgICAgICogdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1QpOgorCiAyMDExLTA0LTIwICBEb21pbmljIENvb25leSAgPGRvbWluaWNjQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCmlu
ZGV4IGU3M2MwZjQuLjlmMTQ0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCkBAIC03NiwxMiArNzYsMTIgQEAgdm9pZCBXZWJT
aGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0KFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogd2ViQ2hhbm5l
bCwgQ29ubmVjdExpc3QKICAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZv
cm1fY2hhbm5lbCk7CiAKICAgICB3b3JrZXJUaHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKAot
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNvbm5lY3RUYXNrLCB0aGlzLCBjaGFubmVsLnJl
bGVhc2UoKSkpOworICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNvbm5lY3RUYXNrLCBjaGFu
bmVsLnJlbGVhc2UoKSkpOwogICAgIGlmIChsaXN0ZW5lcikKICAgICAgICAgbGlzdGVuZXItPmNv
bm5lY3RlZCgpOwogfQogCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3RUYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNoYXJlZFdvcmtlckltcGwqIHdvcmtl
ciwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCit2b2lkIFdlYlNoYXJl
ZFdvcmtlckltcGw6OmNvbm5lY3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQogewogICAgIC8vIFdyYXAg
dGhlIHBhc3NlZC1pbiBjaGFubmVsIGluIGEgTWVzc2FnZVBvcnQsIGFuZCBzZW5kIGl0IG9mZiB2
aWEgYSBjb25uZWN0IGV2ZW50LgogICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3Nh
Z2VQb3J0OjpjcmVhdGUoKmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2hhcmVkV29ya2VySW1wbC5oCmluZGV4IGI1OTFjN2IuLjMxNDc1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5XZWJTaGFyZWRXb3Jr
ZXJJbXBsKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjb25uZWN0VGFzayhXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViU2hhcmVkV29ya2VySW1wbCosIFBhc3NPd25QdHI8V2ViQ29y
ZTo6TWVzc2FnZVBvcnRDaGFubmVsPik7CisgICAgc3RhdGljIHZvaWQgY29ubmVjdFRhc2soV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsPik7CiAKICAgICBXZWJDb21tb25Xb3JrZXJDbGllbnQqIG1fY2xpZW50Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKaW5kZXgg
MGNkNWY0MS4uMWQ0YWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQmFzZS5jcHAKQEAgLTg5LDcgKzg5LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgICAgICBpZiAobV93b3JrZXIpCi0gICAgICAg
ICAgICBtX3dvcmtlci0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMsIHJlc3VsdCksIG1fbW9kZSk7CisgICAgICAgICAg
ICBtX3dvcmtlci0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAorICAgICAgICAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcyksIHJlc3VsdCksIG1fbW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTcsNyAr
OTgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3dvcmtlcih3b3JrZXIpCiAgICAgICAgICwg
bV9tb2RlKG1vZGUpCiAgICAgewotICAgICAgICB3b3JrZXItPmRpc3BhdGNoVGFza1RvTWFpblRo
cmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmFsbG93RGF0YWJhc2VUYXNrLCBjb21tb25DbGllbnQs
IGZyYW1lLCBTdHJpbmcobmFtZSksIFN0cmluZyhkaXNwbGF5TmFtZSksIGVzdGltYXRlZFNpemUs
IHRoaXMpKTsKKyAgICAgICAgd29ya2VyLT5kaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAg
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmFsbG93RGF0YWJhc2VUYXNrLCBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKGNvbW1vbkNsaWVudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmcmFtZSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nKG5hbWUpLCBTdHJpbmcoZGlzcGxheU5hbWUpLCBlc3RpbWF0ZWRTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcykpKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBhbGxvd0RhdGFiYXNlVGFzayhXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJDb21tb25Xb3JrZXJDbGll
bnQqIGNvbW1vbkNsaWVudCwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyBuYW1l
LCBjb25zdCBXVEY6OlN0cmluZyBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplLCBQYXNzUmVmUHRyPEFsbG93RGF0YWJhc2VNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UpCkBA
IC0yNjIsNyArMjY3LDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbUZvcldv
cmtlcihXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZwogdm9pZCBXZWJXb3JrZXJC
YXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQogewot
ICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNz
YWdlVGFzaywgdGhpcywKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZwb3N0TWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLT50
b1dpcmVTdHJpbmcoKSwgY2hhbm5lbHMpKTsKIH0KIApAQCAtMjg3LDkgKzI5MiwxMCBAQCB2b2lk
IFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgZGlzcGF0Y2hU
YXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdEV4Y2VwdGlvblRhc2ssIHRo
aXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2VVUkwpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
CisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdEV4Y2VwdGlvblRhc2ssIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VVUkwp
KTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0aW9uVGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LApAQCAtMzEyLDcgKzMxOCw3IEBAIHZvaWQgV2ViV29ya2Vy
QmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNr
LCB0aGlzLAorICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2so
JnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIHR5
cGUsIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7CiB9CkBAIC0zMzQsNyArMzQwLDcg
QEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6Y29uZmlybU1lc3Nh
Z2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogewotICAgIGRpc3Bh
dGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmNvbmZpcm1NZXNzYWdlVGFz
aywgdGhpcywKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZjb25maXJtTWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQWN0
aXZpdHkpKTsKIH0KIApAQCAtMzUwLDcgKzM1Niw4IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6Y29u
ZmlybU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiB2b2lkIFdl
YldvcmtlckJhc2U6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZy
ZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcywgaGFzUGVuZGluZ0FjdGl2aXR5KSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzUGVuZGluZ0FjdGl2aXR5KSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6cmVwb3J0
UGVuZGluZ0FjdGl2aXR5VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApAQCAt
MzY1LDcgKzM3Miw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogdm9pZCBXZWJXb3JrZXJCYXNl
Ojp3b3JrZXJDb250ZXh0Q2xvc2VkKCkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0Q2xvc2VkVGFzaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcykpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2Vk
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApAQCAtMzgwLDcgKzM4Nyw3IEBA
IHZvaWQgV2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dENsb3NlZFRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwKIHZvaWQgV2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dERl
c3Ryb3llZCgpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNr
VGFzaygmd29ya2VyQ29udGV4dERlc3Ryb3llZFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7
CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dERlc3Ryb3llZFRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggZjkwZTdlOC4uMTAxMGIxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnN0YXJ0
V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiBzY3JpcHRVUkwsCiAgICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgewogICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgICAgICAgICAgJnN0YXJ0V29ya2VyQ29udGV4dFRhc2ss
Ci0gICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwKICAgICAgICAgICAgIHNjcmlwdFVSTC5zdHJpbmcoKSwKICAgICAgICAgICAgIHVzZXJB
Z2VudCwKICAgICAgICAgICAgIHNvdXJjZUNvZGUpKTsKQEAgLTE1Niw3ICsxNTYsOCBAQCB2b2lk
IFdlYldvcmtlckNsaWVudEltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9hc2tlZFRvVGVybWluYXRlID0gdHJ1ZTsKICAgICBpZiAoIWlzTWFpblRo
cmVhZCgpKSB7Ci0gICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZChjcmVhdGVDYWxsYmFja1Rhc2soJnRlcm1pbmF0ZVdvcmtlckNvbnRleHRUYXNrLCB0aGlzKSk7
CisgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmdGVybWluYXRlV29ya2VyQ29udGV4dFRhc2ssIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX3dlYldvcmtlci0+dGVybWluYXRlV29ya2VyQ29udGV4dCgpOwpAQCAtMTcyLDcgKzE3Myw3
IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQo
CiAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKICAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVscykpOwogICAg
ICAgICByZXR1cm47CkBAIC0yMDIsNyArMjAzLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBs
Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQogICAgIC8vIEV2ZW4gaWYgdGhpcyBpcyBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkLCB0aGVyZSBjb3VsZCBiZSBhIHF1ZXVlZCB0YXNrIGZvcgogICAg
IC8vIHRoaXMgb2JqZWN0LCBzbyBkb24ndCBkZWxldGUgaXQgcmlnaHQgYXdheS4KICAgICBXZWJX
b3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3
b3JrZXJPYmplY3REZXN0cm95ZWRUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLApAQCAtMjIx
LDcgKzIyMiw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCiAKICAgICBpZiAoY3VycmVudFRocmVh
ZCgpICE9IG1fd29ya2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3RUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcobWVzc2FnZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzMi5yZWxlYXNlKCkpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgZXJyb3JNZXNzCiB7
CiAgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSAhPSBtX3dvcmtlclRocmVhZElkKSB7CiAgICAgICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3RUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoZXJyb3JNZXNzYWdlKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nKHNvdXJjZVVSTCkpKTsKQEAgLTI2MSw3ICsyNjIsNyBA
QCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KGludCBkZXN0aW5hdGlvbiwKIHsKICAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IG1fd29y
a2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlTGV2ZWwsCkBAIC0yOTQs
MTQgKzI5NSwxNCBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OmNvbmZpcm1NZXNzYWdlRnJv
bVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eQogICAgIC8vIGFjY2Vzc2VkLiAg
T3RoZXJ3aXNlIHRoZXJlIGFyZSByYWNlIGNvbmRpdGlvbnMgd2l0aCB2OCdzIGdhcmJhZ2UKICAg
ICAvLyBjb2xsZWN0aW9uLgogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3RUYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV2Vi
V29ya2VyQ2xpZW50SW1wbDo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KQogewogICAgIC8vIFNlZSBhYm92ZSBjb21tZW50IGluIGNvbmZpcm1NZXNzYWdlRnJv
bVdvcmtlck9iamVjdC4KICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmcmVwb3J0UGVuZGluZ0FjdGl2aXR5VGFzaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUGVuZGluZ0FjdGl2aXR5KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKaW5kZXggMTY1
YWY2OC4uYjJkNDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
V29ya2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
SW1wbC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYldvcmtlckltcGw6OnBvc3RNZXNz
YWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKIAogICAgIHdvcmtl
clRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFz
aygmcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcywgU3RyaW5nKG1lc3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIFN0cmlu
ZyhtZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VySW1w
bDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKaW5k
ZXggNTE0N2UxNS4uZmI1ZGQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKQEAgLTE1
NSw2NCArMTU1LDk3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6c3Rv
cCgpCiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE9wZW5GaWxl
U3lzdGVtVG9NYWluVGhyZWFkKFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBX
ZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkLCBjb21tb25DbGllbnQsIHR5
cGUsIHNpemUsIGNyZWF0ZSwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRo
cmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbU9uTWFpblRo
cmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
Y29tbW9uQ2xpZW50KSwgdHlwZSwgc2l6ZSwgY3JlYXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZtb3ZlT25NYWluVGhyZWFkLCBm
aWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIHRoaXMsIG1vZGUpKTsKKyAg
ICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
bW92ZU9uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1v
ZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q29w
eVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBjb25zdCBTdHJpbmcmIG1v
ZGUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygm
Y29weU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRo
LCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJmNvcHlPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBzb3VyY2VQYXRoLCBk
ZXN0aW5hdGlvblBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6cG9zdFJlbW92ZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NF
UlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmcmVtb3ZlT25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2Rl
KSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJnJlbW92ZU9uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBk
aXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZW1vdmVSZWN1cnNp
dmVseU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZW1v
dmVSZWN1cnNpdmVseU9uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFp
blRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVhZE1ldGFkYXRhT25NYWlu
VGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNr
VG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZpbGVUb01haW5UaHJlYWQoV2ViRmlsZVN5
c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIGV4
Y2x1c2l2ZSwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjcmVhdGVGaWxlT25NYWluVGhyZWFkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwg
cGF0aCwgZXhjbHVzaXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVEaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3Rl
bSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3Qg
U3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZjcmVhdGVEaXJlY3RvcnlPbk1haW5U
aHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIGV4Y2x1c2l2ZSwgdGhpcywgbW9kZSkpOworICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjcmVh
dGVEaXJlY3RvcnlPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLCBleGNsdXNpdmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7
CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdEZpbGVFeGlz
dHNUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmZpbGVFeGlzdHNP
bk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZmlsZUV4aXN0
c09uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlzcGF0Y2hUYXNrVG9N
YWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFk
LCBmaWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpcmVjdG9yeUV4aXN0c09uTWFp
blRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3MoZmlsZVN5c3RlbSksIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5
c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUp
CiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQsIGZpbGVTeXN0
ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3Rl
bSksIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6b3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBXZWJGaWxlU3lzdGVtOjpUeXBl
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCkBAIC0yNzYsMjcgKzMwOSwz
MCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWREaXJlY3RvcnlP
bk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmRpZEZhaWxPbk1haW5UaHJlYWQoV2ViRmlsZUVycm9yIGVycm9yLCBjb25z
dCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZEZhaWxPbldvcmtlclRocmVhZCwgdGhpcywgZXJyb3IpLCBtb2RlKTsKKyAgICBt
YXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkRmFpbE9uV29ya2VyVGhy
ZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBlcnJvciksIG1vZGUpOwogfQogCiB2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVtT25N
YWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRPcGVuRmlsZVN5c3RlbU9uV29ya2VyVGhyZWFkLCB0aGlzLCBuYW1lLCByb290
UGF0aCksIG1vZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZkaWRPcGVuRmlsZVN5c3RlbU9uV29ya2VyVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG5hbWUs
IHJvb3RQYXRoKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6ZGlkU3VjY2VlZE9uTWFpblRocmVhZChjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAg
bWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFN1Y2NlZWRPbldvcmtl
clRocmVhZCwgdGhpcyksIG1vZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRTdWNjZWVkT25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcykpLCBtb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpkaWRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoY29uc3QgV2ViRmlsZUluZm8mIGluZm8s
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNh
bGxiYWNrVGFzaygmZGlkUmVhZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGluZm8pLCBt
b2RlKTsKKyAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVh
ZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGlu
Zm8pLCBtb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpk
aWRSZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVt
RW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01vcmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAg
ICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZERpcmVjdG9y
eU9uV29ya2VyVGhyZWFkLCB0aGlzLCBlbnRyaWVzLCBoYXNNb3JlKSwgbW9kZSk7CisgICAgbWF5
UG9zdFRhc2tUb1dvcmtlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFkRGly
ZWN0b3J5T25Xb3JrZXJUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBlbnRyaWVzLCBoYXNNb3JlKSwgbW9kZSk7CiB9CiAKIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2UoV2ViV29ya2VyQmFzZSogd29ya2VyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVyQ2Fs
bGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVX
cml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4IDE3OWFlYTUuLmI3MThiY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NC
cmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0
ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCkBAIC02MSwyMCArNjEsMjIgQEAgdm9pZCBXb3JrZXJGaWxl
V3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0V3JpdGVUb01haW5UaHJlYWQobG9uZyBsb25nIHBv
c2l0aW9uLAogewogICAgIEFTU0VSVCghbV9vcGVyYXRpb25JblByb2dyZXNzKTsKICAgICBtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChj
cmVhdGVDYWxsYmFja1Rhc2soJndyaXRlT25NYWluVGhyZWFkLCB0aGlzLCBwb3NpdGlvbiwgZGF0
YSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJndy
aXRlT25NYWluVGhyZWFkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHBvc2l0aW9uLCBkYXRhKSk7
CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdFRydW5jYXRl
VG9NYWluVGhyZWFkKGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX29wZXJhdGlv
bkluUHJvZ3Jlc3MpOwogICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmdHJ1bmNhdGVPbk1haW5U
aHJlYWQsIHRoaXMsIGxlbmd0aCkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJnRydW5jYXRlT25NYWluVGhyZWFkLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhp
cyksIGxlbmd0aCkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6
OnBvc3RBYm9ydFRvTWFpblRocmVhZCgpCiB7CiAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyk7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygm
YWJvcnRPbk1haW5UaHJlYWQsIHRoaXMpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZhYm9ydE9uTWFpblRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6
OnBvc3RTaHV0ZG93blRvTWFpblRocmVhZChQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2U+IGJyaWRnZSkKQEAgLTExMywxNyArMTE1LDIwIEBAIHZvaWQgV29ya2VyRmls
ZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6c2h1dGRvd25Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkV3Jp
dGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKQogewotICAgIGRpc3BhdGNoVGFza1Rv
V29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkV3JpdGVPbldvcmtlclRocmVhZCwg
dGhpcywgYnl0ZXMsIGNvbXBsZXRlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQo
CisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkV3JpdGVPbldvcmtlclRocmVhZCwgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgYnl0ZXMsIGNvbXBsZXRlKSk7CiB9CiAKIHZvaWQg
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbChXZWJGaWxlRXJyb3IgZXJy
b3IpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVycm9yKSk7CisgICAgZGlzcGF0Y2hUYXNr
VG9Xb3JrZXJUaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkRmFpbE9uV29y
a2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBlcnJvcikpOwogfQogCiB2
b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpZFRydW5jYXRlKCkKIHsKLSAg
ICBkaXNwYXRjaFRhc2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFRydW5j
YXRlT25Xb3JrZXJUaHJlYWQsIHRoaXMpKTsKKyAgICBkaXNwYXRjaFRhc2tUb1dvcmtlclRocmVh
ZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRUcnVuY2F0ZU9uV29ya2VyVGhyZWFk
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFy
IGZpbGVXcml0ZXJPcGVyYXRpb25zTW9kZVtdID0gImZpbGVXcml0ZXJPcGVyYXRpb25zTW9kZSI7
CkBAIC0xNDQsNyArMTQ5LDggQEAgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6V29y
a2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZShjb25zdCBTdHJpbmcmIHAKIAogdm9pZCBXb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0SW5pdFRvTWFpblRocmVhZChjb25zdCBT
dHJpbmcmIHBhdGgpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmaW5pdE9uTWFpblRocmVhZCwgdGhpcywgcGF0aCkpOworICAgIGRpc3BhdGNoVGFz
a1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZpbml0T25NYWluVGhy
ZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBwYXRoKSk7CiB9CiAKIFdvcmtlckZp
bGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6On5Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdl
KCkKQEAgLTE5NiwxMyArMjAyLDE1IEBAIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0Jy
aWRnZTo6cnVuVGFza09uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiB2b2lkIFdv
cmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChQ
YXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7CiAgICAgQVNT
RVJUKG1fd29ya2VyQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIFdlYldvcmtlckJh
c2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRhc2tP
bk1haW5UaHJlYWQsIHRoaXMsIHRhc2spKTsKKyAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09uTWFp
blRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgdGFzaykpOwogfQogCiB2b2lk
IFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1RvV29ya2VyVGhy
ZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fcHJveHktPnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRhc2tPbldvcmtlclRocmVhZCwg
dGhpcywgdGFzayksIG1fbW9kZSk7CisgICAgbV9wcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJDb250ZXh0KAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRhc2tPbldvcmtlclRo
cmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgdGFzayksIG1fbW9kZSk7CiB9CiAK
IGJvb2wgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6d2FpdEZvck9wZXJhdGlvblRv
Q29tcGxldGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Ro
cmVhZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZFRlc3Qu
Y3BwCmluZGV4IDA0ZmJhNDYuLjY5YWUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAKQEAgLTUzLDcgKzUzLDggQEAgVEVTVChDQ1RocmVhZFRl
c3QsIHBpbmdQb25nVXNpbmdDb25kaXRpb24pCiAgICAgT3duUHRyPENDVGhyZWFkPiB0aHJlYWQg
PSBDQ1RocmVhZDo6Y3JlYXRlKCk7CiAgICAgUGluZ1BvbmdVc2luZ0NvbmRpdGlvbiB0YXJnZXQ7
CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKLSAgICB0aHJlYWQtPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzaygmdGFyZ2V0LCAmUGluZ1BvbmdVc2luZ0NvbmRpdGlvbjo6cGlu
ZywgJmNvbXBsZXRpb24pKTsKKyAgICB0aHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
aygmdGFyZ2V0LCAmUGluZ1BvbmdVc2luZ0NvbmRpdGlvbjo6cGluZywgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxl
dGlvbikpKTsKICAgICBjb21wbGV0aW9uLndhaXQoKTsKIAogICAgIEVYUEVDVF9FUSh0aHJlYWQt
PnRocmVhZElEKCksIHRhcmdldC5oaXRUaHJlYWRJRCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90931</attachid>
            <date>2011-04-25 10:49:47 -0700</date>
            <delta_ts>2011-04-27 17:26:04 -0700</delta_ts>
            <desc>Style issues fixed</desc>
            <filename>bug-59234.diff</filename>
            <type>text/plain</type>
            <size>56460</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTBlMDdmLi41NWZhMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTEtMDQtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcm9zc1RocmVhZENv
cGllciBzaG91bGQgbm90IGhhdmUgYSBkZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciByYXcgcG9p
bnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MjM0CisgICAgICAgIFJlbW92ZWQgdGhlIGFibGl0eSB0byBwYXNzIHJhdyBwb2ludGVycyBjcm9z
cy10aHJlYWQKKyAgICAgICAgQWRkZWQgYW5kIGFwcGxpZWQgYW5ub3RhdGlvbnMgZm9yIGRvaW5n
IHRoYXQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlcjo6YWJvcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6c3RhcnRPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpzdG9wT25GaWxlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3RyZWFtUHJveHk6OmdldFNpemVPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
dHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVBy
b3h5OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmls
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKiBs
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uUG9z
aXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uQ2Fj
aGU6OnRyaWdnZXJSZWFkRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlcldyaXRlVG9EYXRhYmFzZSk6CisgICAgICAgICogcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3NXcmFwcGVyOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjo6dmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyOjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXI6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KiBzdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2Fs
bGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVk
QW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpy
ZXN1bWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KToKKwogMjAxMS0wNC0yMCAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggZmQyZTI2My4uYTEwMmVmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMjksNyArMTI5LDggQEAgdm9p
ZCBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiogYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6
UmVhZFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gTm9u
ZSkKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJmRlbGF5ZWRTdGFydCwgdGhpcykpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnBvc3RUYXNrKAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkZWxh
eWVkU3RhcnQsIEFsbG93RXh0ZW5kZWRMaWZldGltZSh0aGlzKSkpOwogCiAgICAgbV9ibG9iID0g
YmxvYjsKICAgICBtX3JlYWRUeXBlID0gdHlwZTsKQEAgLTE1MCw3ICsxNTEsOCBAQCB2b2lkIEZp
bGVSZWFkZXI6OmFib3J0KCkKICAgICBtX3N0YXRlID0gQWJvcnRpbmc7CiAKICAgICAvLyBTY2hl
ZHVsZSB0byBoYXZlIHRoZSBhYm9ydCBkb25lIGxhdGVyIHNpbmNlIGFib3J0KCkgbWlnaHQgYmUg
Y2FsbGVkIGZyb20gdGhlIGV2ZW50IGhhbmRsZXIgYW5kIHdlIGRvIG5vdCB3YW50IHRoZSByZXNv
dXJjZSBsb2FkaW5nIGNvZGUgdG8gYmUgaW4gdGhlIHN0YWNrLgotICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkZWxheWVkQWJvcnQsIHRo
aXMpKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKAorICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJmRlbGF5ZWRBYm9ydCwgQWxsb3dFeHRlbmRlZExpZmV0aW1lKHRo
aXMpKSk7CiB9CiAKIHZvaWQgRmlsZVJlYWRlcjo6ZG9BYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTdHJlYW1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVTdHJlYW1Qcm94eS5jcHAKaW5kZXggOTJiMDdjZC4uZDQzNTA2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3RyZWFtUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcApAQCAtODYsNyArODYsNyBA
QCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6c3RhcnRPbkZpbGVUaHJlYWQoKQogICAgIGlmICghY2xp
ZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0cmVhbS0+c3RhcnQoKTsKLSAgICBtX2Nv
bnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3RhcnQsIHRoaXMpKTsKKyAg
ICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3RhcnQsIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnN0
b3AoKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGRlcmVmUHJveHlPbkNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHkpCiB2b2lkIEZp
bGVTdHJlYW1Qcm94eTo6c3RvcE9uRmlsZVRocmVhZCgpCiB7CiAgICAgbV9zdHJlYW0tPnN0b3Ao
KTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVyZWZQcm94
eU9uQ29udGV4dCwgdGhpcykpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkZXJlZlByb3h5T25Db250ZXh0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEdldFNpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGxvbmcgbG9uZyBzaXplKQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91
YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6
ZU9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpCiB7CiAgICAgbG9uZyBsb25nIHNpemUgPSBtX3N0cmVhbS0+Z2V0U2l6ZShwYXRo
LCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZkaWRHZXRTaXplLCB0aGlzLCBzaXplKSk7CisgICAgbV9jb250ZXh0
LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEdldFNpemUsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3ModGhpcyksIHNpemUpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkT3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgYm9vbCBzdWNjZXNzKQpA
QCAtMTQxLDE4ICsxNDEsMjAgQEAgdm9pZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkKGNv
bnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb24KIHZvaWQgRmlsZVN0
cmVhbVByb3h5OjpvcGVuRm9yUmVhZE9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
bV9zdHJlYW0tPm9wZW5Gb3JSZWFkKHBhdGgsIG9mZnNldCwgbGVuZ3RoKTsKLSAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgdGhpcywgc3VjY2Vzcykp
OworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgRmlsZVN0
cmVhbVByb3h5OjpvcGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGZpbGVU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Q
cm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkLCBwYXRoKSk7CisgICAgZmlsZVRocmVhZCgp
LT5wb3N0VGFzaygKKyAgICAgICAgY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxl
VGhyZWFkLCBwYXRoKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGVP
bkZpbGVUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IG1f
c3RyZWFtLT5vcGVuRm9yV3JpdGUocGF0aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZE9wZW4sIHRoaXMsIHN1Y2Nlc3MpKTsKKyAgICBtX2NvbnRleHQt
PnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgc3VjY2VzcykpOwogfQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Y2xvc2Uo
KQpAQCAtMTczLDEzICsxNzUsMTUgQEAgc3RhdGljIHZvaWQgZGlkUmVhZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgaW50IGJ5dGVzUmUKIAogdm9pZCBG
aWxlU3RyZWFtUHJveHk6OnJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKQogewotICAgIGZp
bGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJl
YW1Qcm94eTo6cmVhZE9uRmlsZVRocmVhZCwgYnVmZmVyLCBsZW5ndGgpKTsKKyAgICBmaWxlVGhy
ZWFkKCktPnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmls
ZVN0cmVhbVByb3h5OjpyZWFkT25GaWxlVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGJ1ZmZlciksIGxlbmd0aCkpOwogfQogCiB2b2lk
IEZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmlsZVRocmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5n
dGgpCiB7CiAgICAgaW50IGJ5dGVzUmVhZCA9IG1fc3RyZWFtLT5yZWFkKGJ1ZmZlciwgbGVuZ3Ro
KTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZCwg
dGhpcywgYnl0ZXNSZWFkKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZFJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzUmVhZCkp
OwogfQogCiBzdGF0aWMgdm9pZCBkaWRXcml0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmls
ZVN0cmVhbVByb3h5KiBwcm94eSwgaW50IGJ5dGVzV3JpdHRlbikKQEAgLTE5Niw3ICsyMDAsNyBA
QCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBs
b25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogdm9pZCBGaWxlU3RyZWFtUHJveHk6OndyaXRlT25G
aWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxl
bmd0aCkKIHsKICAgICBpbnQgYnl0ZXNXcml0dGVuID0gbV9zdHJlYW0tPndyaXRlKGJsb2JVUkws
IHBvc2l0aW9uLCBsZW5ndGgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRXcml0ZSwgdGhpcywgYnl0ZXNXcml0dGVuKSk7CisgICAgbV9jb250ZXh0LT5w
b3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFdyaXRlLCBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLCBieXRlc1dyaXR0ZW4pKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkVHJ1bmNhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGJvb2wgc3Vj
Y2VzcykKQEAgLTIxMyw3ICsyMTcsNyBAQCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6dHJ1bmNhdGUo
bG9uZyBsb25nIHBvc2l0aW9uKQogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxl
VGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlvbikKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVh
bS0+dHJ1bmNhdGUocG9zaXRpb24pOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwgdGhpcywgc3VjY2VzcykpOworICAgIG1fY29udGV4dC0+
cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwgc3VjY2VzcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggNjY3MmVlZS4uMDk3YzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTUsNyArOTUsOSBAQCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5jcm9zc1RocmVhZFN0cmluZygpKQog
ewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlk
Z2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIsIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMsIG91dGdv
aW5nUmVmZXJyZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0
ZUxvYWRlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLCByZXF1ZXN0LCBvcHRpb25zLCBvdXRnb2luZ1JlZmVycmVyKSk7CiB9CiAKIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJpZGdl
KCkKQEAgLTEyOSw3ICsxMzEsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRlc3Ryb3koKQogICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOwogCiAgICAg
Ly8gImRlbGV0ZSB0aGlzIiBhbmQgbV9tYWluVGhyZWFkTG9hZGVyOjpkZXJlZigpIG9uIHRoZSB3
b3JrZXIgb2JqZWN0J3MgdGhyZWFkLgotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRl
cihjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95
LCB0aGlzKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyKQpAQCAtMTQ1LDcg
KzE0OCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25DCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKIHsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjpt
YWluVGhyZWFkQ2FuY2VsLCB0aGlzKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5U
aHJlYWRDYW5jZWwsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKICAgICBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlci5nZXQoKTsKICAgICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAv
LyBJZiB0aGUgY2xpZW50IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4g
dHJhbnNpdGlvbiBpdCBieSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9yLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwCmluZGV4IDVhMGY0
MmQuLmE0MmYyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Q
b3NpdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uUG9z
aXRpb25DYWNoZS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZTo6dGhyZWFkRW50cnlQb2ludEltcGwoKQogCiB2b2lkIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZTo6dHJpZ2dlclJlYWRGcm9tRGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5k
KGNyZWF0ZUNhbGxiYWNrVGFzaygmR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjpyZWFkRnJvbURh
dGFiYXNlLCB0aGlzKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZH
ZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2UsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJl
YWRGcm9tRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZSogY2FjaGUpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBvc2l0
aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2VJbXBsKCkKIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0
aW9uQ2FjaGU6OnRyaWdnZXJXcml0ZVRvRGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5k
KGNyZWF0ZUNhbGxiYWNrVGFzayh3cml0ZVRvRGF0YWJhc2UsIHRoaXMpKTsKKyAgICBtX3F1ZXVl
LmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2sod3JpdGVUb0RhdGFiYXNlLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjp3
cml0ZVRvRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9z
c1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAppbmRleCBhMjVkNmZhLi4xNTgxMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTYxLDExICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAvLyBJbnRlZ2VycyBnZXQgcGFzc2VkIHRocm91Z2ggd2l0aG91dCBhbnkgY2hhbmdl
cy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNl
PHRydWUsIGZhbHNlLCBUPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPFQ+
IHsKICAgICB9OwotCi0gICAgLy8gUG9pbnRlcnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQg
YW55IHNpZ25pZmljYW50IGNoYW5nZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFQqPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPFQqPiB7Ci0gICAgfTsKLQorICAgCiAgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnM+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8VGhyZWFk
YWJsZUxvYWRlck9wdGlvbnM+IHsKICAgICB9OwogCkBAIC0xMTksNiArMTE1LDQzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQ+IHsKICAgICB9OwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NXcmFw
cGVyIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzc1dyYXBwZXIoVCogdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgICAgIFQqIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgICAgcHJpdmF0ZToKKyAgICAgICAg
VCogbV92YWx1ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NX
cmFwcGVyPFQ+ID4geworICAgICAgICB0eXBlZGVmIFQqIFR5cGU7CisgICAgICAgIHN0YXRpYyBU
eXBlIGNvcHkoY29uc3QgQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXI8VD4mIHIpIHsgcmV0
dXJuIHIudmFsdWUoKTsgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjxUPiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKFQqIHZh
bHVlKSAKKyAgICB7CisgICAgICAgIHJldHVybiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBl
cjxUPih2YWx1ZSk7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
bGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgQWxsb3dFeHRlbmRlZExpZmV0aW1lV3JhcHBlcihUKiB2YWx1ZSkgOiBtX3ZhbHVlKHZh
bHVlKSB7IH0KKyAgICAgICAgVCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgICBwcml2YXRlOgorICAgICAgICBUKiBtX3ZhbHVlOworICAgIH07CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
QWxsb3dFeHRlbmRlZExpZmV0aW1lV3JhcHBlcjxUPiA+IHsKKyAgICAgICAgdHlwZWRlZiBUKiBU
eXBlOworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IEFsbG93RXh0ZW5kZWRMaWZldGlt
ZVdyYXBwZXI8VD4mIHIpIHsgcmV0dXJuIHIudmFsdWUoKTsgfQorICAgIH07CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyPFQ+IEFsbG93RXh0
ZW5kZWRMaWZldGltZShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBbGxvd0V4dGVu
ZGVkTGlmZXRpbWVXcmFwcGVyPFQ+KHZhbHVlKTsKKyAgICB9OworCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIENyb3NzVGhyZWFkQ29waWVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Nv
bXBsZXRpb25FdmVudC5oCmluZGV4IGE4YWMxNTEuLjk5ZTM2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
b21wbGV0aW9uRXZlbnQuaApAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGNi
NmIwZGEuLjQ5Y2EzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtODgsNiArODgsNyBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVm
UHRyPElEQkNhbAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUs
IGtleSwgY2FsbGJhY2tzKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
VF9BTExPV0VEX0VSUjsKKwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Omdl
dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpAQCAtMzgwLDggKzM4MSwxMSBAQCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y3JlYXRlSW5kZXgoY29ucwogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9IHRyYW5zYWN0aW9uOwotICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNh
Y3Rpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4RnJvbU1hcCwgb2Jq
ZWN0U3RvcmUsIGluZGV4KSkpIHsKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
CisgICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb25QdHIpLAorICAgICAgICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4
RnJvbU1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLCBp
bmRleCkpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VE
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDMzLDggKzQzNywxMSBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCVHJhbnNhY3Rpb25CYQogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9IHRyYW5zYWN0aW9uOwotICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNh
Y3Rpb25QdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmFkZEluZGV4VG9NYXAsIG9iamVj
dFN0b3JlLCBpbmRleCkpKSB7CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAor
ICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uUHRyKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjphZGRJbmRleFRvTWFw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUsIGluZGV4KSkp
IHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDQ3LDE0ICs0NTQsMTcgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXMKICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9
CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBwcnBSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBS
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2Ug
PSBwcnBSYW5nZTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNh
Y3Rpb24gPSB0cmFuc2FjdGlvblB0cjsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vy
c29ySW50ZXJuYWwsIG9iamVjdFN0b3JlLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRy
YW5zYWN0aW9uKSkpCisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlvbjsKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soCisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3RTdG9yZSwgcmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0cmFuc2Fj
dGlvblB0cikpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExP
V0VEX0VSUjsKKyAgICB9CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdG1wRGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTENh
bGxiYWNrV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxDYWxsYmFja1dyYXBw
ZXIuaAppbmRleCAzODA1OWZhLi5kMzk1MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U1FMQ2FsbGJhY2tXcmFwcGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgY29udGV4dCA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkubGVha1JlZigp
OwogICAgICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLnJlbGVhc2UoKS5sZWFrUmVmKCk7
CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNr
KCZzYWZlUmVsZWFzZSwgY2FsbGJhY2spKTsKKyAgICAgICAgY29udGV4dC0+cG9zdFRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZzYWZlUmVsZWFzZSwgQWxsb3dFeHRlbmRlZExpZmV0aW1lKGNhbGxi
YWNrKSkpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8VD4gdW53cmFwKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggZmQ4MjU5MS4uNzRkMWExNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKQEAgLTI0Niw3ICsyNDYsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbCgK
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAg
ICBQZWVyKiBwZWVyID0gUGVlcjo6Y3JlYXRlKGNsaWVudFdyYXBwZXIsIHRoaXNQdHItPm1fbG9h
ZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCB1cmwsIHByb3RvY29sKTsKLSAgICB0aGlzUHRy
LT5tX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hhbm5lbCwgdGhpc1B0ciwgcGVlciwgY2xp
ZW50V3JhcHBlciksIHRhc2tNb2RlKTsKKyAgICB0aGlzUHRyLT5tX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZC
cmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXNQdHIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhwZWVyKSwgY2xpZW50V3JhcHBlciksIHRhc2tNb2Rl
KTsKIH0KIAogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6QnJpZGdl
KFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3Jr
ZXJDbGllbnRXcmFwcGVyLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKQEAgLTI1OCw3ICsyNjEsOSBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpCcmlkZ2UoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Qwogewog
ICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpOwogICAgIHNldE1ldGhvZE5v
dENvbXBsZXRlZCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVD
YWxsYmFja1Rhc2soJkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwsIHRo
aXMsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV90YXNrTW9kZSwgdXJsLCBwcm90b2NvbCkpOwor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgbV90YXNrTW9kZSwgdXJsLCBwcm90b2NvbCkpOwogICAgIHdhaXRG
b3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgQVNTRVJUKG1fcGVlcik7CiB9CkBAIC0yODEsNyAr
Mjg2LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpj
b25uZWN0KCkKIHsKICAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKICAgICBBU1NF
UlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENv
bm5lY3QsIG1fcGVlcikpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6bWFpblRocmVhZENvbm5lY3QsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwog
fQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCkBAIC0yOTksNyArMzA1LDkgQEAgYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIEFTU0VSVChtX3BlZXIpOwogICAgIHNldE1ldGhvZE5vdENv
bXBsZXRlZCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxs
YmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZCwgbV9wZWVyLCBtZXNzYWdlKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVy
KAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjptYWluVGhyZWFkU2VuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIG1lc3NhZ2UpKTsKICAgICBSZWZQdHI8QnJpZGdl
PiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93
b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwpAQCAtMzIxLDcgKzMyOSw4IEBAIHVuc2lnbmVkIGxv
bmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91
bnQoKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBzZXRNZXRo
b2ROb3RDb21wbGV0ZWQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZEJ1ZmZlcmVkQW1vdW50LCBtX3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRCdWZmZXJlZEFtb3VudCwgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcyhtX3BlZXIpKSk7CiAgICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKICAg
ICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5n
ZXQoKTsKQEAgLTM0Miw3ICszNTEsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYwogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9zZSgpCiB7CiAgICAg
QVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJl
YWRDbG9zZSwgbV9wZWVyKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAor
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwog
fQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVz
dHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQpAQCAtMzYw
LDcgKzM3MCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6ZGlzY29ubmVjdCgpCiAgICAgaWYgKG1fcGVlcikgewogICAgICAgICBQZWVyKiBwZWVyID0g
bV9wZWVyOwogICAgICAgICBtX3BlZXIgPSAwOwotICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZtYWluVGhyZWFkRGVzdHJveSwgcGVlcikp
OworICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJm1haW5UaHJlYWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHBlZXIpKSk7CiAgICAgfQogICAgIG1fd29ya2VyQ29udGV4dCA9IDA7CiB9CkBAIC0zNzcs
NyArMzg4LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCgpCiB7CiAgICAgQVNTRVJUKG1fcGVl
cik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFz
aygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kLCBt
X3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNy
ZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5U
aHJlYWRTdXNwZW5kLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikpKTsKIH0KIAogdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFJlc3VtZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQpAQCAtMzkyLDcgKzQwNCw4
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRSZXN1
bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6cmVzdW1lKCkKIHsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFJlc3VtZSwgbV9wZWVyKSk7Cisg
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkUmVzdW1l
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikpKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbGVhckNsaWVudFdyYXBwZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBl
Y2E4ZTJlLi5hZDEyZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcApAQCAtMjg4LDcgKzI4OCw5IEBAIHN0YXRpYyB2b2lkIHBvc3RDb25z
b2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyTWVz
c2FnCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29y
a2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBz
b3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKKyAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRo
cmVhZD4gd29ya2VyVGhyZWFkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzZjQyYmIx
Li5hYzNkYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisy
MDExLTA0LTIyICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDcm9zc1RocmVh
ZENvcGllciBzaG91bGQgbm90IGhhdmUgYSBkZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciByYXcg
cG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU5MjM0CisgICAgICAgIFJlbW92ZWQgdGhlIGFibGl0eSB0byBwYXNzIHJhdyBwb2ludGVycyBj
cm9zcy10aHJlYWQKKyAgICAgICAgQWRkZWQgYW5kIGFwcGxpZWQgYW5ub3RhdGlvbnMgZm9yIGRv
aW5nIHRoYXQKKworICAgICAgICAqIHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3RUYXNrKToKKyAgICAgICAgKiBzcmMvV2Vi
U2hhcmVkV29ya2VySW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6Y29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFz
ZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFz
ZTo6d29ya2VyQ29udGV4dENsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6
OndvcmtlckNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6c3RhcnRXb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWlu
YXRlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
Q2xpZW50SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
V29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6
Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VyQ2xpZW50SW1wbDo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKiBzcmMvV2Vi
V29ya2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckltcGw6OnBvc3RNZXNz
YWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OnBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJL
aXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWluVGhyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9z
dENvcHlUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9N
YWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6Oldv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9z
dENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdERpcmVj
dG9yeUV4aXN0c1RvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uTWFp
blRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OmRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkU3VjY2VlZE9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRN
ZXRhZGF0YU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OmRpZFJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQpOgorICAgICAgICAq
IHNyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdFdyaXRlVG9NYWluVGhyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9z
dFRydW5jYXRlVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRl
ckNhbGxiYWNrc0JyaWRnZTo6cG9zdEFib3J0VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktp
dDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkV3JpdGUpOgorICAgICAgICAo
V2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRGYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkVHJ1bmNhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
SW5pdFRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6
OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1RvV29ya2VyVGhy
ZWFkKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisKIDIwMTEtMDQtMjAgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKaW5kZXgg
ZTczYzBmNC4uOWYxNDQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2hhcmVkV29ya2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2hhcmVkV29ya2VySW1wbC5jcHAKQEAgLTc2LDEyICs3NiwxMiBAQCB2b2lkIFdlYlNoYXJl
ZFdvcmtlckltcGw6OmNvbm5lY3QoV2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3ZWJDaGFubmVsLCBD
b25uZWN0TGlzdAogICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybV9j
aGFubmVsKTsKIAogICAgIHdvcmtlclRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soCi0gICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29ubmVjdFRhc2ssIHRoaXMsIGNoYW5uZWwucmVsZWFz
ZSgpKSk7CisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29ubmVjdFRhc2ssIGNoYW5uZWwu
cmVsZWFzZSgpKSk7CiAgICAgaWYgKGxpc3RlbmVyKQogICAgICAgICBsaXN0ZW5lci0+Y29ubmVj
dGVkKCk7CiB9CiAKLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdFRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU2hhcmVkV29ya2VySW1wbCogd29ya2VyLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKK3ZvaWQgV2ViU2hhcmVkV29y
a2VySW1wbDo6Y29ubmVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCiB7CiAgICAgLy8gV3JhcCB0aGUg
cGFzc2VkLWluIGNoYW5uZWwgaW4gYSBNZXNzYWdlUG9ydCwgYW5kIHNlbmQgaXQgb2ZmIHZpYSBh
IGNvbm5lY3QgZXZlbnQuCiAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBv
cnQ6OmNyZWF0ZSgqY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTaGFyZWRXb3JrZXJJbXBsLmgKaW5kZXggYjU5MWM3Yi4uMzE0NzUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaApAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgfldlYlNoYXJlZFdvcmtlcklt
cGwoKTsKIAotICAgIHN0YXRpYyB2b2lkIGNvbm5lY3RUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJTaGFyZWRXb3JrZXJJbXBsKiwgUGFzc093blB0cjxXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWw+KTsKKyAgICBzdGF0aWMgdm9pZCBjb25uZWN0VGFzayhXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWw+KTsKIAogICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogbV9jbGllbnQ7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAppbmRleCAwY2Q1
ZjQxLi4xZDRhYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJX
b3JrZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJC
YXNlLmNwcApAQCAtODksNyArODksOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgICAgIGlmIChtX3dvcmtlcikKLSAgICAgICAgICAg
IG1fd29ya2VyLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVzdWx0KSwgbV9tb2RlKTsKKyAgICAgICAgICAgIG1f
d29ya2VyLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCisgICAgICAgICAgICAgICAg
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgcmVzdWx0KSwgbV9tb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05Nyw3ICs5OCwx
MSBAQCBwcml2YXRlOgogICAgICAgICA6IG1fd29ya2VyKHdvcmtlcikKICAgICAgICAgLCBtX21v
ZGUobW9kZSkKICAgICB7Ci0gICAgICAgIHdvcmtlci0+ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dEYXRhYmFzZVRhc2ssIGNvbW1vbkNsaWVudCwgZnJh
bWUsIFN0cmluZyhuYW1lKSwgU3RyaW5nKGRpc3BsYXlOYW1lKSwgZXN0aW1hdGVkU2l6ZSwgdGhp
cykpOworICAgICAgICB3b3JrZXItPmRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dEYXRhYmFzZVRhc2ssIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3MoY29tbW9uQ2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZyYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcobmFtZSksIFN0cmluZyhkaXNwbGF5TmFtZSksIGVzdGltYXRlZFNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGFsbG93RGF0YWJhc2VUYXNrKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYkNvbW1vbldvcmtlckNsaWVudCog
Y29tbW9uQ2xpZW50LCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nIG5hbWUsIGNv
bnN0IFdURjo6U3RyaW5nIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUs
IFBhc3NSZWZQdHI8QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSkKQEAgLTI2
Miw3ICsyNjcsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtRm9yV29ya2Vy
KFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nCiB2b2lkIFdlYldvcmtlckJhc2U6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCiB7Ci0gICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VU
YXNrLCB0aGlzLAorICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rh
c2soJnBvc3RNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2ly
ZVN0cmluZygpLCBjaGFubmVscykpOwogfQogCkBAIC0yODcsOSArMjkyLDEwIEBAIHZvaWQgV2Vi
V29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBkaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0RXhjZXB0aW9uVGFzaywgdGhpcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVz
c2FnZSwgbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZVVSTCkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0RXhjZXB0aW9uVGFzaywgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTCkpOwog
fQogCiB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25UYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCkBAIC0zMTIsNyArMzE4LDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNl
Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlIHNvdXJjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIGRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIHRo
aXMsCisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9z
dENvbnNvbGVNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgdHlwZSwg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0KQEAgLTMzNCw3ICszNDAsNyBAQCB2
b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwKIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpjb25maXJtTWVzc2FnZUZy
b21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAgZGlzcGF0Y2hU
YXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmY29uZmlybU1lc3NhZ2VUYXNrLCB0
aGlzLAorICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmNv
bmZpcm1NZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0
eSkpOwogfQogCkBAIC0zNTAsNyArMzU2LDggQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpjb25maXJt
TWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIHZvaWQgV2ViV29y
a2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQog
ewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlcG9y
dFBlbmRpbmdBY3Rpdml0eVRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YXNQZW5kaW5nQWN0aXZpdHkpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5k
aW5nQWN0aXZpdHlUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zNjUs
NyArMzcyLDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiB2b2lkIFdlYldvcmtlckJhc2U6Ondv
cmtlckNvbnRleHRDbG9zZWQoKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHRDbG9zZWRUYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWRUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zODAsNyArMzg3LDcgQEAgdm9p
ZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2VkVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAogdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0RGVzdHJv
eWVkKCkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZ3b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0K
IAogdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCBmOTBlN2U4Li4xMDEwYjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNw
cApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6c3RhcnRXb3Jr
ZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwKICAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7CiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soCiAgICAgICAgICAgICAmc3RhcnRXb3JrZXJDb250ZXh0VGFzaywKLSAg
ICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LAogICAgICAgICAgICAgc2NyaXB0VVJMLnN0cmluZygpLAogICAgICAgICAgICAgdXNlckFnZW50
LAogICAgICAgICAgICAgc291cmNlQ29kZSkpOwpAQCAtMTU2LDcgKzE1Niw4IEBAIHZvaWQgV2Vi
V29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4dCgpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwogICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKLSAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmdGVybWluYXRlV29ya2VyQ29udGV4dFRhc2ssIHRoaXMpKTsKKyAg
ICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0ZXJtaW5hdGVXb3JrZXJDb250ZXh0VGFzaywgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1f
d2ViV29ya2VyLT50ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CkBAIC0xNzIsNyArMTczLDcgQEAg
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKICAg
ICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkg
ewogICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzKSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTIwMiw3ICsyMDMsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6Ondv
cmtlck9iamVjdERlc3Ryb3llZCgpCiAgICAgLy8gRXZlbiBpZiB0aGlzIGlzIGNhbGxlZCBvbiB0
aGUgbWFpbiB0aHJlYWQsIHRoZXJlIGNvdWxkIGJlIGEgcXVldWVkIHRhc2sgZm9yCiAgICAgLy8g
dGhpcyBvYmplY3QsIHNvIGRvbid0IGRlbGV0ZSBpdCByaWdodCBhd2F5LgogICAgIFdlYldvcmtl
ckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtl
ck9iamVjdERlc3Ryb3llZFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCkBAIC0yMjEsNyAr
MjIyLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKIAogICAgIGlmIChjdXJyZW50VGhyZWFkKCkg
IT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRh
c2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZyhtZXNzYWdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMyLnJlbGVhc2UoKSkpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yMzcsNyArMjM4LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBlcnJvck1lc3MKIHsKICAg
ICBpZiAoY3VycmVudFRocmVhZCgpICE9IG1fd29ya2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhlcnJvck1lc3NhZ2UpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
TnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcoc291cmNlVVJMKSkpOwpAQCAtMjYxLDcgKzI2Miw3IEBAIHZv
aWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
aW50IGRlc3RpbmF0aW9uLAogewogICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0gbV93b3JrZXJU
aHJlYWRJZCkgewogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VMZXZlbCwKQEAgLTI5NCwxNCAr
Mjk1LDE0IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6Y29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5CiAgICAgLy8gYWNjZXNzZWQuICBPdGhl
cndpc2UgdGhlcmUgYXJlIHJhY2UgY29uZGl0aW9ucyB3aXRoIHY4J3MgZ2FyYmFnZQogICAgIC8v
IGNvbGxlY3Rpb24uCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVh
dGVDYWxsYmFja1Rhc2soJmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdFRhc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBXZWJXb3Jr
ZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkpCiB7CiAgICAgLy8gU2VlIGFib3ZlIGNvbW1lbnQgaW4gY29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0LgogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRl
Q2FsbGJhY2tUYXNrKCZyZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcAppbmRleCAxNjVhZjY4
Li5iMmQ0OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBs
LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAogCiAgICAgd29ya2VyVGhy
ZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzaygKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLCBTdHJpbmcobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgU3RyaW5nKG1l
c3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJJbXBsOjp3
b3JrZXJPYmplY3REZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCA1
MTQ3ZTE1Li5mYjVkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtMTU1LDY0
ICsxNTUsOTcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpzdG9wKCkK
IAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0
ZW1Ub01haW5UaHJlYWQoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZp
bGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBjb25zdCBT
dHJpbmcmIG1vZGUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmb3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQsIGNvbW1vbkNsaWVudCwgdHlwZSwg
c2l6ZSwgY3JlYXRlLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhjb21t
b25DbGllbnQpLCB0eXBlLCBzaXplLCBjcmVhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5
c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uUGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIGRpc3BhdGNoVGFz
a1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJm1vdmVPbk1haW5UaHJlYWQsIGZpbGVT
eXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZtb3Zl
T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcyhmaWxlU3lzdGVtKSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkp
OwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDb3B5VG9N
YWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc291cmNl
UGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkK
IHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb3B5
T25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIHRo
aXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmY29weU9uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHNvdXJjZVBhdGgsIGRlc3Rp
bmF0aW9uUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChm
aWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZyZW1vdmVPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsK
KyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFz
aygmcmVtb3ZlT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3Bh
dGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlbW92ZVJlY3Vyc2l2ZWx5
T25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJlbW92ZVJl
Y3Vyc2l2ZWx5T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhy
ZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkTWV0YWRhdGFPbk1haW5UaHJl
YWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01h
aW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVhZE1ldGFkYXRhT25NYWlu
VGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVt
KiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBT
dHJpbmcmIG1vZGUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmY3JlYXRlRmlsZU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVz
aXZlLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRo
LCBleGNsdXNpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVh
ZCwgZmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVzaXZlLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZURp
cmVjdG9yeU9uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsIGV4Y2x1c2l2ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0K
IAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0c1Rv
TWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmZmlsZUV4aXN0c09uTWFp
blRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFz
a1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZmaWxlRXhpc3RzT25N
YWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBt
b2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQsIGZp
bGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlyZWN0b3J5RXhpc3RzT25NYWluVGhy
ZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhm
aWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVt
KiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsK
ICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmcmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwg
cGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwg
cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
Q29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlw
ZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTI3NiwyNyArMzA5LDMwIEBA
IHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZERpcmVjdG9yeU9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFCiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6ZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJyb3IgZXJyb3IsIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFz
aygmZGlkRmFpbE9uV29ya2VyVGhyZWFkLCB0aGlzLCBlcnJvciksIG1vZGUpOworICAgIG1heVBv
c3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVycm9yKSwgbW9kZSk7CiB9CiAKIHZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5U
aHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBT
dHJpbmcmIG1vZGUpCiB7Ci0gICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rh
c2soJmRpZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQsIHRoaXMsIG5hbWUsIHJvb3RQYXRo
KSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRp
ZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbmFtZSwgcm9v
dFBhdGgpLCBtb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpkaWRTdWNjZWVkT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQ
b3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3VjY2VlZE9uV29ya2VyVGhy
ZWFkLCB0aGlzKSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZFN1Y2NlZWRPbldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OmRpZFJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChjb25zdCBXZWJGaWxlSW5mbyYgaW5mbywgY29u
c3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRSZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZCwgdGhpcywgaW5mbyksIG1vZGUp
OworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFkTWV0
YWRhdGFPbldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgaW5mbyks
IG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJl
YWREaXJlY3RvcnlPbk1haW5UaHJlYWQoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRy
eT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1h
eVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFkRGlyZWN0b3J5T25X
b3JrZXJUaHJlYWQsIHRoaXMsIGVudHJpZXMsIGhhc01vcmUpLCBtb2RlKTsKKyAgICBtYXlQb3N0
VGFza1RvV29ya2VyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlYWREaXJlY3Rv
cnlPbldvcmtlclRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcyksIGVudHJpZXMsIGhhc01vcmUpLCBtb2RlKTsKIH0KIAogV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZShXZWJXb3JrZXJCYXNlKiB3b3JrZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFj
a3NCcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRl
ckNhbGxiYWNrc0JyaWRnZS5jcHAKaW5kZXggMTc5YWVhNS4uYjcxOGJjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZS5jcHAKQEAgLTYxLDIwICs2MSwyMiBAQCB2b2lkIFdvcmtlckZpbGVXcml0
ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RXcml0ZVRvTWFpblRocmVhZChsb25nIGxvbmcgcG9zaXRp
b24sCiB7CiAgICAgQVNTRVJUKCFtX29wZXJhdGlvbkluUHJvZ3Jlc3MpOwogICAgIG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmd3JpdGVPbk1haW5UaHJlYWQsIHRoaXMsIHBvc2l0aW9uLCBkYXRhKSk7
CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd3JpdGVP
bk1haW5UaHJlYWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgcG9zaXRpb24sIGRhdGEpKTsKIH0K
IAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0VHJ1bmNhdGVUb01h
aW5UaHJlYWQobG9uZyBsb25nIGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyk7CiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gdHJ1ZTsKLSAgICBkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0cnVuY2F0ZU9uTWFpblRocmVh
ZCwgdGhpcywgbGVuZ3RoKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNh
bGxiYWNrVGFzaygmdHJ1bmNhdGVPbk1haW5UaHJlYWQsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwg
bGVuZ3RoKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9z
dEFib3J0VG9NYWluVGhyZWFkKCkKIHsKICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNz
KTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZhYm9y
dE9uTWFpblRocmVhZCwgdGhpcykpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJmFib3J0T25NYWluVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9z
dFNodXRkb3duVG9NYWluVGhyZWFkKFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZT4gYnJpZGdlKQpAQCAtMTEzLDE3ICsxMTUsMjAgQEAgdm9pZCBXb3JrZXJGaWxlV3Jp
dGVyQ2FsbGJhY2tzQnJpZGdlOjpzaHV0ZG93bk9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXgKIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRXcml0ZShs
b25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9Xb3Jr
ZXJUaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZU9uV29ya2VyVGhyZWFkLCB0aGlz
LCBieXRlcywgY29tcGxldGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb1dvcmtlclRocmVhZCgKKyAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZU9uV29ya2VyVGhyZWFkLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlcywgY29tcGxldGUpKTsKIH0KIAogdm9pZCBXb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRGYWlsKFdlYkZpbGVFcnJvciBlcnJvcikK
IHsKLSAgICBkaXNwYXRjaFRhc2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmRp
ZEZhaWxPbldvcmtlclRocmVhZCwgdGhpcywgZXJyb3IpKTsKKyAgICBkaXNwYXRjaFRhc2tUb1dv
cmtlclRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJU
aHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVycm9yKSk7CiB9CiAKIHZvaWQg
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkVHJ1bmNhdGUoKQogewotICAgIGRp
c3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkVHJ1bmNhdGVP
bldvcmtlclRocmVhZCwgdGhpcykpOworICAgIGRpc3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKAor
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFRydW5jYXRlT25Xb3JrZXJUaHJlYWQsIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgZmls
ZVdyaXRlck9wZXJhdGlvbnNNb2RlW10gPSAiZmlsZVdyaXRlck9wZXJhdGlvbnNNb2RlIjsKQEAg
LTE0NCw3ICsxNDksOCBAQCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpXb3JrZXJG
aWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcAogCiB2b2lkIFdvcmtlckZp
bGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RJbml0VG9NYWluVGhyZWFkKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZpbml0T25NYWluVGhyZWFkLCB0aGlzLCBwYXRoKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9N
YWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmluaXRPbk1haW5UaHJlYWQs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHBhdGgpKTsKIH0KIAogV29ya2VyRmlsZVdy
aXRlckNhbGxiYWNrc0JyaWRnZTo6fldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UoKQpA
QCAtMTk2LDEzICsyMDIsMTUgQEAgdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdl
OjpydW5UYXNrT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGUKIHZvaWQgV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKFBhc3NP
d25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAgICBBU1NFUlQo
bV93b3JrZXJDb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgV2ViV29ya2VyQmFzZTo6
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09uTWFp
blRocmVhZCwgdGhpcywgdGFzaykpOworICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZydW5UYXNrT25NYWluVGhy
ZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCB0YXNrKSk7CiB9CiAKIHZvaWQgV29y
a2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQo
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9wcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09uV29ya2VyVGhyZWFkLCB0aGlz
LCB0YXNrKSwgbV9tb2RlKTsKKyAgICBtX3Byb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNv
bnRleHQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09uV29ya2VyVGhyZWFk
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCB0YXNrKSwgbV9tb2RlKTsKIH0KIAogYm9v
bCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjp3YWl0Rm9yT3BlcmF0aW9uVG9Db21w
bGV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFk
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAK
aW5kZXggMDRmYmE0Ni4uNjlhZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RocmVhZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaHJlYWRUZXN0LmNwcApAQCAtNTMsNyArNTMsOCBAQCBURVNUKENDVGhyZWFkVGVzdCwg
cGluZ1BvbmdVc2luZ0NvbmRpdGlvbikKICAgICBPd25QdHI8Q0NUaHJlYWQ+IHRocmVhZCA9IEND
VGhyZWFkOjpjcmVhdGUoKTsKICAgICBQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uIHRhcmdldDsKICAg
ICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwotICAgIHRocmVhZC0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKCZ0YXJnZXQsICZQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uOjpwaW5nLCAm
Y29tcGxldGlvbikpOworICAgIHRocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKCZ0
YXJnZXQsICZQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uOjpwaW5nLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9u
KSkpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwogCiAgICAgRVhQRUNUX0VRKHRocmVhZC0+dGhy
ZWFkSUQoKSwgdGFyZ2V0LmhpdFRocmVhZElEKTsK
</data>
<flag name="review"
          id="83696"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91195</attachid>
            <date>2011-04-26 17:42:29 -0700</date>
            <delta_ts>2011-04-27 17:26:04 -0700</delta_ts>
            <desc>Style feedback</desc>
            <filename>59234.patch</filename>
            <type>text/plain</type>
            <size>56376</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTBlMDdmLi41NWZhMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTEtMDQtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcm9zc1RocmVhZENv
cGllciBzaG91bGQgbm90IGhhdmUgYSBkZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciByYXcgcG9p
bnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MjM0CisgICAgICAgIFJlbW92ZWQgdGhlIGFibGl0eSB0byBwYXNzIHJhdyBwb2ludGVycyBjcm9z
cy10aHJlYWQKKyAgICAgICAgQWRkZWQgYW5kIGFwcGxpZWQgYW5ub3RhdGlvbnMgZm9yIGRvaW5n
IHRoYXQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlcjo6YWJvcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6c3RhcnRPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpzdG9wT25GaWxlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3RyZWFtUHJveHk6OmdldFNpemVPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
dHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVBy
b3h5OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmls
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKiBs
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uUG9z
aXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uQ2Fj
aGU6OnRyaWdnZXJSZWFkRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlcldyaXRlVG9EYXRhYmFzZSk6CisgICAgICAgICogcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3NXcmFwcGVyOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjo6dmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyOjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXI6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KiBzdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2Fs
bGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVk
QW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpy
ZXN1bWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KToKKwogMjAxMS0wNC0yMCAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggZmQyZTI2My4uZDJmODQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiogYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6
UmVhZFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gTm9u
ZSkKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJmRlbGF5ZWRTdGFydCwgdGhpcykpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVsYXllZFN0YXJ0LCBBbGxv
d0V4dGVuZGVkTGlmZXRpbWUodGhpcykpKTsKIAogICAgIG1fYmxvYiA9IGJsb2I7CiAgICAgbV9y
ZWFkVHlwZSA9IHR5cGU7CkBAIC0xNTAsNyArMTUwLDggQEAgdm9pZCBGaWxlUmVhZGVyOjphYm9y
dCgpCiAgICAgbV9zdGF0ZSA9IEFib3J0aW5nOwogCiAgICAgLy8gU2NoZWR1bGUgdG8gaGF2ZSB0
aGUgYWJvcnQgZG9uZSBsYXRlciBzaW5jZSBhYm9ydCgpIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIHRo
ZSBldmVudCBoYW5kbGVyIGFuZCB3ZSBkbyBub3Qgd2FudCB0aGUgcmVzb3VyY2UgbG9hZGluZyBj
b2RlIHRvIGJlIGluIHRoZSBzdGFjay4KLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBv
c3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVsYXllZEFib3J0LCB0aGlzKSk7CisgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzaygKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tU
YXNrKCZkZWxheWVkQWJvcnQsIEFsbG93RXh0ZW5kZWRMaWZldGltZSh0aGlzKSkpOwogfQogCiB2
b2lkIEZpbGVSZWFkZXI6OmRvQWJvcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlU3RyZWFtUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3Ry
ZWFtUHJveHkuY3BwCmluZGV4IDkyYjA3Y2QuLmQ0MzUwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVTdHJlYW1Qcm94eS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBGaWxlU3Ry
ZWFtUHJveHk6OnN0YXJ0T25GaWxlVGhyZWFkKCkKICAgICBpZiAoIWNsaWVudCgpKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9zdHJlYW0tPnN0YXJ0KCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFN0YXJ0LCB0aGlzKSk7CisgICAgbV9jb250ZXh0LT5w
b3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFN0YXJ0LCBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpzdG9wKCkKQEAgLTEwNyw3
ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBkZXJlZlByb3h5T25Db250ZXh0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBGaWxlU3RyZWFtUHJveHkqIHByb3h5KQogdm9pZCBGaWxlU3RyZWFtUHJveHk6
OnN0b3BPbkZpbGVUaHJlYWQoKQogewogICAgIG1fc3RyZWFtLT5zdG9wKCk7Ci0gICAgbV9jb250
ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRlcmVmUHJveHlPbkNvbnRleHQsIHRo
aXMpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVyZWZQ
cm94eU9uQ29udGV4dCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiBzdGF0
aWMgdm9pZCBkaWRHZXRTaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3RyZWFtUHJv
eHkqIHByb3h5LCBsb25nIGxvbmcgc2l6ZSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEZpbGVT
dHJlYW1Qcm94eTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbQogdm9pZCBGaWxlU3RyZWFtUHJveHk6OmdldFNpemVPbkZpbGVUaHJlYWQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewog
ICAgIGxvbmcgbG9uZyBzaXplID0gbV9zdHJlYW0tPmdldFNpemUocGF0aCwgZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmZGlkR2V0U2l6ZSwgdGhpcywgc2l6ZSkpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZkaWRHZXRTaXplLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LCBzaXplKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZE9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGJvb2wgc3VjY2VzcykKQEAgLTE0MSwxOCArMTQx
LDIwIEBAIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6b3Bl
bkZvclJlYWRPbkZpbGVUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0
LCBsb25nIGxvbmcgbGVuZ3RoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IG1fc3RyZWFtLT5vcGVu
Rm9yUmVhZChwYXRoLCBvZmZzZXQsIGxlbmd0aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhj
cmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW4sIHRoaXMsIHN1Y2Nlc3MpKTsKKyAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwgc3VjY2VzcykpOwogfQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6b3Bl
bkZvcldyaXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBmaWxlVGhyZWFkKCktPnBvc3RU
YXNrKGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHRoaXMsICZGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JX
cml0ZU9uRmlsZVRocmVhZCwgcGF0aCkpOworICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soCisg
ICAgICAgIGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JXcml0ZU9uRmlsZVRocmVhZCwgcGF0aCkp
OwogfQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+b3BlbkZv
cldyaXRlKHBhdGgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNr
KCZkaWRPcGVuLCB0aGlzLCBzdWNjZXNzKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZE9wZW4sIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1
Y2Nlc3MpKTsKIH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OmNsb3NlKCkKQEAgLTE3MywxMyAr
MTc1LDE1IEBAIHN0YXRpYyB2b2lkIGRpZFJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZp
bGVTdHJlYW1Qcm94eSogcHJveHksIGludCBieXRlc1JlCiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5
OjpyZWFkKGNoYXIqIGJ1ZmZlciwgaW50IGxlbmd0aCkKIHsKLSAgICBmaWxlVGhyZWFkKCktPnBv
c3RUYXNrKGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHRoaXMsICZGaWxlU3RyZWFtUHJveHk6OnJlYWRP
bkZpbGVUaHJlYWQsIGJ1ZmZlciwgbGVuZ3RoKSk7CisgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFz
aygKKyAgICAgICAgY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Qcm94eTo6
cmVhZE9uRmlsZVRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcyhidWZmZXIpLCBsZW5ndGgpKTsKIH0KIAogdm9pZCBGaWxlU3RyZWFtUHJv
eHk6OnJlYWRPbkZpbGVUaHJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKQogewogICAgIGlu
dCBieXRlc1JlYWQgPSBtX3N0cmVhbS0+cmVhZChidWZmZXIsIGxlbmd0aCk7Ci0gICAgbV9jb250
ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlYWQsIHRoaXMsIGJ5dGVzUmVh
ZCkpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFk
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlc1JlYWQpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZGlkV3JpdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSog
cHJveHksIGludCBieXRlc1dyaXR0ZW4pCkBAIC0xOTYsNyArMjAwLDcgQEAgdm9pZCBGaWxlU3Ry
ZWFtUHJveHk6OndyaXRlKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwg
aW50IGxlbmd0aCkKIHZvaWQgRmlsZVN0cmVhbVByb3h5Ojp3cml0ZU9uRmlsZVRocmVhZChjb25z
dCBLVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpCiB7CiAgICAg
aW50IGJ5dGVzV3JpdHRlbiA9IG1fc3RyZWFtLT53cml0ZShibG9iVVJMLCBwb3NpdGlvbiwgbGVu
Z3RoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkV3Jp
dGUsIHRoaXMsIGJ5dGVzV3JpdHRlbikpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRl
Q2FsbGJhY2tUYXNrKCZkaWRXcml0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgYnl0
ZXNXcml0dGVuKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFRydW5jYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBGaWxlU3RyZWFtUHJveHkqIHByb3h5LCBib29sIHN1Y2Nlc3MpCkBAIC0yMTMs
NyArMjE3LDcgQEAgdm9pZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlKGxvbmcgbG9uZyBwb3Np
dGlvbikKIHZvaWQgRmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZU9uRmlsZVRocmVhZChsb25nIGxv
bmcgcG9zaXRpb24pCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9zdHJlYW0tPnRydW5jYXRlKHBv
c2l0aW9uKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlk
VHJ1bmNhdGUsIHRoaXMsIHN1Y2Nlc3MpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0
ZUNhbGxiYWNrVGFzaygmZGlkVHJ1bmNhdGUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
IHN1Y2Nlc3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDY2NzJlZWUuLjA5
N2M2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTk1LDcgKzk1LDkgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGUKICAgICAs
IG1fdGFza01vZGUodGFza01vZGUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKIHsKICAgICBBU1NFUlQo
bV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFk
Q3JlYXRlTG9hZGVyLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zLCBvdXRnb2luZ1JlZmVycmVyKSk7
CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgcmVx
dWVzdCwgb3B0aW9ucywgb3V0Z29pbmdSZWZlcnJlcikpOwogfQogCiBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjp+TWFpblRocmVhZEJyaWRnZSgpCkBAIC0xMjksNyAr
MTMxLDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
ZXN0cm95KCkKICAgICBjbGVhckNsaWVudFdyYXBwZXIoKTsKIAogICAgIC8vICJkZWxldGUgdGhp
cyIgYW5kIG1fbWFpblRocmVhZExvYWRlcjo6ZGVyZWYoKSBvbiB0aGUgd29ya2VyIG9iamVjdCdz
IHRocmVhZC4KLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkRGVzdHJveSwgdGhpcykpOworICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tU
YXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkRGVzdHJveSwgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSkpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDYW5jZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0cikKQEAgLTE0NSw3ICsxNDgsOCBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDYW5j
ZWwoU2NyaXB0RXhlY3V0aW9uQwogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmNhbmNlbCgpCiB7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNl
bCwgdGhpcykpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAgICAgICAg
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiAgICAgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CiAg
ICAgaWYgKCFjbGllbnRXcmFwcGVyLT5kb25lKCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGNsaWVu
dCBoYXNuJ3QgcmVhY2hlZCBhIHRlcm1pbmF0aW9uIHN0YXRlLCB0aGVuIHRyYW5zaXRpb24gaXQg
Ynkgc2VuZGluZyBhIGNhbmNlbGxhdGlvbiBlcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcAppbmRleCA1YTBmNDJkLi5hNDJmMmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3Bw
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnRocmVh
ZEVudHJ5UG9pbnRJbXBsKCkKIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnRyaWdn
ZXJSZWFkRnJvbURhdGFiYXNlKCkKIHsKLSAgICBtX3F1ZXVlLmFwcGVuZChjcmVhdGVDYWxsYmFj
a1Rhc2soJkdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6cmVhZEZyb21EYXRhYmFzZSwgdGhpcykp
OworICAgIG1fcXVldWUuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzaygmR2VvbG9jYXRpb25Qb3Np
dGlvbkNhY2hlOjpyZWFkRnJvbURhdGFiYXNlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
KSk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjpyZWFkRnJvbURhdGFiYXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUqIGNhY2hl
KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjpyZWFk
RnJvbURhdGFiYXNlSW1wbCgpCiAKIHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjp0cmln
Z2VyV3JpdGVUb0RhdGFiYXNlKCkKIHsKLSAgICBtX3F1ZXVlLmFwcGVuZChjcmVhdGVDYWxsYmFj
a1Rhc2sod3JpdGVUb0RhdGFiYXNlLCB0aGlzKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoY3JlYXRl
Q2FsbGJhY2tUYXNrKHdyaXRlVG9EYXRhYmFzZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSkpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6d3JpdGVUb0RhdGFiYXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUqIGNhY2hl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYTI1
ZDZmYS4uY2VmNjkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENv
cGllci5oCkBAIC02MiwxMCArNjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTx0cnVlLCBmYWxzZSwg
VD4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxUPiB7CiAgICAgfTsKIAot
ICAgIC8vIFBvaW50ZXJzIGdldCBwYXNzZWQgdGhyb3VnaCB3aXRob3V0IGFueSBzaWduaWZpY2Fu
dCBjaGFuZ2VzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENv
cGllckJhc2U8ZmFsc2UsIGZhbHNlLCBUKj4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNz
VGhyb3VnaDxUKj4gewotICAgIH07Ci0KICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4gOiBwdWJs
aWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4g
ewogICAgIH07CiAKQEAgLTExOSw2ICsxMTUsNDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVD4gewogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgZXhwbGljaXQgQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXIoVCogdmFsdWUp
IDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgICAgIFQqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQorICAgIHByaXZhdGU6CisgICAgICAgIFQqIG1fdmFsdWU7CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjxUPiA+IHsKKyAgICAgICAg
dHlwZWRlZiBUKiBUeXBlOworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3NXcmFwcGVyPFQ+JiByKSB7IHJldHVybiByLnZhbHVlKCk7IH0KKyAgICB9
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBw
ZXI8VD4gQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhUKiB2YWx1ZSkgCisgICAgeworICAgICAgICBy
ZXR1cm4gQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXI8VD4odmFsdWUpOworICAgIH07CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWxsb3dFeHRlbmRlZExpZmV0aW1lV3Jh
cHBlciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBBbGxvd0V4dGVuZGVkTGlmZXRp
bWVXcmFwcGVyKFQqIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfQorICAgICAgICBUKiB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBUKiBt
X3ZhbHVlOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQWxsb3dFeHRlbmRlZExpZmV0aW1lV3JhcHBl
cjxUPiA+IHsKKyAgICAgICAgdHlwZWRlZiBUKiBUeXBlOworICAgICAgICBzdGF0aWMgVHlwZSBj
b3B5KGNvbnN0IEFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXI8VD4mIHIpIHsgcmV0dXJuIHIu
dmFsdWUoKTsgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBbGxvd0V4dGVu
ZGVkTGlmZXRpbWVXcmFwcGVyPFQ+IEFsbG93RXh0ZW5kZWRMaWZldGltZShUKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyPFQ+KHZhbHVl
KTsKKyAgICB9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENyb3Nz
VGhyZWFkQ29waWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCmluZGV4IGE4YWMx
NTEuLjk5ZTM2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaApAQCAtMSwzICsx
LDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGNiNmIwZGEuLjQ5Y2EzOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApA
QCAtODgsNiArODgsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNz
UmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbAogICAgIFJlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBpZiAoIXRyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpnZXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGtleSwgY2FsbGJhY2tzKSkpCiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKwogfQogCiB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3Jl
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQpAQCAtMzgwLDggKzM4MSwxMSBAQCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29ucwogCiAgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9
IHRyYW5zYWN0aW9uOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVD
YWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJu
YWwsIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb24pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnJlbW92ZUluZGV4RnJvbU1hcCwgb2JqZWN0U3RvcmUsIGluZGV4KSkpIHsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgICAgICAgIGNyZWF0ZUNhbGxi
YWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLCBpbmRleCwgdHJh
bnNhY3Rpb25QdHIpLAorICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4RnJvbU1hcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLCBpbmRleCkpKSB7CiAgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQpAQCAtNDMzLDggKzQzNywxMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYQogCiAgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9
IHRyYW5zYWN0aW9uOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVD
YWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJu
YWwsIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb25QdHIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmFkZEluZGV4VG9NYXAsIG9iamVjdFN0b3JlLCBpbmRleCkpKSB7CisgICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAorICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5z
YWN0aW9uUHRyKSwKKyAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjphZGRJbmRleFRvTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2JqZWN0U3RvcmUsIGluZGV4KSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDQ3LDE0ICs0NTQsMTcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKICAgICB0cmFuc2FjdGlv
bi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBSYW5nZSwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
cihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwog
ICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UgPSBwcnBSYW5nZTsKICAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvblB0cjsKLSAg
ICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwsIG9iamVjdFN0b3JlLCBy
YW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCisgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlv
bjsKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgICAgICBjcmVh
dGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRl
cm5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZSwgcmFuZ2Us
IGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvblB0cikpKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKyAgICB9CiB9CiAKIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVj
dFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdG1w
RGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TUUxDYWxsYmFja1dyYXBwZXIuaAppbmRleCAzODA1OWZhLi5kMzk1MjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKQEAgLTc0
LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgY29udGV4dCA9IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5yZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICAgICAgY2FsbGJhY2sgPSBt
X2NhbGxiYWNrLnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4
dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZzYWZlUmVsZWFzZSwgY2FsbGJhY2spKTsK
KyAgICAgICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZzYWZlUmVsZWFz
ZSwgQWxsb3dFeHRlbmRlZExpZmV0aW1lKGNhbGxiYWNrKSkpOwogICAgIH0KIAogICAgIFBhc3NS
ZWZQdHI8VD4gdW53cmFwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZmQ4MjU5
MS4uNzRkMWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI0Niw3ICsyNDYs
MTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWlu
VGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbCgKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBQZWVyKiBwZWVyID0gUGVlcjo6Y3JlYXRl
KGNsaWVudFdyYXBwZXIsIHRoaXNQdHItPm1fbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2Rl
LCB1cmwsIHByb3RvY29sKTsKLSAgICB0aGlzUHRyLT5tX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6c2V0V2ViU29j
a2V0Q2hhbm5lbCwgdGhpc1B0ciwgcGVlciwgY2xpZW50V3JhcHBlciksIHRhc2tNb2RlKTsKKyAg
ICB0aGlzUHRyLT5tX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCgK
KyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWws
IAorICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXNQ
dHIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhw
ZWVyKSwgY2xpZW50V3JhcHBlciksIHRhc2tNb2RlKTsKIH0KIAogV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzUmVmUHRy
PFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKQEAgLTI1OCw3ICsyNjEsOSBA
QCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpCcmlkZ2UoUGFzc1Jl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0QwogewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdy
YXBwZXIuZ2V0KCkpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6bWFpblRo
cmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwsIHRoaXMsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwg
bV90YXNrTW9kZSwgdXJsLCBwcm90b2NvbCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6Om1haW5UaHJlYWRD
cmVhdGVXZWJTb2NrZXRDaGFubmVsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV90YXNrTW9k
ZSwgdXJsLCBwcm90b2NvbCkpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAg
QVNTRVJUKG1fcGVlcik7CiB9CkBAIC0yODEsNyArMjg2LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KCkKIHsKICAgICBBU1NFUlQobV93
b3JrZXJDbGllbnRXcmFwcGVyKTsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QsIG1fcGVlcikpOworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QsIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0yOTksNyArMzA1
LDkgQEAgYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEFTU0VS
VChtX3BlZXIpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZCwgbV9wZWVyLCBtZXNzYWdlKSk7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZCwgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciks
IG1lc3NhZ2UpKTsKICAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRG
b3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwpA
QCAtMzIxLDcgKzMyOSw4IEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQoKQogICAgICAgICByZXR1cm4gMDsKICAg
ICBBU1NFUlQobV9wZWVyKTsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKLSAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50LCBtX3BlZXIp
KTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRC
dWZmZXJlZEFtb3VudCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CiAgICAgUmVm
UHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigp
OwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3Jh
cHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKQEAgLTM0Miw3ICszNTEsOCBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogYwogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpjbG9zZSgpCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZSwgbV9wZWVyKSk7CisgICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQZWVyKiBwZWVyKQpAQCAtMzYwLDcgKzM3MCw4IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiAgICAgaWYgKG1f
cGVlcikgewogICAgICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwogICAgICAgICBtX3BlZXIgPSAw
OwotICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZtYWluVGhyZWFkRGVzdHJveSwgcGVlcikpOworICAgICAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrVG9Mb2FkZXIoCisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm1haW5UaHJl
YWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHBlZXIpKSk7CiAgICAgfQogICAgIG1f
d29ya2VyQ29udGV4dCA9IDA7CiB9CkBAIC0zNzcsNyArMzg4LDggQEAgdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCoKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
c3VzcGVuZCgpCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kLCBtX3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKG1fcGVlcikpKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZFJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQZWVyKiBwZWVyKQpAQCAtMzkyLDcgKzQwNCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRSZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoK
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6cmVzdW1lKCkK
IHsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZFJlc3VtZSwgbV9wZWVyKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjptYWluVGhyZWFkUmVzdW1lLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1f
cGVlcikpKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJp
ZGdlOjpjbGVhckNsaWVudFdyYXBwZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBlY2E4ZTJlLi5hZDEyZjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMjg4LDcg
KzI4OCw5IEBAIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyTWVzc2FnCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2Fn
ZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRl
ZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzZjQyYmIxLi5hYzNkYjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDExLTA0LTIyICBEbWl0cnkgTG9tb3YgIDxk
c2xvbW92QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBDcm9zc1RocmVhZENvcGllciBzaG91bGQgbm90IGhhdmUgYSBk
ZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciByYXcgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MjM0CisgICAgICAgIFJlbW92ZWQgdGhl
IGFibGl0eSB0byBwYXNzIHJhdyBwb2ludGVycyBjcm9zcy10aHJlYWQKKyAgICAgICAgQWRkZWQg
YW5kIGFwcGxpZWQgYW5ub3RhdGlvbnMgZm9yIGRvaW5nIHRoYXQKKworICAgICAgICAqIHNyYy9X
ZWJTaGFyZWRXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
SW1wbDo6Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckltcGw6OmNv
bm5lY3RUYXNrKToKKyAgICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oOgorICAgICAg
ICAqIHNyYy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFz
ZTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckJhc2U6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViV29ya2VyQmFzZTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dENsb3NlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHREZXN0cm95ZWQpOgor
ICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyQ2xpZW50SW1wbDo6c3RhcnRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6d29ya2VyT2JqZWN0RGVz
dHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6
OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2Jq
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VySW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYldvcmtlckltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVuRmlsZVN5c3Rl
bVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENvcHlUb01haW5UaHJlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9N
YWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktp
dDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFp
blRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVh
ZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBv
c3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFk
RGlyZWN0b3J5VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6
OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVtT25NYWlu
VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6ZGlkU3VjY2VlZE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uTWFpblRocmVhZCk6CisgICAg
ICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWREaXJl
Y3RvcnlPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJh
Y2tzQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZTo6cG9zdFdyaXRlVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdFRydW5jYXRlVG9NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEFib3J0
VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZTo6ZGlkV3JpdGUpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2Fs
bGJhY2tzQnJpZGdlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRl
ckNhbGxiYWNrc0JyaWRnZTo6ZGlkVHJ1bmNhdGUpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJG
aWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0SW5pdFRvTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NC
cmlkZ2U6OmRpc3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB0ZXN0cy9DQ1Ro
cmVhZFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTEtMDQtMjAgIERv
bWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2hhcmVkV29ya2VySW1wbC5jcHAKaW5kZXggZTczYzBmNC4uOWYxNDQwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKQEAg
LTc2LDEyICs3NiwxMiBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3QoV2ViTWVz
c2FnZVBvcnRDaGFubmVsKiB3ZWJDaGFubmVsLCBDb25uZWN0TGlzdAogICAgICAgICBNZXNzYWdl
UG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybV9jaGFubmVsKTsKIAogICAgIHdvcmtlclRocmVh
ZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soCi0gICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29u
bmVjdFRhc2ssIHRoaXMsIGNoYW5uZWwucmVsZWFzZSgpKSk7CisgICAgICAgIGNyZWF0ZUNhbGxi
YWNrVGFzaygmY29ubmVjdFRhc2ssIGNoYW5uZWwucmVsZWFzZSgpKSk7CiAgICAgaWYgKGxpc3Rl
bmVyKQogICAgICAgICBsaXN0ZW5lci0+Y29ubmVjdGVkKCk7CiB9CiAKLXZvaWQgV2ViU2hhcmVk
V29ya2VySW1wbDo6Y29ubmVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
V2ViU2hhcmVkV29ya2VySW1wbCogd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4gY2hhbm5lbCkKK3ZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdFRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+
IGNoYW5uZWwpCiB7CiAgICAgLy8gV3JhcCB0aGUgcGFzc2VkLWluIGNoYW5uZWwgaW4gYSBNZXNz
YWdlUG9ydCwgYW5kIHNlbmQgaXQgb2ZmIHZpYSBhIGNvbm5lY3QgZXZlbnQuCiAgICAgUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqY29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgKaW5kZXgg
YjU5MWM3Yi4uMzE0NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2hhcmVkV29ya2VySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgfldlYlNoYXJlZFdvcmtlckltcGwoKTsKIAotICAgIHN0YXRpYyB2b2lkIGNv
bm5lY3RUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTaGFyZWRXb3Jr
ZXJJbXBsKiwgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw+KTsKKyAgICBz
dGF0aWMgdm9pZCBjb25uZWN0VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw+KTsKIAogICAgIFdlYkNvbW1v
bldvcmtlckNsaWVudCogbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJCYXNlLmNwcAppbmRleCAwY2Q1ZjQxLi4xZDRhYzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcApAQCAtODksNyArODksOCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAg
ICAgIGlmIChtX3dvcmtlcikKLSAgICAgICAgICAgIG1fd29ya2VyLT5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVz
dWx0KSwgbV9tb2RlKTsKKyAgICAgICAgICAgIG1fd29ya2VyLT5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckNvbnRleHQoCisgICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21w
bGV0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgcmVzdWx0KSwgbV9tb2RlKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC05Nyw3ICs5OCwxMSBAQCBwcml2YXRlOgogICAgICAgICA6IG1f
d29ya2VyKHdvcmtlcikKICAgICAgICAgLCBtX21vZGUobW9kZSkKICAgICB7Ci0gICAgICAgIHdv
cmtlci0+ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dE
YXRhYmFzZVRhc2ssIGNvbW1vbkNsaWVudCwgZnJhbWUsIFN0cmluZyhuYW1lKSwgU3RyaW5nKGRp
c3BsYXlOYW1lKSwgZXN0aW1hdGVkU2l6ZSwgdGhpcykpOworICAgICAgICB3b3JrZXItPmRpc3Bh
dGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxs
b3dEYXRhYmFzZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZyYW1l
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcobmFtZSksIFN0cmluZyhk
aXNwbGF5TmFtZSksIGVzdGltYXRlZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2
b2lkIGFsbG93RGF0YWJhc2VUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFdURjo6U3RyaW5nIG5hbWUsIGNvbnN0IFdURjo6U3RyaW5nIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8QWxsb3dEYXRhYmFzZU1h
aW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSkKQEAgLTI2Miw3ICsyNjcsNyBAQCB2b2lkIFdlYldvcmtl
ckJhc2U6Om9wZW5GaWxlU3lzdGVtRm9yV29ya2VyKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwg
bG9uZyBsb25nCiB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4gY2hhbm5lbHMpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUYXNrLCB0aGlzLAorICAgIGRpc3BhdGNoVGFz
a1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVGFzaywgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLCBjaGFubmVscykpOwogfQog
CkBAIC0yODcsOSArMjkyLDEwIEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZwb3N0RXhjZXB0aW9uVGFzaywgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTCkpOworICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0RXhjZXB0aW9uVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZVVSTCkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OnBv
c3RFeGNlcHRpb25UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zMTIs
NyArMzE4LDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtl
ck9iamVjdChNZXNzYWdlU291cmNlIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rh
c2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIHRoaXMsCisgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSwgdHlwZSwgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpKTsKIH0KQEAgLTMzNCw3ICszNDAsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25z
b2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIAogdm9pZCBX
ZWJXb3JrZXJCYXNlOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmY29uZmlybU1lc3NhZ2VUYXNrLCB0aGlzLAorICAgIGRpc3BhdGNoVGFza1RvTWFp
blRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmNvbmZpcm1NZXNzYWdlVGFzaywgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogfQogCkBAIC0zNTAsNyArMzU2LDgg
QEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpjb25maXJtTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwKIHZvaWQgV2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2
aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRo
cmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBoYXNQZW5k
aW5nQWN0aXZpdHkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKIH0KIAog
dm9pZCBXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zNjUsNyArMzcyLDcgQEAgdm9pZCBXZWJXb3JrZXJC
YXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsCiB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWQoKQogewogICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRl
eHRDbG9zZWRUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiB2b2lkIFdlYldvcmtl
ckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsCkBAIC0zODAsNyArMzg3LDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250
ZXh0Q2xvc2VkVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogdm9pZCBXZWJX
b3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBkaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGVzdHJveWVkVGFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3Jr
ZXJDb250ZXh0RGVzdHJveWVkVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNw
cAppbmRleCBmOTBlN2U4Li4xMDEwYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQg
V2ViV29ya2VyQ2xpZW50SW1wbDo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlw
dFVSTCwKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIFdlYldvcmtlckJhc2U6
OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgICAgICAg
ICAmc3RhcnRXb3JrZXJDb250ZXh0VGFzaywKLSAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgc2NyaXB0VVJMLnN0
cmluZygpLAogICAgICAgICAgICAgdXNlckFnZW50LAogICAgICAgICAgICAgc291cmNlQ29kZSkp
OwpAQCAtMTU2LDcgKzE1Niw4IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRl
V29ya2VyQ29udGV4dCgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Fza2VkVG9UZXJtaW5hdGUg
PSB0cnVlOwogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgV2ViV29ya2VyQmFz
ZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmdGVybWluYXRl
V29ya2VyQ29udGV4dFRhc2ssIHRoaXMpKTsKKyAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0ZXJt
aW5hdGVXb3JrZXJDb250ZXh0VGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fd2ViV29ya2VyLT50ZXJtaW5hdGVXb3JrZXJD
b250ZXh0KCk7CkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291
bnQ7CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewogICAgICAgICBXZWJXb3JrZXJCYXNlOjpk
aXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRv
V29ya2VyQ29udGV4dFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5uZWxzKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw3ICsyMDMsNyBA
QCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCiAgICAg
Ly8gRXZlbiBpZiB0aGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQsIHRoZXJlIGNvdWxk
IGJlIGEgcXVldWVkIHRhc2sgZm9yCiAgICAgLy8gdGhpcyBvYmplY3QsIHNvIGRvbid0IGRlbGV0
ZSBpdCByaWdodCBhd2F5LgogICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRo
cmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlck9iamVjdERlc3Ryb3llZFRhc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZv
aWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBX
ZWJTdHJpbmcmIG1lc3NhZ2UsCkBAIC0yMjEsNyArMjIyLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGll
bnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2Fn
ZSwKIAogICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAg
ICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhtZXNzYWdlKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bm5lbHMyLnJlbGVhc2UoKSkpOwogICAgICAgICByZXR1cm47CkBAIC0yMzcsNyArMjM4LDcgQEAg
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29u
c3QgV2ViU3RyaW5nJiBlcnJvck1lc3MKIHsKICAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IG1f
d29ya2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0
cmluZyhlcnJvck1lc3NhZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoc291cmNl
VVJMKSkpOwpAQCAtMjYxLDcgKzI2Miw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50IGRlc3RpbmF0aW9uLAogewogICAgIGlm
IChjdXJyZW50VGhyZWFkKCkgIT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAgICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2VMZXZlbCwKQEAgLTI5NCwxNCArMjk1LDE0IEBAIHZvaWQgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5CiAgICAgLy8gYWNjZXNzZWQuICBPdGhlcndpc2UgdGhlcmUgYXJlIHJhY2UgY29uZGl0
aW9ucyB3aXRoIHY4J3MgZ2FyYmFnZQogICAgIC8vIGNvbGxlY3Rpb24uCiAgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmNvbmZpcm1NZXNz
YWdlRnJvbVdvcmtlck9iamVjdFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcykpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5n
QWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7CiAgICAgLy8gU2VlIGFib3ZlIGNv
bW1lbnQgaW4gY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0LgogICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZXBvcnRQZW5kaW5n
QWN0aXZpdHlUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YXNQZW5kaW5nQWN0aXZpdHkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJJbXBsLmNwcAppbmRleCAxNjVhZjY4Li5iMmQ0OTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZv
aWQgV2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgV2ViU3Ry
aW5nJiBtZXNzYWdlLAogCiAgICAgd29ya2VyVGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzaygK
ICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRh
c2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBTdHJpbmcobWVzc2FnZSksIGNo
YW5uZWxzLnJlbGVhc2UoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSwgU3RyaW5nKG1lc3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkp
KTsKIH0KIAogdm9pZCBXZWJXb3JrZXJJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCA1MTQ3ZTE1Li5mYjVkZDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtMTU1LDY0ICsxNTUsOTcgQEAgdm9pZCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpzdG9wKCkKIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0ZW1Ub01haW5UaHJlYWQoV2ViQ29tbW9uV29y
a2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBs
b25nIHNpemUsIGJvb2wgY3JlYXRlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW1Pbk1h
aW5UaHJlYWQsIGNvbW1vbkNsaWVudCwgdHlwZSwgc2l6ZSwgY3JlYXRlLCB0aGlzLCBtb2RlKSk7
CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJm9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhjb21tb25DbGllbnQpLCB0eXBlLCBzaXplLCBjcmVh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgY29uc3QgU3Ry
aW5nJiBtb2RlKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFj
a1Rhc2soJm1vdmVPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0
aW9uUGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZtb3ZlT25NYWluVGhyZWFkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgc291cmNl
UGF0aCwgZGVzdGluYXRpb25QYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb3B5T25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBz
b3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29weU9uTWFpblRo
cmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
ZmlsZVN5c3RlbSksIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAog
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhy
ZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZW1vdmVPbk1haW5UaHJlYWQsIGZp
bGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVtb3ZlT25NYWluVGhyZWFkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVt
KSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
QVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBw
YXRoLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVt
KSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VS
VChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMs
IG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmcmVhZE1ldGFkYXRhT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUp
KTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRl
RmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmY3JlYXRlRmlsZU9uTWFpblRo
cmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVzaXZlLCB0aGlzLCBtb2RlKSk7CisgICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0
ZUZpbGVPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLCBleGNsdXNpdmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAK
IHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9y
eVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZp
bGVTeXN0ZW0pOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rh
c2soJmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVz
aXZlLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSks
IHBhdGgsIGV4Y2x1c2l2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAg
ICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmZmlsZUV4aXN0c09uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwg
dGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZmaWxlRXhpc3RzT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1v
ZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RGly
ZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lz
dGVtKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZk
aXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUp
KTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNr
VGFzaygmZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsK
IH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZERpcmVj
dG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0g
ICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVhZERpcmVj
dG9yeU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFk
RGlyZWN0b3J5T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25D
bGllbnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3Jl
YXRlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKQEAgLTI3NiwyNyArMzA5LDMwIEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFCiAK
IHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uTWFpblRocmVh
ZChXZWJGaWxlRXJyb3IgZXJyb3IsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0
VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkRmFpbE9uV29ya2VyVGhyZWFkLCB0
aGlzLCBlcnJvciksIG1vZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhp
cyksIGVycm9yKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbWF5UG9z
dFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW5GaWxlU3lzdGVtT25Xb3Jr
ZXJUaHJlYWQsIHRoaXMsIG5hbWUsIHJvb3RQYXRoKSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tU
b1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJl
YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSwgbmFtZSwgcm9vdFBhdGgpLCBtb2RlKTsKIH0KIAogdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVkT25NYWluVGhyZWFkKGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkU3VjY2VlZE9uV29ya2VyVGhyZWFkLCB0aGlzKSwgbW9kZSk7CisgICAgbWF5
UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFN1Y2NlZWRPbldvcmtlclRo
cmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSksIG1vZGUpOwogfQogCiB2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uTWFpblRocmVh
ZChjb25zdCBXZWJGaWxlSW5mbyYgaW5mbywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1h
eVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFkTWV0YWRhdGFPbldv
cmtlclRocmVhZCwgdGhpcywgaW5mbyksIG1vZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZCwgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgaW5mbyksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoY29u
c3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSwg
Y29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRSZWFkRGlyZWN0b3J5T25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVudHJpZXMs
IGhhc01vcmUpLCBtb2RlKTsKKyAgICBtYXlQb3N0VGFza1RvV29ya2VyKAorICAgICAgICBjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZFJlYWREaXJlY3RvcnlPbldvcmtlclRocmVhZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVudHJpZXMs
IGhhc01vcmUpLCBtb2RlKTsKIH0KIAogV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXZWJXb3JrZXJCYXNlKiB3b3JrZXIsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAKaW5kZXgg
MTc5YWVhNS4uYjcxOGJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAKQEAgLTYxLDIw
ICs2MSwyMiBAQCB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RXcml0
ZVRvTWFpblRocmVhZChsb25nIGxvbmcgcG9zaXRpb24sCiB7CiAgICAgQVNTRVJUKCFtX29wZXJh
dGlvbkluUHJvZ3Jlc3MpOwogICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd3JpdGVPbk1haW5U
aHJlYWQsIHRoaXMsIHBvc2l0aW9uLCBkYXRhKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd3JpdGVPbk1haW5UaHJlYWQsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyh0aGlzKSwgcG9zaXRpb24sIGRhdGEpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0VHJ1bmNhdGVUb01haW5UaHJlYWQobG9uZyBsb25nIGxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIW1fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7CiAgICAgbV9vcGVyYXRpb25J
blByb2dyZXNzID0gdHJ1ZTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZ0cnVuY2F0ZU9uTWFpblRocmVhZCwgdGhpcywgbGVuZ3RoKSk7CisgICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmdHJ1bmNhdGVPbk1haW5U
aHJlYWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbGVuZ3RoKSk7CiB9CiAKIHZvaWQgV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEFib3J0VG9NYWluVGhyZWFkKCkKIHsKICAg
ICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZhYm9ydE9uTWFpblRocmVhZCwgdGhpcykpOworICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmFib3J0T25NYWlu
VGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdFNodXRkb3duVG9NYWluVGhyZWFkKFBhc3NS
ZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlKQpAQCAtMTEzLDE3
ICsxMTUsMjAgQEAgdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpzaHV0ZG93
bk9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXgKIAogdm9pZCBXb3JrZXJGaWxlV3Jp
dGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxl
dGUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZkaWRXcml0ZU9uV29ya2VyVGhyZWFkLCB0aGlzLCBieXRlcywgY29tcGxldGUpKTsKKyAgICBk
aXNwYXRjaFRhc2tUb1dvcmtlclRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZk
aWRXcml0ZU9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRl
cywgY29tcGxldGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdl
OjpkaWRGYWlsKFdlYkZpbGVFcnJvciBlcnJvcikKIHsKLSAgICBkaXNwYXRjaFRhc2tUb1dvcmtl
clRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEZhaWxPbldvcmtlclRocmVhZCwgdGhpcywg
ZXJyb3IpKTsKKyAgICBkaXNwYXRjaFRhc2tUb1dvcmtlclRocmVhZCgKKyAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcyksIGVycm9yKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0Jy
aWRnZTo6ZGlkVHJ1bmNhdGUoKQogewotICAgIGRpc3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmZGlkVHJ1bmNhdGVPbldvcmtlclRocmVhZCwgdGhpcykpOworICAg
IGRpc3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JmRpZFRydW5jYXRlT25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykp
KTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgZmlsZVdyaXRlck9wZXJhdGlvbnNNb2RlW10gPSAi
ZmlsZVdyaXRlck9wZXJhdGlvbnNNb2RlIjsKQEAgLTE0NCw3ICsxNDksOCBAQCBXb3JrZXJGaWxl
V3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNv
bnN0IFN0cmluZyYgcAogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBv
c3RJbml0VG9NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZpbml0T25NYWluVGhyZWFkLCB0aGlz
LCBwYXRoKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVD
YWxsYmFja1Rhc2soJmluaXRPbk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhp
cyksIHBhdGgpKTsKIH0KIAogV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6fldvcmtl
ckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UoKQpAQCAtMTk2LDEzICsyMDIsMTUgQEAgdm9pZCBX
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpydW5UYXNrT25Xb3JrZXJUaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGUKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzaykKIHsKICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7Ci0gICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09uTWFpblRocmVhZCwgdGhpcywgdGFzaykpOworICAg
IFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZydW5UYXNrT25NYWluVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXMpLCB0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRn
ZTo6ZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
bV9wcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFz
aygmcnVuVGFza09uV29ya2VyVGhyZWFkLCB0aGlzLCB0YXNrKSwgbV9tb2RlKTsKKyAgICBtX3By
b3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCisgICAgICAgIGNyZWF0ZUNhbGxi
YWNrVGFzaygmcnVuVGFza09uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCB0YXNrKSwgbV9tb2RlKTsKIH0KIAogYm9vbCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tz
QnJpZGdlOjp3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAKaW5kZXggMDRmYmE0Ni4uNjlhZTEwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcApAQCAtNTMs
NyArNTMsOCBAQCBURVNUKENDVGhyZWFkVGVzdCwgcGluZ1BvbmdVc2luZ0NvbmRpdGlvbikKICAg
ICBPd25QdHI8Q0NUaHJlYWQ+IHRocmVhZCA9IENDVGhyZWFkOjpjcmVhdGUoKTsKICAgICBQaW5n
UG9uZ1VzaW5nQ29uZGl0aW9uIHRhcmdldDsKICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0
aW9uOwotICAgIHRocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKCZ0YXJnZXQsICZQ
aW5nUG9uZ1VzaW5nQ29uZGl0aW9uOjpwaW5nLCAmY29tcGxldGlvbikpOworICAgIHRocmVhZC0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKCZ0YXJnZXQsICZQaW5nUG9uZ1VzaW5nQ29uZGl0
aW9uOjpwaW5nLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwogICAgIGNvbXBsZXRpb24ud2FpdCgp
OwogCiAgICAgRVhQRUNUX0VRKHRocmVhZC0+dGhyZWFkSUQoKSwgdGFyZ2V0LmhpdFRocmVhZElE
KTsK
</data>
<flag name="review"
          id="84002"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91389</attachid>
            <date>2011-04-27 17:26:04 -0700</date>
            <delta_ts>2011-04-27 17:27:45 -0700</delta_ts>
            <desc>CR feedback addressed</desc>
            <filename>59234.patch</filename>
            <type>text/plain</type>
            <size>56015</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTBlMDdmLi41NWZhMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTEtMDQtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcm9zc1RocmVhZENv
cGllciBzaG91bGQgbm90IGhhdmUgYSBkZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciByYXcgcG9p
bnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MjM0CisgICAgICAgIFJlbW92ZWQgdGhlIGFibGl0eSB0byBwYXNzIHJhdyBwb2ludGVycyBjcm9z
cy10aHJlYWQKKyAgICAgICAgQWRkZWQgYW5kIGFwcGxpZWQgYW5ub3RhdGlvbnMgZm9yIGRvaW5n
IHRoYXQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlcjo6YWJvcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6c3RhcnRPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpzdG9wT25GaWxlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3RyZWFtUHJveHk6OmdldFNpemVPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
dHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVBy
b3h5OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmls
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKiBs
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uUG9z
aXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uQ2Fj
aGU6OnRyaWdnZXJSZWFkRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlcldyaXRlVG9EYXRhYmFzZSk6CisgICAgICAgICogcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3NXcmFwcGVyOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjo6dmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyOjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXI6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KiBzdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2Fs
bGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVk
QW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpy
ZXN1bWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KToKKwogMjAxMS0wNC0yMCAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggZmQyZTI2My4uN2FmZWQ1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiogYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6
UmVhZFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gTm9u
ZSkKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJmRlbGF5ZWRTdGFydCwgdGhpcykpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVsYXllZFN0YXJ0LCBBbGxv
d0FjY2Vzc0xhdGVyKHRoaXMpKSk7CiAKICAgICBtX2Jsb2IgPSBibG9iOwogICAgIG1fcmVhZFR5
cGUgPSB0eXBlOwpAQCAtMTUwLDcgKzE1MCw4IEBAIHZvaWQgRmlsZVJlYWRlcjo6YWJvcnQoKQog
ICAgIG1fc3RhdGUgPSBBYm9ydGluZzsKIAogICAgIC8vIFNjaGVkdWxlIHRvIGhhdmUgdGhlIGFi
b3J0IGRvbmUgbGF0ZXIgc2luY2UgYWJvcnQoKSBtaWdodCBiZSBjYWxsZWQgZnJvbSB0aGUgZXZl
bnQgaGFuZGxlciBhbmQgd2UgZG8gbm90IHdhbnQgdGhlIHJlc291cmNlIGxvYWRpbmcgY29kZSB0
byBiZSBpbiB0aGUgc3RhY2suCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJmRlbGF5ZWRBYm9ydCwgdGhpcykpOworICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
ZGVsYXllZEFib3J0LCBBbGxvd0FjY2Vzc0xhdGVyKHRoaXMpKSk7CiB9CiAKIHZvaWQgRmlsZVJl
YWRlcjo6ZG9BYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVT
dHJlYW1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTdHJlYW1Qcm94eS5j
cHAKaW5kZXggOTJiMDdjZC4uZDQzNTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlU3RyZWFtUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVN0cmVhbVByb3h5LmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6
c3RhcnRPbkZpbGVUaHJlYWQoKQogICAgIGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX3N0cmVhbS0+c3RhcnQoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNh
bGxiYWNrVGFzaygmZGlkU3RhcnQsIHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3RhcnQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykp
KTsKIH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnN0b3AoKQpAQCAtMTA3LDcgKzEwNyw3IEBA
IHN0YXRpYyB2b2lkIGRlcmVmUHJveHlPbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEZpbGVTdHJlYW1Qcm94eSogcHJveHkpCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6c3RvcE9uRmls
ZVRocmVhZCgpCiB7CiAgICAgbV9zdHJlYW0tPnN0b3AoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVyZWZQcm94eU9uQ29udGV4dCwgdGhpcykpOworICAg
IG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkZXJlZlByb3h5T25Db250
ZXh0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRp
ZEdldFNpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHks
IGxvbmcgbG9uZyBzaXplKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRmlsZVN0cmVhbVByb3h5
OjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZU9uRmlsZVRocmVhZChjb25zdCBTdHJp
bmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgbG9uZyBs
b25nIHNpemUgPSBtX3N0cmVhbS0+Z2V0U2l6ZShwYXRoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRHZXRT
aXplLCB0aGlzLCBzaXplKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZEdldFNpemUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHNpemUpKTsK
IH0KIAogc3RhdGljIHZvaWQgZGlkT3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0
cmVhbVByb3h5KiBwcm94eSwgYm9vbCBzdWNjZXNzKQpAQCAtMTQxLDE4ICsxNDEsMjAgQEAgdm9p
ZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb24KIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZE9u
RmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9u
ZyBsZW5ndGgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9zdHJlYW0tPm9wZW5Gb3JSZWFkKHBh
dGgsIG9mZnNldCwgbGVuZ3RoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkT3BlbiwgdGhpcywgc3VjY2VzcykpOworICAgIG1fY29udGV4dC0+cG9zdFRh
c2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
RmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxl
VGhyZWFkLCBwYXRoKSk7CisgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzaygKKyAgICAgICAgY3Jl
YXRlRmlsZVRocmVhZFRhc2sodGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZp
bGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkLCBwYXRoKSk7CiB9CiAKIHZv
aWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGVPbkZpbGVUaHJlYWQoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IG1fc3RyZWFtLT5vcGVuRm9yV3JpdGUocGF0
aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW4s
IHRoaXMsIHN1Y2Nlc3MpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmZGlkT3BlbiwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc3VjY2VzcykpOwog
fQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Y2xvc2UoKQpAQCAtMTczLDEzICsxNzUsMTUgQEAg
c3RhdGljIHZvaWQgZGlkUmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVBy
b3h5KiBwcm94eSwgaW50IGJ5dGVzUmUKIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnJlYWQoY2hh
ciogYnVmZmVyLCBpbnQgbGVuZ3RoKQogewotICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmlsZVRocmVh
ZCwgYnVmZmVyLCBsZW5ndGgpKTsKKyAgICBmaWxlVGhyZWFkKCktPnBvc3RUYXNrKAorICAgICAg
ICBjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmlsZVN0cmVhbVByb3h5OjpyZWFkT25GaWxl
VGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKGJ1ZmZlciksIGxlbmd0aCkpOwogfQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6cmVhZE9u
RmlsZVRocmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpCiB7CiAgICAgaW50IGJ5dGVzUmVh
ZCA9IG1fc3RyZWFtLT5yZWFkKGJ1ZmZlciwgbGVuZ3RoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZCwgdGhpcywgYnl0ZXNSZWFkKSk7CisgICAg
bV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlYWQsIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzUmVhZCkpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRX
cml0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgaW50
IGJ5dGVzV3JpdHRlbikKQEAgLTE5Niw3ICsyMDAsNyBAQCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6
d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3Ro
KQogdm9pZCBGaWxlU3RyZWFtUHJveHk6OndyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJs
b2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0ZXNX
cml0dGVuID0gbV9zdHJlYW0tPndyaXRlKGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpOwotICAg
IG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZSwgdGhpcywg
Ynl0ZXNXcml0dGVuKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rh
c2soJmRpZFdyaXRlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlc1dyaXR0ZW4p
KTsKIH0KIAogc3RhdGljIHZvaWQgZGlkVHJ1bmNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGJvb2wgc3VjY2VzcykKQEAgLTIxMyw3ICsyMTcsNyBA
QCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6dHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKQogdm9p
ZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlv
bikKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+dHJ1bmNhdGUocG9zaXRpb24pOwot
ICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwg
dGhpcywgc3VjY2VzcykpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZkaWRUcnVuY2F0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc3VjY2Vzcykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjY3MmVlZS4uMDk3YzYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtOTUsNyArOTUsOSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZQogICAgICwgbV90YXNrTW9k
ZSh0YXNrTW9kZS5jcm9zc1RocmVhZFN0cmluZygpKQogewogICAgIEFTU0VSVChtX3dvcmtlckNs
aWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihj
cmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2Fk
ZXIsIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMsIG91dGdvaW5nUmVmZXJyZXIpKTsKKyAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlciwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCByZXF1ZXN0LCBvcHRp
b25zLCBvdXRnb2luZ1JlZmVycmVyKSk7CiB9CiAKIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJpZGdlKCkKQEAgLTEyOSw3ICsxMzEsOCBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRlc3Ryb3koKQog
ICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOwogCiAgICAgLy8gImRlbGV0ZSB0aGlzIiBhbmQgbV9t
YWluVGhyZWFkTG9hZGVyOjpkZXJlZigpIG9uIHRoZSB3b3JrZXIgb2JqZWN0J3MgdGhyZWFkLgot
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJk1h
aW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCB0aGlzKSk7CisgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5U
aHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNYWlu
VGhyZWFkQnJpZGdlKiB0aGlzUHRyKQpAQCAtMTQ1LDcgKzE0OCw4IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRF
eGVjdXRpb25DCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKCkKIHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsLCB0aGlzKSk7
CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDYW5jZWwsIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcykpKTsKICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciog
Y2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKICAgICBpZiAoIWNs
aWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhhc24ndCBy
ZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBzZW5kaW5n
IGEgY2FuY2VsbGF0aW9uIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2Nh
dGlvblBvc2l0aW9uQ2FjaGUuY3BwCmluZGV4IDVhMGY0MmQuLmE0MmYyZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAKQEAgLTEyOCw3
ICsxMjgsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6dGhyZWFkRW50cnlQb2lu
dEltcGwoKQogCiB2b2lkIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlclJlYWRGcm9t
RGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzaygmR2Vv
bG9jYXRpb25Qb3NpdGlvbkNhY2hlOjpyZWFkRnJvbURhdGFiYXNlLCB0aGlzKSk7CisgICAgbV9x
dWV1ZS5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6
OnJlYWRGcm9tRGF0YWJhc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAog
dm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZSogY2FjaGUpCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJh
c2VJbXBsKCkKIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnRyaWdnZXJXcml0ZVRv
RGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzayh3cml0
ZVRvRGF0YWJhc2UsIHRoaXMpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rh
c2sod3JpdGVUb0RhdGFiYXNlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAK
IHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjp3cml0ZVRvRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCBhMjVkNmZhLi40MGUy
NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAg
LTYyLDEwICs2Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPHRydWUsIGZhbHNlLCBUPiA6IHB1Ymxp
YyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPFQ+IHsKICAgICB9OwogCi0gICAgLy8gUG9p
bnRlcnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQgYW55IHNpZ25pZmljYW50IGNoYW5nZXMu
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxm
YWxzZSwgZmFsc2UsIFQqPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPFQq
PiB7Ci0gICAgfTsKLQogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIFRocmVhZGFibGVMb2FkZXJPcHRpb25zPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPFRocmVhZGFibGVMb2FkZXJPcHRpb25zPiB7CiAgICAgfTsK
IApAQCAtMTE5LDYgKzExNSw0NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUPiB7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlciB7CisgICAgcHVibGljOgorICAgICAgICBl
eHBsaWNpdCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcihUKiB2YWx1ZSkgOiBtX3ZhbHVl
KHZhbHVlKSB7IH0KKyAgICAgICAgVCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CisgICAgcHJpdmF0ZToKKyAgICAgICAgVCogbV92YWx1ZTsKKyAgICB9OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2Us
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NXcmFwcGVyPFQ+ID4geworICAgICAgICB0eXBlZGVmIFQq
IFR5cGU7CisgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzc1dyYXBwZXI8VD4mIHdyYXBwZXIpIHsgcmV0dXJuIHdyYXBwZXIudmFsdWUoKTsgfQorICAg
IH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3Jh
cHBlcjxUPiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKFQqIHZhbHVlKSAKKyAgICB7CisgICAgICAg
IHJldHVybiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjxUPih2YWx1ZSk7CisgICAgfQor
CisgICAgLy8gRklYTUU6IE1vdmUgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUuIEFsbG93QWNj
ZXNzTGF0ZXIgaXMgZm9yIGNyb3NzLXRocmVhZCBhY2Nlc3MKKyAgICAvLyB0aGF0IGlzIG5vdCBj
cm9zcy10aHJlYWQgKHRhc2tzIHBvc3RlZCB0byBhIHF1ZXVlIGd1YXJhbnRlZWQgdG8gcnVuIG9u
IHRoZSBzYW1lIHRocmVhZCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWxsb3dB
Y2Nlc3NMYXRlcldyYXBwZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQWxsb3dB
Y2Nlc3NMYXRlcldyYXBwZXIoVCogdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgICAg
IFQqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIHByaXZhdGU6CisgICAg
ICAgIFQqIG1fdmFsdWU7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBBbGxvd0FjY2Vzc0xhdGVyV3Jh
cHBlcjxUPiA+IHsKKyAgICAgICAgdHlwZWRlZiBUKiBUeXBlOworICAgICAgICBzdGF0aWMgVHlw
ZSBjb3B5KGNvbnN0IEFsbG93QWNjZXNzTGF0ZXJXcmFwcGVyPFQ+JiB3cmFwcGVyKSB7IHJldHVy
biB3cmFwcGVyLnZhbHVlKCk7IH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
QWxsb3dBY2Nlc3NMYXRlcldyYXBwZXI8VD4gQWxsb3dBY2Nlc3NMYXRlcihUKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBbGxvd0FjY2Vzc0xhdGVyV3JhcHBlcjxUPih2YWx1ZSk7Cisg
ICAgfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENyb3NzVGhyZWFk
Q29waWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCmluZGV4IGE4YWMxNTEuLjk5
ZTM2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaApAQCAtMSwzICsxLDQgQEAK
KwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwCmluZGV4IGNiNmIwZGEuLjQwY2NjODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMzgw
LDggKzM4MCwxMSBAQCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29ucwogCiAgICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9IHRyYW5zYWN0aW9u
OwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
JklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwsIG9iamVjdFN0
b3JlLCBpbmRleCwgdHJhbnNhY3Rpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92
ZUluZGV4RnJvbU1hcCwgb2JqZWN0U3RvcmUsIGluZGV4KSkpIHsKKyAgICBpZiAoIXRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb25QdHIp
LAorICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnJlbW92ZUluZGV4RnJvbU1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdFN0b3JlLCBpbmRleCkpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246Ok5PVF9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDMz
LDggKzQzNiwxMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYQogCiAgICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9IHRyYW5zYWN0aW9u
OwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
JklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwsIG9iamVjdFN0
b3JlLCBpbmRleCwgdHJhbnNhY3Rpb25QdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmFk
ZEluZGV4VG9NYXAsIG9iamVjdFN0b3JlLCBpbmRleCkpKSB7CisgICAgaWYgKCF0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKAorICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uUHRyKSwK
KyAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjphZGRJbmRleFRvTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Jq
ZWN0U3RvcmUsIGluZGV4KSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Tk9UX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDQ3LDE0ICs0NTMs
MTcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxl
dGVUYXNrRXZlbnRzKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBSYW5nZSwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBwcnBSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIFJlZlB0cjxJ
REJLZXlSYW5nZT4gcmFuZ2UgPSBwcnBSYW5nZTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvblB0cjsKLSAgICBpZiAoIXRyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwsIG9iamVjdFN0b3JlLCByYW5nZSwgZGlyZWN0
aW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlvbjsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZSwgcmFuZ2UsIGRpcmVjdGlvbiwg
Y2FsbGJhY2tzLCB0cmFuc2FjdGlvblB0cikpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKyAgICB9CiB9CiAKIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdG1wRGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TUUxDYWxsYmFja1dyYXBwZXIuaAppbmRleCAzODA1OWZhLi44MWUzNGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgY29udGV4dCA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5y
ZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLnJl
bGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2so
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZzYWZlUmVsZWFzZSwgY2FsbGJhY2spKTsKKyAgICAgICAgY29u
dGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZzYWZlUmVsZWFzZSwgQWxsb3dBY2Nl
c3NMYXRlcihjYWxsYmFjaykpKTsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPFQ+IHVud3JhcCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGZkODI1OTEuLjVkODQ0OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNDYsNyArMjQ2LDEwIEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNv
Y2tldENoYW5uZWwoCiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpOwogCiAgICAgUGVlciogcGVlciA9IFBlZXI6OmNyZWF0ZShjbGllbnRXcmFwcGVyLCB0
aGlzUHRyLT5tX2xvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgdXJsLCBwcm90b2NvbCk7
Ci0gICAgdGhpc1B0ci0+bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRl
eHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwsIHRoaXNQ
dHIsIHBlZXIsIGNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSk7CisgICAgdGhpc1B0ci0+bV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCisgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmQnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzUHRyKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MocGVlciksIGNsaWVudFdyYXBw
ZXIpLCB0YXNrTW9kZSk7CiB9CiAKIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OkJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiB3
b3JrZXJDb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wpCkBAIC0yNTgsNyArMjYxLDkgQEAgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldEMKIHsKICAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpKTsKICAg
ICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9M
b2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2Nr
ZXRDaGFubmVsLCB0aGlzLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fdGFza01vZGUsIHVybCwg
cHJvdG9jb2wpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAg
IGNyZWF0ZUNhbGxiYWNrVGFzaygmQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hh
bm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcyksIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV90YXNrTW9kZSwgdXJsLCBwcm90b2NvbCkp
OwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgQVNTRVJUKG1fcGVlcik7CiB9
CkBAIC0yODEsNyArMjg2LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpjb25uZWN0KCkKIHsKICAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVy
KTsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZENvbm5lY3QsIG1fcGVlcikpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
bV9wZWVyKSkpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpt
YWluVGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVy
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0yOTksNyArMzA1LDkgQEAgYm9vbCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEFTU0VSVChtX3BlZXIpOwogICAgIHNl
dE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRl
cihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpt
YWluVGhyZWFkU2VuZCwgbV9wZWVyLCBtZXNzYWdlKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgbWVzc2FnZSkpOwogICAgIFJl
ZlB0cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24o
KTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdy
YXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CkBAIC0zMjEsNyArMzI5LDggQEAg
dW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpi
dWZmZXJlZEFtb3VudCgpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChtX3BlZXIpOwog
ICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjptYWluVGhyZWFkQnVmZmVyZWRBbW91bnQsIG1fcGVlcikpOworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50LCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikpKTsKICAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0
KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGll
bnRXcmFwcGVyLmdldCgpOwpAQCAtMzQyLDcgKzM1MSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3Nl
KCkKIHsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9M
b2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6bWFpblRocmVhZENsb3NlLCBtX3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyht
X3BlZXIpKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBl
ZXIpCkBAIC0zNjAsNyArMzcwLDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpkaXNjb25uZWN0KCkKICAgICBpZiAobV9wZWVyKSB7CiAgICAgICAgIFBl
ZXIqIHBlZXIgPSBtX3BlZXI7CiAgICAgICAgIG1fcGVlciA9IDA7Ci0gICAgICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJm1haW5UaHJlYWREZXN0
cm95LCBwZWVyKSk7CisgICAgICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKKyAg
ICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmbWFpblRocmVhZERlc3Ryb3ksIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MocGVlcikpKTsKICAgICB9CiAgICAgbV93b3JrZXJDb250ZXh0ID0gMDsK
IH0KQEAgLTM3Nyw3ICszODgsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjptYWluVGhyZWFkU3VzcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kgogdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzdXNwZW5kKCkKIHsKICAgICBB
U1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFN1c3BlbmQsIG1fcGVlcikpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigK
KyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZFN1c3BlbmQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkp
OwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFk
UmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCkBAIC0z
OTIsNyArNDA0LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFp
blRocmVhZFJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kgogdm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpyZXN1bWUoKQogewogICAgIEFTU0VSVChtX3Bl
ZXIpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rh
c2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkUmVzdW1lLCBt
X3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNy
ZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5U
aHJlYWRSZXN1bWUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwogfQogCiB2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsZWFyQ2xpZW50V3Jh
cHBlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCmluZGV4IGVjYThlMmUuLmFkMTJmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0yODgsNyArMjg4LDkgQEAgc3RhdGljIHZv
aWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBXb3JrZXJNZXNzYWcKIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNvbGVN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRh
c2ssIHRoaXMsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCkpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soCisgICAgICAg
IGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCiB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNh
dGVkV29ya2VyVGhyZWFkPiB3b3JrZXJUaHJlYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDNmNDJiYjEuLmFjM2RiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjYgQEAKKzIwMTEtMDQtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IENyb3NzVGhyZWFkQ29waWVyIHNob3VsZCBub3QgaGF2ZSBhIGRlZmF1bHQgc3BlY2lhbGl6YXRp
b24gZm9yIHJhdyBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTkyMzQKKyAgICAgICAgUmVtb3ZlZCB0aGUgYWJsaXR5IHRvIHBhc3MgcmF3
IHBvaW50ZXJzIGNyb3NzLXRocmVhZAorICAgICAgICBBZGRlZCBhbmQgYXBwbGllZCBhbm5vdGF0
aW9ucyBmb3IgZG9pbmcgdGhhdAorCisgICAgICAgICogc3JjL1dlYlNoYXJlZFdvcmtlckltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdFRhc2spOgorICAgICAg
ICAqIHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckJh
c2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdENv
bnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJC
YXNlOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
V29ya2VyQmFzZTo6d29ya2VyQ29udGV4dERlc3Ryb3llZCk6CisgICAgICAgICogc3JjL1dlYldv
cmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBs
OjpzdGFydFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJ
bXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
Q2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENv
bnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJD
bGllbnRJbXBsOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAg
ICAqIHNyYy9XZWJXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1w
bDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVU
b01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0Q29weVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVUb01haW5UaHJlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVj
dXJzaXZlbHlUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZpbGVU
b01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktp
dDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdEZpbGVFeGlzdHNUb01haW5U
aHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
Ojpwb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJl
YWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpk
aWRGYWlsT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZTo6ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQpOgorICAgICAgICAo
V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVkT25NYWlu
VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6ZGlkUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkUmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCk6
CisgICAgICAgICogc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0V3JpdGVU
b01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0VHJ1bmNhdGVUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0QWJvcnRUb01haW5UaHJlYWQpOgorICAg
ICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRXcml0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpk
aWRUcnVuY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NC
cmlkZ2U6OnBvc3RJbml0VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmls
ZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNr
VG9Xb3JrZXJUaHJlYWQpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0wNC0yMCAgRG9taW5pYyBDb29uZXkgIDxkb21p
bmljY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2Vy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBs
LmNwcAppbmRleCBlNzNjMGY0Li45ZjE0NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcApAQCAtNzYsMTIgKzc2LDEyIEBAIHZv
aWQgV2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdChXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdl
YkNoYW5uZWwsIENvbm5lY3RMaXN0CiAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRl
KHBsYXRmb3JtX2NoYW5uZWwpOwogCiAgICAgd29ya2VyVGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0
VGFzaygKLSAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25uZWN0VGFzaywgdGhpcywgY2hh
bm5lbC5yZWxlYXNlKCkpKTsKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25uZWN0VGFz
aywgY2hhbm5lbC5yZWxlYXNlKCkpKTsKICAgICBpZiAobGlzdGVuZXIpCiAgICAgICAgIGxpc3Rl
bmVyLT5jb25uZWN0ZWQoKTsKIH0KIAotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTaGFyZWRXb3JrZXJJbXBs
KiB3b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQordm9pZCBX
ZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKIHsKICAgICAv
LyBXcmFwIHRoZSBwYXNzZWQtaW4gY2hhbm5lbCBpbiBhIE1lc3NhZ2VQb3J0LCBhbmQgc2VuZCBp
dCBvZmYgdmlhIGEgY29ubmVjdCBldmVudC4KICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQg
PSBNZXNzYWdlUG9ydDo6Y3JlYXRlKCpjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaAppbmRleCBiNTkxYzdiLi4zMTQ3NTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+V2ViU2hh
cmVkV29ya2VySW1wbCgpOwogCi0gICAgc3RhdGljIHZvaWQgY29ubmVjdFRhc2soV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNoYXJlZFdvcmtlckltcGwqLCBQYXNzT3duUHRy
PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbD4pOworICAgIHN0YXRpYyB2b2lkIGNvbm5lY3RU
YXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwogCiAgICAgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBtX2Ns
aWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3Bw
CmluZGV4IDBjZDVmNDEuLjFkNGFjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckJhc2UuY3BwCkBAIC04OSw3ICs4OSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICAgICAgaWYgKG1fd29ya2VyKQot
ICAgICAgICAgICAgbV93b3JrZXItPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtX21vZGUpOworICAg
ICAgICAgICAgbV93b3JrZXItPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCgKKyAgICAg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZENvbXBsZXRlLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpLCByZXN1bHQpLCBtX21vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTk3LDcgKzk4LDExIEBAIHByaXZhdGU6CiAgICAgICAgIDogbV93b3JrZXIod29ya2VyKQogICAg
ICAgICAsIG1fbW9kZShtb2RlKQogICAgIHsKLSAgICAgICAgd29ya2VyLT5kaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0RhdGFiYXNlVGFzaywgY29tbW9u
Q2xpZW50LCBmcmFtZSwgU3RyaW5nKG5hbWUpLCBTdHJpbmcoZGlzcGxheU5hbWUpLCBlc3RpbWF0
ZWRTaXplLCB0aGlzKSk7CisgICAgICAgIHdvcmtlci0+ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0RhdGFiYXNlVGFzaywgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyhjb21tb25DbGllbnQpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZnJhbWUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cmluZyhuYW1lKSwgU3RyaW5nKGRpc3BsYXlOYW1lKSwgZXN0aW1h
dGVkU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgYWxsb3dEYXRhYmFzZVRh
c2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViQ29tbW9uV29y
a2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV1RGOjpTdHJp
bmcgbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxBbGxvd0RhdGFiYXNlTWFpblRocmVhZEJyaWRnZT4gYnJp
ZGdlKQpAQCAtMjYyLDcgKzI2Nyw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6b3BlbkZpbGVTeXN0
ZW1Gb3JXb3JrZXIoV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcKIHZvaWQgV2Vi
V29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cykKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0TWVzc2FnZVRhc2ssIHRoaXMsCisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZS0+dG9XaXJlU3RyaW5nKCksIGNoYW5uZWxzKSk7CiB9CiAKQEAgLTI4Nyw5ICsyOTIsMTAg
QEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25U
YXNrLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlVVJMKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25UYXNrLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlVVJMKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKQEAgLTMxMiw3ICszMTgsNyBAQCB2b2lkIFdl
YldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNz
YWdlVGFzaywgdGhpcywKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlLCB0eXBlLCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQpAQCAtMzM0LDcg
KzM0MCw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogCiB2b2lkIFdlYldvcmtlckJhc2U6OmNvbmZp
cm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAg
ICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25maXJtTWVz
c2FnZVRhc2ssIHRoaXMsCisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmY29uZmlybU1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUGVu
ZGluZ0FjdGl2aXR5KSk7CiB9CiAKQEAgLTM1MCw3ICszNTYsOCBAQCB2b2lkIFdlYldvcmtlckJh
c2U6OmNvbmZpcm1NZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAog
dm9pZCBXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNr
VGFzaygmcmVwb3J0UGVuZGluZ0FjdGl2aXR5VGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6
OnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwKQEAgLTM2NSw3ICszNzIsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnJlcG9ydFBlbmRpbmdB
Y3Rpdml0eVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIHZvaWQgV2ViV29y
a2VyQmFzZTo6d29ya2VyQ29udGV4dENsb3NlZCgpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dENsb3NlZFRhc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4
dENsb3NlZFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKQEAgLTM4MCw3ICsz
ODcsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWRUYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNv
bnRleHREZXN0cm95ZWQoKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHREZXN0cm95ZWRU
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4IGY5MGU3ZTguLjEw
MTBiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBs
OjpzdGFydFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLAogICAgIGlmICghaXNN
YWluVGhyZWFkKCkpIHsKICAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICAgICAgICAgICZzdGFydFdvcmtlckNvbnRl
eHRUYXNrLAotICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3ModGhpcyksCiAgICAgICAgICAgICBzY3JpcHRVUkwuc3RyaW5nKCksCiAgICAgICAgICAg
ICB1c2VyQWdlbnQsCiAgICAgICAgICAgICBzb3VyY2VDb2RlKSk7CkBAIC0xNTYsNyArMTU2LDgg
QEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7CiAgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkgewotICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0ZXJtaW5hdGVXb3JrZXJDb250ZXh0VGFzaywg
dGhpcykpOworICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
CisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnRlcm1pbmF0ZVdvcmtlckNvbnRleHRU
YXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV93ZWJXb3JrZXItPnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKQEAgLTE3Miw3
ICsxNzMsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJD
b250ZXh0KAogICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKICAgICBpZiAoIWlzTWFp
blRocmVhZCgpKSB7CiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRo
cmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyLDcgKzIwMyw3IEBAIHZvaWQgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBFdmVuIGlmIHRoaXMgaXMg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCwgdGhlcmUgY291bGQgYmUgYSBxdWV1ZWQgdGFzayBm
b3IKICAgICAvLyB0aGlzIG9iamVjdCwgc28gZG9uJ3QgZGVsZXRlIGl0IHJpZ2h0IGF3YXkuCiAg
ICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNr
VGFzaygmd29ya2VyT2JqZWN0RGVzdHJveWVkVGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwK
QEAgLTIyMSw3ICsyMjIsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAogCiAgICAgaWYgKGN1cnJl
bnRUaHJlYWQoKSAhPSBtX3dvcmtlclRocmVhZElkKSB7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0VGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nKG1lc3NhZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczIucmVsZWFzZSgpKSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTIzNyw3ICsyMzgsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVu
dEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmIGVycm9y
TWVzcwogewogICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0gbV93b3JrZXJUaHJlYWRJZCkgewog
ICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKGVycm9yTWVzc2FnZSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhzb3VyY2VVUkwpKSk7CkBAIC0yNjEsNyAr
MjYyLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dv
cmtlck9iamVjdChpbnQgZGVzdGluYXRpb24sCiB7CiAgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSAh
PSBtX3dvcmtlclRocmVhZElkKSB7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9i
amVjdFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUxldmVsLApA
QCAtMjk0LDE0ICsyOTUsMTQgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkKICAgICAvLyBhY2Nl
c3NlZC4gIE90aGVyd2lzZSB0aGVyZSBhcmUgcmFjZSBjb25kaXRpb25zIHdpdGggdjgncyBnYXJi
YWdlCiAgICAgLy8gY29sbGVjdGlvbi4KICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
VGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiB2
b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSkKIHsKICAgICAvLyBTZWUgYWJvdmUgY29tbWVudCBpbiBjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QuCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwCmlu
ZGV4IDE2NWFmNjguLmIyZDQ5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckltcGwuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJXb3JrZXJJbXBsOjpw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCiAKICAg
ICB3b3JrZXJUaHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKAogICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMsIFN0cmluZyhtZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZSgpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LCBTdHJpbmcobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2UoKSkpOwogfQogCiB2b2lkIFdlYldv
cmtlckltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uu
Y3BwCmluZGV4IDUxNDdlMTUuLmZiNWRkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3Bw
CkBAIC0xNTUsNjQgKzE1NSw5NyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OnN0b3AoKQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RP
cGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZChXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNs
aWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVh
dGUsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZCwgY29tbW9uQ2xp
ZW50LCB0eXBlLCBzaXplLCBjcmVhdGUsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW1P
bk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKGNvbW1vbkNsaWVudCksIHR5cGUsIHNpemUsIGNyZWF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAog
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0TW92ZVRvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmbW92ZU9uTWFpblRo
cmVhZCwgZmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCB0aGlzLCBtb2Rl
KSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJm1vdmVPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBh
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
cG9zdENvcHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgY29uc3QgU3Ry
aW5nJiBtb2RlKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFj
a1Rhc2soJmNvcHlPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0
aW9uUGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb3B5T25NYWluVGhyZWFkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgc291cmNl
UGF0aCwgZGVzdGluYXRpb25QYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAg
ICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJnJlbW92ZU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhp
cywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZyZW1vdmVPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwog
fQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVSZWN1
cnNpdmVseVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7
Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVtb3Zl
UmVjdXJzaXZlbHlPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsK
KyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFz
aygmcmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwog
fQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkTWV0YWRh
dGFUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWRNZXRhZGF0
YU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3Bh
dGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkTWV0
YWRhdGFPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKFdl
YkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZjcmVhdGVGaWxlT25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBw
YXRoLCBleGNsdXNpdmUsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY3JlYXRlRmlsZU9uTWFpblRocmVhZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5
c3RlbSksIHBhdGgsIGV4Y2x1c2l2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmY3JlYXRlRGlyZWN0b3J5
T25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCBleGNsdXNpdmUsIHRoaXMsIG1vZGUpKTsK
KyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFz
aygmY3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwgZXhjbHVzaXZlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwg
bW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RG
aWxlRXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVt
KTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZmaWxl
RXhpc3RzT25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7CisgICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmZp
bGVFeGlzdHNPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5U
aHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRpc3BhdGNo
VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpcmVjdG9yeUV4aXN0c09uTWFp
blRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFz
a1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaXJlY3RvcnlFeGlz
dHNPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdl
YkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkLCBm
aWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJlYWREaXJlY3RvcnlPbk1haW5UaHJl
YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZp
bGVTeXN0ZW0pLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRmlsZVN5c3Rl
bTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQpAQCAtMjc2LDI3
ICszMDksMzAgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZWFkRGly
ZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEUKIAogdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRGYWlsT25NYWluVGhyZWFkKFdlYkZpbGVFcnJvciBlcnJv
ciwgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVycm9yKSwgbW9kZSk7
CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEZhaWxPbldv
cmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgZXJyb3IpLCBtb2RlKTsK
IH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVuRmlsZVN5
c3RlbU9uTWFpblRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFBh
dGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZCwgdGhpcywgbmFt
ZSwgcm9vdFBhdGgpLCBtb2RlKTsKKyAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LCBuYW1lLCByb290UGF0aCksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmRpZFN1Y2NlZWRPbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBtb2RlKQog
ewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRTdWNjZWVk
T25Xb3JrZXJUaHJlYWQsIHRoaXMpLCBtb2RlKTsKKyAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3VjY2VlZE9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6ZGlkUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKGNvbnN0IFdlYkZpbGVJbmZv
JiBpbmZvLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbWF5UG9zdFRhc2tUb1dvcmtlcihj
cmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkLCB0aGlzLCBp
bmZvKSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2so
JmRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBpbmZvKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6ZGlkUmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChjb25zdCBXZWJWZWN0b3I8V2ViRmls
ZVN5c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3JlLCBjb25zdCBTdHJpbmcmIG1vZGUp
CiB7Ci0gICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlYWRE
aXJlY3RvcnlPbldvcmtlclRocmVhZCwgdGhpcywgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOwor
ICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlk
UmVhZERpcmVjdG9yeU9uV29ya2VyVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgZW50cmllcywgaGFzTW9yZSksIG1vZGUpOwog
fQogCiBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKFdlYldvcmtlckJhc2UqIHdvcmtlciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdy
aXRlckNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCAxNzlhZWE1Li5iNzE4YmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVyQ2Fs
bGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJG
aWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtNjEsMjAgKzYxLDIyIEBAIHZvaWQgV29y
a2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdFdyaXRlVG9NYWluVGhyZWFkKGxvbmcg
bG9uZyBwb3NpdGlvbiwKIHsKICAgICBBU1NFUlQoIW1fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7CiAg
ICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gdHJ1ZTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3cml0ZU9uTWFpblRocmVhZCwgdGhpcywgcG9zaXRp
b24sIGRhdGEpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZ3cml0ZU9uTWFpblRocmVhZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBwb3NpdGlvbiwg
ZGF0YSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RU
cnVuY2F0ZVRvTWFpblRocmVhZChsb25nIGxvbmcgbGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9v
cGVyYXRpb25JblByb2dyZXNzKTsKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwot
ICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnRydW5jYXRl
T25NYWluVGhyZWFkLCB0aGlzLCBsZW5ndGgpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0cnVuY2F0ZU9uTWFpblRocmVhZCwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLCBsZW5ndGgpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0QWJvcnRUb01haW5UaHJlYWQoKQogewogICAgIEFTU0VSVChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MpOwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFj
a1Rhc2soJmFib3J0T25NYWluVGhyZWFkLCB0aGlzKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmYWJvcnRPbk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0U2h1dGRvd25Ub01haW5UaHJlYWQoUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3Jp
dGVyQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UpCkBAIC0xMTMsMTcgKzExNSwyMCBAQCB2b2lkIFdv
cmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnNodXRkb3duT25NYWluVGhyZWFkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleAogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6
OmRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSkKIHsKLSAgICBkaXNwYXRj
aFRhc2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFdyaXRlT25Xb3JrZXJU
aHJlYWQsIHRoaXMsIGJ5dGVzLCBjb21wbGV0ZSkpOworICAgIGRpc3BhdGNoVGFza1RvV29ya2Vy
VGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFdyaXRlT25Xb3JrZXJUaHJl
YWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzLCBjb21wbGV0ZSkpOwogfQog
CiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWwoV2ViRmlsZUVy
cm9yIGVycm9yKQogewotICAgIGRpc3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkRmFpbE9uV29ya2VyVGhyZWFkLCB0aGlzLCBlcnJvcikpOworICAgIGRpc3Bh
dGNoVGFza1RvV29ya2VyVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEZh
aWxPbldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgZXJyb3IpKTsK
IH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRUcnVuY2F0ZSgp
CiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZk
aWRUcnVuY2F0ZU9uV29ya2VyVGhyZWFkLCB0aGlzKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9Xb3Jr
ZXJUaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkVHJ1bmNhdGVPbldvcmtl
clRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiBzdGF0aWMgY29u
c3QgY2hhciBmaWxlV3JpdGVyT3BlcmF0aW9uc01vZGVbXSA9ICJmaWxlV3JpdGVyT3BlcmF0aW9u
c01vZGUiOwpAQCAtMTQ0LDcgKzE0OSw4IEBAIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlk
Z2U6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UoY29uc3QgU3RyaW5nJiBwCiAKIHZv
aWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEluaXRUb01haW5UaHJlYWQo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJmluaXRPbk1haW5UaHJlYWQsIHRoaXMsIHBhdGgpKTsKKyAgICBkaXNw
YXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmaW5pdE9u
TWFpblRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgcGF0aCkpOwogfQogCiBX
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjp+V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZSgpCkBAIC0xOTYsMTMgKzIwMiwxNSBAQCB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2U6OnJ1blRhc2tPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZQog
dm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewog
ICAgIEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBXZWJX
b3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZy
dW5UYXNrT25NYWluVGhyZWFkLCB0aGlzLCB0YXNrKSk7CisgICAgV2ViV29ya2VyQmFzZTo6ZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRh
c2tPbk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHRhc2spKTsKIH0K
IAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaXNwYXRjaFRhc2tUb1dv
cmtlclRocmVhZChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2sp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Byb3h5LT5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZydW5UYXNrT25Xb3JrZXJU
aHJlYWQsIHRoaXMsIHRhc2spLCBtX21vZGUpOworICAgIG1fcHJveHktPnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyQ29udGV4dCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZydW5UYXNrT25X
b3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHRhc2spLCBtX21vZGUp
OwogfQogCiBib29sIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OndhaXRGb3JPcGVy
YXRpb25Ub0NvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaHJlYWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJl
YWRUZXN0LmNwcAppbmRleCAwNGZiYTQ2Li42OWFlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RocmVhZFRlc3QuY3BwCkBAIC01Myw3ICs1Myw4IEBAIFRFU1QoQ0NU
aHJlYWRUZXN0LCBwaW5nUG9uZ1VzaW5nQ29uZGl0aW9uKQogICAgIE93blB0cjxDQ1RocmVhZD4g
dGhyZWFkID0gQ0NUaHJlYWQ6OmNyZWF0ZSgpOwogICAgIFBpbmdQb25nVXNpbmdDb25kaXRpb24g
dGFyZ2V0OwogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgdGhyZWFkLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2soJnRhcmdldCwgJlBpbmdQb25nVXNpbmdDb25kaXRp
b246OnBpbmcsICZjb21wbGV0aW9uKSk7CisgICAgdGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1Ro
cmVhZFRhc2soJnRhcmdldCwgJlBpbmdQb25nVXNpbmdDb25kaXRpb246OnBpbmcsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
JmNvbXBsZXRpb24pKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiAKICAgICBFWFBFQ1RfRVEo
dGhyZWFkLT50aHJlYWRJRCgpLCB0YXJnZXQuaGl0VGhyZWFkSUQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91390</attachid>
            <date>2011-04-27 17:27:45 -0700</date>
            <delta_ts>2011-04-27 23:21:45 -0700</delta_ts>
            <desc>CR feedback addressed</desc>
            <filename>59234.patch</filename>
            <type>text/plain</type>
            <size>56016</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTBlMDdmLi41NWZhMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTEtMDQtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcm9zc1RocmVhZENv
cGllciBzaG91bGQgbm90IGhhdmUgYSBkZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciByYXcgcG9p
bnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MjM0CisgICAgICAgIFJlbW92ZWQgdGhlIGFibGl0eSB0byBwYXNzIHJhdyBwb2ludGVycyBjcm9z
cy10aHJlYWQKKyAgICAgICAgQWRkZWQgYW5kIGFwcGxpZWQgYW5ub3RhdGlvbnMgZm9yIGRvaW5n
IHRoYXQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlcjo6YWJvcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN0cmVhbVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6c3RhcnRPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpzdG9wT25GaWxlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3RyZWFtUHJveHk6OmdldFNpemVPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
dHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTdHJlYW1Qcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVBy
b3h5OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmls
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKiBs
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uUG9z
aXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uQ2Fj
aGU6OnRyaWdnZXJSZWFkRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlcldyaXRlVG9EYXRhYmFzZSk6CisgICAgICAgICogcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3NXcmFwcGVyOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjo6dmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFwcGVyOjpBbGxvd0V4dGVuZGVkTGlmZXRpbWVXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZVdyYXBwZXI6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsbG93RXh0ZW5kZWRMaWZldGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KiBzdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2Fs
bGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVk
QW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpy
ZXN1bWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KToKKwogMjAxMS0wNC0yMCAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggZmQyZTI2My4uN2FmZWQ1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiogYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6
UmVhZFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gTm9u
ZSkKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJmRlbGF5ZWRTdGFydCwgdGhpcykpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVsYXllZFN0YXJ0LCBBbGxv
d0FjY2Vzc0xhdGVyKHRoaXMpKSk7CiAKICAgICBtX2Jsb2IgPSBibG9iOwogICAgIG1fcmVhZFR5
cGUgPSB0eXBlOwpAQCAtMTUwLDcgKzE1MCw4IEBAIHZvaWQgRmlsZVJlYWRlcjo6YWJvcnQoKQog
ICAgIG1fc3RhdGUgPSBBYm9ydGluZzsKIAogICAgIC8vIFNjaGVkdWxlIHRvIGhhdmUgdGhlIGFi
b3J0IGRvbmUgbGF0ZXIgc2luY2UgYWJvcnQoKSBtaWdodCBiZSBjYWxsZWQgZnJvbSB0aGUgZXZl
bnQgaGFuZGxlciBhbmQgd2UgZG8gbm90IHdhbnQgdGhlIHJlc291cmNlIGxvYWRpbmcgY29kZSB0
byBiZSBpbiB0aGUgc3RhY2suCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJmRlbGF5ZWRBYm9ydCwgdGhpcykpOworICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
ZGVsYXllZEFib3J0LCBBbGxvd0FjY2Vzc0xhdGVyKHRoaXMpKSk7CiB9CiAKIHZvaWQgRmlsZVJl
YWRlcjo6ZG9BYm9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVT
dHJlYW1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTdHJlYW1Qcm94eS5j
cHAKaW5kZXggOTJiMDdjZC4uZDQzNTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlU3RyZWFtUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVN0cmVhbVByb3h5LmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6
c3RhcnRPbkZpbGVUaHJlYWQoKQogICAgIGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX3N0cmVhbS0+c3RhcnQoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNh
bGxiYWNrVGFzaygmZGlkU3RhcnQsIHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3RhcnQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykp
KTsKIH0KIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnN0b3AoKQpAQCAtMTA3LDcgKzEwNyw3IEBA
IHN0YXRpYyB2b2lkIGRlcmVmUHJveHlPbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEZpbGVTdHJlYW1Qcm94eSogcHJveHkpCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6c3RvcE9uRmls
ZVRocmVhZCgpCiB7CiAgICAgbV9zdHJlYW0tPnN0b3AoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVyZWZQcm94eU9uQ29udGV4dCwgdGhpcykpOworICAg
IG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkZXJlZlByb3h5T25Db250
ZXh0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRp
ZEdldFNpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJveHks
IGxvbmcgbG9uZyBzaXplKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRmlsZVN0cmVhbVByb3h5
OjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Z2V0U2l6ZU9uRmlsZVRocmVhZChjb25zdCBTdHJp
bmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgbG9uZyBs
b25nIHNpemUgPSBtX3N0cmVhbS0+Z2V0U2l6ZShwYXRoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRHZXRT
aXplLCB0aGlzLCBzaXplKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZEdldFNpemUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHNpemUpKTsK
IH0KIAogc3RhdGljIHZvaWQgZGlkT3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0
cmVhbVByb3h5KiBwcm94eSwgYm9vbCBzdWNjZXNzKQpAQCAtMTQxLDE4ICsxNDEsMjAgQEAgdm9p
ZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb24KIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZE9u
RmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9u
ZyBsZW5ndGgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9zdHJlYW0tPm9wZW5Gb3JSZWFkKHBh
dGgsIG9mZnNldCwgbGVuZ3RoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkT3BlbiwgdGhpcywgc3VjY2VzcykpOworICAgIG1fY29udGV4dC0+cG9zdFRh
c2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
RmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxl
VGhyZWFkLCBwYXRoKSk7CisgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzaygKKyAgICAgICAgY3Jl
YXRlRmlsZVRocmVhZFRhc2sodGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZp
bGVTdHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkLCBwYXRoKSk7CiB9CiAKIHZv
aWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yV3JpdGVPbkZpbGVUaHJlYWQoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IG1fc3RyZWFtLT5vcGVuRm9yV3JpdGUocGF0
aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW4s
IHRoaXMsIHN1Y2Nlc3MpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmZGlkT3BlbiwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc3VjY2VzcykpOwog
fQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6Y2xvc2UoKQpAQCAtMTczLDEzICsxNzUsMTUgQEAg
c3RhdGljIHZvaWQgZGlkUmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVBy
b3h5KiBwcm94eSwgaW50IGJ5dGVzUmUKIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnJlYWQoY2hh
ciogYnVmZmVyLCBpbnQgbGVuZ3RoKQogewotICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Qcm94eTo6cmVhZE9uRmlsZVRocmVh
ZCwgYnVmZmVyLCBsZW5ndGgpKTsKKyAgICBmaWxlVGhyZWFkKCktPnBvc3RUYXNrKAorICAgICAg
ICBjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlzLCAmRmlsZVN0cmVhbVByb3h5OjpyZWFkT25GaWxl
VGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKGJ1ZmZlciksIGxlbmd0aCkpOwogfQogCiB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6cmVhZE9u
RmlsZVRocmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpCiB7CiAgICAgaW50IGJ5dGVzUmVh
ZCA9IG1fc3RyZWFtLT5yZWFkKGJ1ZmZlciwgbGVuZ3RoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZCwgdGhpcywgYnl0ZXNSZWFkKSk7CisgICAg
bV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlYWQsIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzUmVhZCkpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRX
cml0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgaW50
IGJ5dGVzV3JpdHRlbikKQEAgLTE5Niw3ICsyMDAsNyBAQCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6
d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3Ro
KQogdm9pZCBGaWxlU3RyZWFtUHJveHk6OndyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJs
b2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0ZXNX
cml0dGVuID0gbV9zdHJlYW0tPndyaXRlKGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpOwotICAg
IG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZSwgdGhpcywg
Ynl0ZXNXcml0dGVuKSk7CisgICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rh
c2soJmRpZFdyaXRlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlc1dyaXR0ZW4p
KTsKIH0KIAogc3RhdGljIHZvaWQgZGlkVHJ1bmNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEZpbGVTdHJlYW1Qcm94eSogcHJveHksIGJvb2wgc3VjY2VzcykKQEAgLTIxMyw3ICsyMTcsNyBA
QCB2b2lkIEZpbGVTdHJlYW1Qcm94eTo6dHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKQogdm9p
ZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlv
bikKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+dHJ1bmNhdGUocG9zaXRpb24pOwot
ICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwg
dGhpcywgc3VjY2VzcykpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZkaWRUcnVuY2F0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc3VjY2Vzcykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjY3MmVlZS4uMDk3YzYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtOTUsNyArOTUsOSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZQogICAgICwgbV90YXNrTW9k
ZSh0YXNrTW9kZS5jcm9zc1RocmVhZFN0cmluZygpKQogewogICAgIEFTU0VSVChtX3dvcmtlckNs
aWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihj
cmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2Fk
ZXIsIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMsIG91dGdvaW5nUmVmZXJyZXIpKTsKKyAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlciwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCByZXF1ZXN0LCBvcHRp
b25zLCBvdXRnb2luZ1JlZmVycmVyKSk7CiB9CiAKIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJpZGdlKCkKQEAgLTEyOSw3ICsxMzEsOCBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRlc3Ryb3koKQog
ICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOwogCiAgICAgLy8gImRlbGV0ZSB0aGlzIiBhbmQgbV9t
YWluVGhyZWFkTG9hZGVyOjpkZXJlZigpIG9uIHRoZSB3b3JrZXIgb2JqZWN0J3MgdGhyZWFkLgot
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJk1h
aW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCB0aGlzKSk7CisgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5U
aHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNYWlu
VGhyZWFkQnJpZGdlKiB0aGlzUHRyKQpAQCAtMTQ1LDcgKzE0OCw4IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRF
eGVjdXRpb25DCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKCkKIHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsLCB0aGlzKSk7
CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxs
YmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDYW5jZWwsIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcykpKTsKICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciog
Y2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKICAgICBpZiAoIWNs
aWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhhc24ndCBy
ZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBzZW5kaW5n
IGEgY2FuY2VsbGF0aW9uIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2Nh
dGlvblBvc2l0aW9uQ2FjaGUuY3BwCmluZGV4IDVhMGY0MmQuLmE0MmYyZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAKQEAgLTEyOCw3
ICsxMjgsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6dGhyZWFkRW50cnlQb2lu
dEltcGwoKQogCiB2b2lkIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZTo6dHJpZ2dlclJlYWRGcm9t
RGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzaygmR2Vv
bG9jYXRpb25Qb3NpdGlvbkNhY2hlOjpyZWFkRnJvbURhdGFiYXNlLCB0aGlzKSk7CisgICAgbV9x
dWV1ZS5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6
OnJlYWRGcm9tRGF0YWJhc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAog
dm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZSogY2FjaGUpCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnJlYWRGcm9tRGF0YWJh
c2VJbXBsKCkKIAogdm9pZCBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGU6OnRyaWdnZXJXcml0ZVRv
RGF0YWJhc2UoKQogewotICAgIG1fcXVldWUuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzayh3cml0
ZVRvRGF0YWJhc2UsIHRoaXMpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rh
c2sod3JpdGVUb0RhdGFiYXNlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAK
IHZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlOjp3cml0ZVRvRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCBhMjVkNmZhLi5iMjY2
ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAg
LTYyLDEwICs2Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPHRydWUsIGZhbHNlLCBUPiA6IHB1Ymxp
YyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPFQ+IHsKICAgICB9OwogCi0gICAgLy8gUG9p
bnRlcnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQgYW55IHNpZ25pZmljYW50IGNoYW5nZXMu
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxm
YWxzZSwgZmFsc2UsIFQqPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPFQq
PiB7Ci0gICAgfTsKLQogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIFRocmVhZGFibGVMb2FkZXJPcHRpb25zPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPFRocmVhZGFibGVMb2FkZXJPcHRpb25zPiB7CiAgICAgfTsK
IApAQCAtMTE5LDYgKzExNSw0NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUPiB7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlciB7CisgICAgcHVibGljOgorICAgICAgICBl
eHBsaWNpdCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcihUKiB2YWx1ZSkgOiBtX3ZhbHVl
KHZhbHVlKSB7IH0KKyAgICAgICAgVCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CisgICAgcHJpdmF0ZToKKyAgICAgICAgVCogbV92YWx1ZTsKKyAgICB9OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2Us
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NXcmFwcGVyPFQ+ID4geworICAgICAgICB0eXBlZGVmIFQq
IFR5cGU7CisgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzc1dyYXBwZXI8VD4mIHdyYXBwZXIpIHsgcmV0dXJuIHdyYXBwZXIudmFsdWUoKTsgfQorICAg
IH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3Jh
cHBlcjxUPiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKFQqIHZhbHVlKSAKKyAgICB7CisgICAgICAg
IHJldHVybiBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjxUPih2YWx1ZSk7CisgICAgfQor
CisgICAgLy8gRklYTUU6IE1vdmUgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUuIEFsbG93QWNj
ZXNzTGF0ZXIgaXMgZm9yIGNyb3NzLXRocmVhZCBhY2Nlc3MKKyAgICAvLyB0aGF0IGlzIG5vdCBj
cm9zcy10aHJlYWQgKHRhc2tzIHBvc3RlZCB0byBhIHF1ZXVlIGd1YXJhbnRlZWQgdG8gcnVuIG9u
IHRoZSBzYW1lIHRocmVhZCkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFsbG93
QWNjZXNzTGF0ZXJXcmFwcGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEFsbG93
QWNjZXNzTGF0ZXJXcmFwcGVyKFQqIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfQorICAgICAg
ICBUKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBwcml2YXRlOgorICAg
ICAgICBUKiBtX3ZhbHVlOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQWxsb3dBY2Nlc3NMYXRlcldy
YXBwZXI8VD4gPiB7CisgICAgICAgIHR5cGVkZWYgVCogVHlwZTsKKyAgICAgICAgc3RhdGljIFR5
cGUgY29weShjb25zdCBBbGxvd0FjY2Vzc0xhdGVyV3JhcHBlcjxUPiYgd3JhcHBlcikgeyByZXR1
cm4gd3JhcHBlci52YWx1ZSgpOyB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IEFsbG93QWNjZXNzTGF0ZXJXcmFwcGVyPFQ+IEFsbG93QWNjZXNzTGF0ZXIoVCogdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gQWxsb3dBY2Nlc3NMYXRlcldyYXBwZXI8VD4odmFsdWUpOwor
ICAgIH0KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBDcm9zc1RocmVh
ZENvcGllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaAppbmRleCBhOGFjMTUxLi45
OWUzNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKQEAgLTEsMyArMSw0IEBA
CisKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCBjYjZiMGRhLi40MGNjYzgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTM4
MCw4ICszODAsMTEgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnMKIAogICAgIFJlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlv
bjsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsLCBvYmplY3RT
dG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1v
dmVJbmRleEZyb21NYXAsIG9iamVjdFN0b3JlLCBpbmRleCkpKSB7CisgICAgaWYgKCF0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKAorICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uUHRy
KSwKKyAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpyZW1vdmVJbmRleEZyb21NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmplY3RTdG9yZSwgaW5kZXgpKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQz
Myw4ICs0MzYsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmEKIAogICAgIFJlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlv
bjsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsLCBvYmplY3RT
dG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uUHRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjph
ZGRJbmRleFRvTWFwLCBvYmplY3RTdG9yZSwgaW5kZXgpKSkgeworICAgIGlmICghdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzaygKKyAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUsIGluZGV4LCB0cmFuc2FjdGlvblB0ciks
CisgICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6YWRkSW5kZXhUb01hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9i
amVjdFN0b3JlLCBpbmRleCkpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
Ok5PVF9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ0NywxNCArNDUz
LDE3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBs
ZXRlVGFza0V2ZW50cygpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlID0gcHJwUmFuZ2U7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25QdHI7Ci0gICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsLCBvYmplY3RTdG9yZSwgcmFuZ2UsIGRpcmVj
dGlvbiwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uUHRyID0gdHJhbnNhY3Rpb247CisgICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUsIHJhbmdlLCBkaXJlY3Rpb24s
IGNhbGxiYWNrcywgdHJhbnNhY3Rpb25QdHIpKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CisgICAgfQogfQogCiB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHRtcERpcmVjdGlvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggMzgwNTlmYS4uODFlMzRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC03NCw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
cmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAgICAgICAgIGNhbGxiYWNrID0gbV9jYWxsYmFjay5y
ZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnBvc3RUYXNr
KGNyZWF0ZUNhbGxiYWNrVGFzaygmc2FmZVJlbGVhc2UsIGNhbGxiYWNrKSk7CisgICAgICAgIGNv
bnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmc2FmZVJlbGVhc2UsIEFsbG93QWNj
ZXNzTGF0ZXIoY2FsbGJhY2spKSk7CiAgICAgfQogCiAgICAgUGFzc1JlZlB0cjxUPiB1bndyYXAo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBmZDgyNTkxLi41ZDg0NDk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjQ2LDcgKzI0NiwxMCBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJT
b2NrZXRDaGFubmVsKAogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKIAogICAgIFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUoY2xpZW50V3JhcHBlciwg
dGhpc1B0ci0+bV9sb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wp
OwotICAgIHRoaXNQdHItPm1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250
ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmQnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsLCB0aGlz
UHRyLCBwZWVyLCBjbGllbnRXcmFwcGVyKSwgdGFza01vZGUpOworICAgIHRoaXNQdHItPm1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAorICAgICAgICBjcmVhdGVD
YWxsYmFja1Rhc2soJkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpc1B0ciksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHBlZXIpLCBjbGllbnRXcmFw
cGVyKSwgdGFza01vZGUpOwogfQogCiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOjpCcmlkZ2UoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4g
d29ya2VyQ29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQpAQCAtMjU4LDcgKzI2MSw5IEBAIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OkJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSk7CiAg
ICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29j
a2V0Q2hhbm5lbCwgdGhpcywgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtX3Rhc2tNb2RlLCB1cmws
IHByb3RvY29sKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENo
YW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXMpLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fdGFza01vZGUsIHVybCwgcHJvdG9jb2wp
KTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIEFTU0VSVChtX3BlZXIpOwog
fQpAQCAtMjgxLDcgKzI4Niw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6Y29ubmVjdCgpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyQ2xpZW50V3JhcHBl
cik7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
Om1haW5UaHJlYWRDb25uZWN0LCBtX3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KG1fcGVlcikpKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVl
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMjk5LDcgKzMwNSw5IEBAIGJvb2wgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBz
ZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZFNlbmQsIG1fcGVlciwgbWVzc2FnZSkpOworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tUb0xvYWRlcigKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIG1lc3NhZ2UpKTsKICAgICBS
ZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9u
KCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRX
cmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwpAQCAtMzIxLDcgKzMyOSw4IEBA
IHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
YnVmZmVyZWRBbW91bnQoKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQobV9wZWVyKTsK
ICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50LCBtX3BlZXIpKTsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRCdWZmZXJlZEFtb3VudCwgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CiAgICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVj
dCh0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xp
ZW50V3JhcHBlci5nZXQoKTsKQEAgLTM0Miw3ICszNTEsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogYwogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9z
ZSgpCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRDbG9zZSwgbV9wZWVyKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a1RvTG9hZGVyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
bV9wZWVyKSkpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpt
YWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBw
ZWVyKQpAQCAtMzYwLDcgKzM3MCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiAgICAgaWYgKG1fcGVlcikgewogICAgICAgICBQ
ZWVyKiBwZWVyID0gbV9wZWVyOwogICAgICAgICBtX3BlZXIgPSAwOwotICAgICAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZtYWluVGhyZWFkRGVz
dHJveSwgcGVlcikpOworICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoCisg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm1haW5UaHJlYWREZXN0cm95LCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHBlZXIpKSk7CiAgICAgfQogICAgIG1fd29ya2VyQ29udGV4dCA9IDA7
CiB9CkBAIC0zNzcsNyArMzg4LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCgpCiB7CiAgICAg
QVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJl
YWRTdXNwZW5kLCBtX3BlZXIpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
CisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikp
KTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQpAQCAt
MzkyLDcgKzQwNCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWRSZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIHZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6cmVzdW1lKCkKIHsKICAgICBBU1NFUlQobV9w
ZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFJlc3VtZSwg
bV9wZWVyKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKAorICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWlu
VGhyZWFkUmVzdW1lLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikpKTsKIH0KIAogdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbGVhckNsaWVudFdy
YXBwZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcAppbmRleCBlY2E4ZTJlLi5hZDEyZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMjg4LDcgKzI4OCw5IEBAIHN0YXRpYyB2
b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgV29ya2VyTWVzc2FnCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xl
TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VU
YXNrLCB0aGlzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKAorICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIHR5
cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0KIAogdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPERlZGlj
YXRlZFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCAzZjQyYmIxLi5hYzNkYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY2IEBACisyMDExLTA0LTIyICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBDcm9zc1RocmVhZENvcGllciBzaG91bGQgbm90IGhhdmUgYSBkZWZhdWx0IHNwZWNpYWxpemF0
aW9uIGZvciByYXcgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU5MjM0CisgICAgICAgIFJlbW92ZWQgdGhlIGFibGl0eSB0byBwYXNzIHJh
dyBwb2ludGVycyBjcm9zcy10aHJlYWQKKyAgICAgICAgQWRkZWQgYW5kIGFwcGxpZWQgYW5ub3Rh
dGlvbnMgZm9yIGRvaW5nIHRoYXQKKworICAgICAgICAqIHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3RUYXNrKToKKyAgICAg
ICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJC
YXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RD
b25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
QmFzZTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dENsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YldvcmtlckJhc2U6OndvcmtlckNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAqIHNyYy9XZWJX
b3JrZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1w
bDo6c3RhcnRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50
SW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RD
b25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
Q2xpZW50SW1wbDo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlcklt
cGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RNb3Zl
VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6cG9zdENvcHlUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVJl
Y3Vyc2l2ZWx5VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxl
VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJL
aXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RGaWxlRXhpc3RzVG9NYWlu
VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6Oldv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhy
ZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
ZGlkRmFpbE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkU3VjY2VlZE9uTWFp
blRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OmRpZFJlYWRNZXRhZGF0YU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6Oldvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQp
OgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdFdyaXRl
VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZTo6cG9zdFRydW5jYXRlVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29y
a2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEFib3J0VG9NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkV3JpdGUp
OgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6
ZGlkVHJ1bmNhdGUpOgorICAgICAgICAoV2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0SW5pdFRvTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZp
bGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZCk6CisgICAg
ICAgIChXZWJLaXQ6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFz
a1RvV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTEtMDQtMjAgIERvbWluaWMgQ29vbmV5ICA8ZG9t
aW5pY2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtv
di4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtl
ckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1w
bC5jcHAKaW5kZXggZTczYzBmNC4uOWYxNDQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKQEAgLTc2LDEyICs3NiwxMiBAQCB2
b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3QoV2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3
ZWJDaGFubmVsLCBDb25uZWN0TGlzdAogICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0
ZShwbGF0Zm9ybV9jaGFubmVsKTsKIAogICAgIHdvcmtlclRocmVhZCgpLT5ydW5Mb29wKCkucG9z
dFRhc2soCi0gICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29ubmVjdFRhc2ssIHRoaXMsIGNo
YW5uZWwucmVsZWFzZSgpKSk7CisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29ubmVjdFRh
c2ssIGNoYW5uZWwucmVsZWFzZSgpKSk7CiAgICAgaWYgKGxpc3RlbmVyKQogICAgICAgICBsaXN0
ZW5lci0+Y29ubmVjdGVkKCk7CiB9CiAKLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVj
dFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU2hhcmVkV29ya2VySW1w
bCogd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKK3ZvaWQg
V2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCiB7CiAgICAg
Ly8gV3JhcCB0aGUgcGFzc2VkLWluIGNoYW5uZWwgaW4gYSBNZXNzYWdlUG9ydCwgYW5kIHNlbmQg
aXQgb2ZmIHZpYSBhIGNvbm5lY3QgZXZlbnQuCiAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0
ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgKaW5kZXggYjU5MWM3Yi4uMzE0NzUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwu
aApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgfldlYlNo
YXJlZFdvcmtlckltcGwoKTsKIAotICAgIHN0YXRpYyB2b2lkIGNvbm5lY3RUYXNrKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTaGFyZWRXb3JrZXJJbXBsKiwgUGFzc093blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw+KTsKKyAgICBzdGF0aWMgdm9pZCBjb25uZWN0
VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWw+KTsKIAogICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogbV9j
bGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNw
cAppbmRleCAwY2Q1ZjQxLi4xZDRhYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJCYXNlLmNwcApAQCAtODksNyArODksOCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgICAgIGlmIChtX3dvcmtlcikK
LSAgICAgICAgICAgIG1fd29ya2VyLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVzdWx0KSwgbV9tb2RlKTsKKyAg
ICAgICAgICAgIG1fd29ya2VyLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCisgICAg
ICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgcmVzdWx0KSwgbV9tb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC05Nyw3ICs5OCwxMSBAQCBwcml2YXRlOgogICAgICAgICA6IG1fd29ya2VyKHdvcmtlcikKICAg
ICAgICAgLCBtX21vZGUobW9kZSkKICAgICB7Ci0gICAgICAgIHdvcmtlci0+ZGlzcGF0Y2hUYXNr
VG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dEYXRhYmFzZVRhc2ssIGNvbW1v
bkNsaWVudCwgZnJhbWUsIFN0cmluZyhuYW1lKSwgU3RyaW5nKGRpc3BsYXlOYW1lKSwgZXN0aW1h
dGVkU2l6ZSwgdGhpcykpOworICAgICAgICB3b3JrZXItPmRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZCgKKyAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dEYXRhYmFzZVRhc2ssIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZyYW1lKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcobmFtZSksIFN0cmluZyhkaXNwbGF5TmFtZSksIGVzdGlt
YXRlZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGFsbG93RGF0YWJhc2VU
YXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYkNvbW1vbldv
cmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdURjo6U3Ry
aW5nIG5hbWUsIGNvbnN0IFdURjo6U3RyaW5nIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUsIFBhc3NSZWZQdHI8QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2U+IGJy
aWRnZSkKQEAgLTI2Miw3ICsyNjcsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6Om9wZW5GaWxlU3lz
dGVtRm9yV29ya2VyKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nCiB2b2lkIFdl
YldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygm
cG9zdE1lc3NhZ2VUYXNrLCB0aGlzLAorICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UtPnRvV2lyZVN0cmluZygpLCBjaGFubmVscykpOwogfQogCkBAIC0yODcsOSArMjkyLDEw
IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBk
aXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0RXhjZXB0aW9u
VGFzaywgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTCkpOworICAgIGRpc3BhdGNoVGFza1RvTWFp
blRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0RXhjZXB0aW9uVGFzaywg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZVVSTCkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zMTIsNyArMzE4LDcgQEAgdm9pZCBX
ZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291
cmNlIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVz
c2FnZVRhc2ssIHRoaXMsCisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZSwgdHlwZSwgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0KQEAgLTMzNCw3
ICszNDAsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0g
ICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmY29uZmlybU1l
c3NhZ2VUYXNrLCB0aGlzLAorICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxs
YmFja1Rhc2soJmNvbmZpcm1NZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Bl
bmRpbmdBY3Rpdml0eSkpOwogfQogCkBAIC0zNTAsNyArMzU2LDggQEAgdm9pZCBXZWJXb3JrZXJC
YXNlOjpjb25maXJtTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
IHZvaWQgV2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFj
a1Rhc2soJnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNl
OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsCkBAIC0zNjUsNyArMzcyLDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5n
QWN0aXZpdHlUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiB2b2lkIFdlYldv
cmtlckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWQoKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFp
blRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHRDbG9zZWRUYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSkpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OndvcmtlckNvbnRl
eHRDbG9zZWRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zODAsNyAr
Mzg3LDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2VkVGFzayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJD
b250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcykpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0RGVzdHJveWVk
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCBmOTBlN2U4Li4x
MDEwYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1w
bDo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwKICAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7CiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFp
blRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgICAgICAgICAmc3RhcnRXb3JrZXJDb250
ZXh0VGFzaywKLSAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgc2NyaXB0VVJMLnN0cmluZygpLAogICAgICAgICAg
ICAgdXNlckFnZW50LAogICAgICAgICAgICAgc291cmNlQ29kZSkpOwpAQCAtMTU2LDcgKzE1Niw4
IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4dCgpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwogICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9N
YWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmdGVybWluYXRlV29ya2VyQ29udGV4dFRhc2ss
IHRoaXMpKTsKKyAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KAorICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0ZXJtaW5hdGVXb3JrZXJDb250ZXh0
VGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIG1fd2ViV29ya2VyLT50ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CkBAIC0xNzIs
NyArMTczLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dCgKICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CiAgICAgaWYgKCFpc01h
aW5UaHJlYWQoKSkgewogICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxz
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw3ICsyMDMsNyBAQCB2b2lkIFdlYldvcmtlckNs
aWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCiAgICAgLy8gRXZlbiBpZiB0aGlzIGlz
IGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQsIHRoZXJlIGNvdWxkIGJlIGEgcXVldWVkIHRhc2sg
Zm9yCiAgICAgLy8gdGhpcyBvYmplY3QsIHNvIGRvbid0IGRlbGV0ZSBpdCByaWdodCBhd2F5Lgog
ICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFj
a1Rhc2soJndvcmtlck9iamVjdERlc3Ryb3llZFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2Us
CkBAIC0yMjEsNyArMjIyLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKIAogICAgIGlmIChjdXJy
ZW50VGhyZWFkKCkgIT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAgICAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyhtZXNzYWdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMyLnJlbGVhc2UoKSkp
OwogICAgICAgICByZXR1cm47CkBAIC0yMzcsNyArMjM4LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGll
bnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBlcnJv
ck1lc3MKIHsKICAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IG1fd29ya2VyVGhyZWFkSWQpIHsK
ICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhlcnJvck1lc3NhZ2Up
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoc291cmNlVVJMKSkpOwpAQCAtMjYxLDcg
KzI2Miw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9X
b3JrZXJPYmplY3QoaW50IGRlc3RpbmF0aW9uLAogewogICAgIGlmIChjdXJyZW50VGhyZWFkKCkg
IT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJP
YmplY3RUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VMZXZlbCwK
QEAgLTI5NCwxNCArMjk1LDE0IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6Y29uZmlybU1l
c3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5CiAgICAgLy8gYWNj
ZXNzZWQuICBPdGhlcndpc2UgdGhlcmUgYXJlIHJhY2UgY29uZGl0aW9ucyB3aXRoIHY4J3MgZ2Fy
YmFnZQogICAgIC8vIGNvbGxlY3Rpb24uCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dFRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAog
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkpCiB7CiAgICAgLy8gU2VlIGFib3ZlIGNvbW1lbnQgaW4gY29uZmlybU1l
c3NhZ2VGcm9tV29ya2VyT2JqZWN0LgogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQWN0aXZpdHkp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcApp
bmRleCAxNjVhZjY4Li5iMmQ0OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJJbXBsLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViV29ya2VySW1wbDo6
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAogCiAg
ICAgd29ya2VyVGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzaygKICAgICAgICAgY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLCBTdHJpbmcobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2UoKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgU3RyaW5nKG1lc3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBXZWJX
b3JrZXJJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
LmNwcAppbmRleCA1MTQ3ZTE1Li5mYjVkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNw
cApAQCAtMTU1LDY0ICsxNTUsOTcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpzdG9wKCkKIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
T3BlbkZpbGVTeXN0ZW1Ub01haW5UaHJlYWQoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25D
bGllbnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3Jl
YXRlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQsIGNvbW1vbkNs
aWVudCwgdHlwZSwgc2l6ZSwgY3JlYXRlLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNr
VG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVt
T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyhjb21tb25DbGllbnQpLCB0eXBlLCBzaXplLCBjcmVhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAK
IHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJm1vdmVPbk1haW5U
aHJlYWQsIGZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwgdGhpcywgbW9k
ZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZtb3ZlT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25Q
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OnBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZjb3B5T25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5h
dGlvblBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29weU9uTWFpblRocmVhZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHNvdXJj
ZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0q
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewog
ICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZyZW1vdmVPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRo
aXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmcmVtb3ZlT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsK
IH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVj
dXJzaXZlbHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0p
OwotICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlbW92
ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLCBmaWxlU3lzdGVtLCBwYXRoLCB0aGlzLCBtb2RlKSk7
CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsK
IH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFk
YXRhVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAg
ICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkTWV0YWRh
dGFPbk1haW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNw
YXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVhZE1l
dGFkYXRhT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmY3JlYXRlRmlsZU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwg
cGF0aCwgZXhjbHVzaXZlLCB0aGlzLCBtb2RlKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVT
eXN0ZW0pLCBwYXRoLCBleGNsdXNpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZl
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwotICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZURpcmVjdG9y
eU9uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVzaXZlLCB0aGlzLCBtb2RlKSk7
CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksIHBhdGgsIGV4Y2x1c2l2ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
IG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3Rl
bSk7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmZmls
ZUV4aXN0c09uTWFpblRocmVhZCwgZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZm
aWxlRXhpc3RzT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWlu
VGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKLSAgICBkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaXJlY3RvcnlFeGlzdHNPbk1h
aW5UaHJlYWQsIGZpbGVTeXN0ZW0sIHBhdGgsIHRoaXMsIG1vZGUpKTsKKyAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlyZWN0b3J5RXhp
c3RzT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Ci0gICAgZGlzcGF0Y2hUYXNrVG9N
YWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCwg
ZmlsZVN5c3RlbSwgcGF0aCwgdGhpcywgbW9kZSkpOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRo
cmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWFkRGlyZWN0b3J5T25NYWluVGhy
ZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhm
aWxlU3lzdGVtKSwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0
ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKQEAgLTI3Niwy
NyArMzA5LDMwIEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZERp
cmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFCiAKIHZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJyb3IgZXJy
b3IsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmZGlkRmFpbE9uV29ya2VyVGhyZWFkLCB0aGlzLCBlcnJvciksIG1vZGUp
OworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRGYWlsT25X
b3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVycm9yKSwgbW9kZSk7
CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkT3BlbkZpbGVT
eXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJvb3RQ
YXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQsIHRoaXMsIG5h
bWUsIHJvb3RQYXRoKSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxs
YmFja1Rhc2soJmRpZE9wZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgbmFtZSwgcm9vdFBhdGgpLCBtb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVkT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbW9kZSkK
IHsKLSAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3VjY2Vl
ZE9uV29ya2VyVGhyZWFkLCB0aGlzKSwgbW9kZSk7CisgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihj
cmVhdGVDYWxsYmFja1Rhc2soJmRpZFN1Y2NlZWRPbldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmRpZFJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChjb25zdCBXZWJGaWxlSW5m
byYgaW5mbywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZCwgdGhpcywg
aW5mbyksIG1vZGUpOworICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZkaWRSZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgaW5mbyksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OmRpZFJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoY29uc3QgV2ViVmVjdG9yPFdlYkZp
bGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSwgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewotICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWFk
RGlyZWN0b3J5T25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVudHJpZXMsIGhhc01vcmUpLCBtb2RlKTsK
KyAgICBtYXlQb3N0VGFza1RvV29ya2VyKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRp
ZFJlYWREaXJlY3RvcnlPbldvcmtlclRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVudHJpZXMsIGhhc01vcmUpLCBtb2RlKTsK
IH0KIAogV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6V29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShXZWJXb3JrZXJCYXNlKiB3b3JrZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxi
YWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVX
cml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29y
a2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAKaW5kZXggMTc5YWVhNS4uYjcxOGJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAKQEAgLTYxLDIwICs2MSwyMiBAQCB2b2lkIFdv
cmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RXcml0ZVRvTWFpblRocmVhZChsb25n
IGxvbmcgcG9zaXRpb24sCiB7CiAgICAgQVNTRVJUKCFtX29wZXJhdGlvbkluUHJvZ3Jlc3MpOwog
ICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd3JpdGVPbk1haW5UaHJlYWQsIHRoaXMsIHBvc2l0
aW9uLCBkYXRhKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNr
VGFzaygmd3JpdGVPbk1haW5UaHJlYWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgcG9zaXRpb24s
IGRhdGEpKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
VHJ1bmNhdGVUb01haW5UaHJlYWQobG9uZyBsb25nIGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyk7CiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gdHJ1ZTsK
LSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ0cnVuY2F0
ZU9uTWFpblRocmVhZCwgdGhpcywgbGVuZ3RoKSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmdHJ1bmNhdGVPbk1haW5UaHJlYWQsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgbGVuZ3RoKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZTo6cG9zdEFib3J0VG9NYWluVGhyZWFkKCkKIHsKICAgICBBU1NFUlQobV9vcGVyYXRp
b25JblByb2dyZXNzKTsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZhYm9ydE9uTWFpblRocmVhZCwgdGhpcykpOworICAgIGRpc3BhdGNoVGFza1RvTWFp
blRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmFib3J0T25NYWluVGhyZWFkLCBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZTo6cG9zdFNodXRkb3duVG9NYWluVGhyZWFkKFBhc3NSZWZQdHI8V29ya2VyRmlsZVdy
aXRlckNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlKQpAQCAtMTEzLDE3ICsxMTUsMjAgQEAgdm9pZCBX
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpzaHV0ZG93bk9uTWFpblRocmVhZChTY3Jp
cHRFeGVjdXRpb25Db250ZXgKIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdl
OjpkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpCiB7Ci0gICAgZGlzcGF0
Y2hUYXNrVG9Xb3JrZXJUaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZU9uV29ya2Vy
VGhyZWFkLCB0aGlzLCBieXRlcywgY29tcGxldGUpKTsKKyAgICBkaXNwYXRjaFRhc2tUb1dvcmtl
clRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZU9uV29ya2VyVGhy
ZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlcywgY29tcGxldGUpKTsKIH0K
IAogdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRGYWlsKFdlYkZpbGVF
cnJvciBlcnJvcikKIHsKLSAgICBkaXNwYXRjaFRhc2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxs
YmFja1Rhc2soJmRpZEZhaWxPbldvcmtlclRocmVhZCwgdGhpcywgZXJyb3IpKTsKKyAgICBkaXNw
YXRjaFRhc2tUb1dvcmtlclRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRG
YWlsT25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVycm9yKSk7
CiB9CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkVHJ1bmNhdGUo
KQogewotICAgIGRpc3BhdGNoVGFza1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygm
ZGlkVHJ1bmNhdGVPbldvcmtlclRocmVhZCwgdGhpcykpOworICAgIGRpc3BhdGNoVGFza1RvV29y
a2VyVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFRydW5jYXRlT25Xb3Jr
ZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKIH0KIAogc3RhdGljIGNv
bnN0IGNoYXIgZmlsZVdyaXRlck9wZXJhdGlvbnNNb2RlW10gPSAiZmlsZVdyaXRlck9wZXJhdGlv
bnNNb2RlIjsKQEAgLTE0NCw3ICsxNDksOCBAQCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJp
ZGdlOjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcAogCiB2
b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBvc3RJbml0VG9NYWluVGhyZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZpbml0T25NYWluVGhyZWFkLCB0aGlzLCBwYXRoKSk7CisgICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmluaXRP
bk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHBhdGgpKTsKIH0KIAog
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6fldvcmtlckZpbGVXcml0ZXJDYWxsYmFj
a3NCcmlkZ2UoKQpAQCAtMTk2LDEzICsyMDIsMTUgQEAgdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2Fs
bGJhY2tzQnJpZGdlOjpydW5UYXNrT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGUK
IHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsK
ICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgV2Vi
V29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygm
cnVuVGFza09uTWFpblRocmVhZCwgdGhpcywgdGFzaykpOworICAgIFdlYldvcmtlckJhc2U6OmRp
c3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZydW5U
YXNrT25NYWluVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCB0YXNrKSk7CiB9
CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9X
b3JrZXJUaHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9wcm94eS0+cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09uV29ya2Vy
VGhyZWFkLCB0aGlzLCB0YXNrKSwgbV9tb2RlKTsKKyAgICBtX3Byb3h5LT5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckNvbnRleHQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09u
V29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCB0YXNrKSwgbV9tb2Rl
KTsKIH0KIAogYm9vbCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjp3YWl0Rm9yT3Bl
cmF0aW9uVG9Db21wbGV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGhyZWFkVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhy
ZWFkVGVzdC5jcHAKaW5kZXggMDRmYmE0Ni4uNjlhZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcApAQCAtNTMsNyArNTMsOCBAQCBURVNUKEND
VGhyZWFkVGVzdCwgcGluZ1BvbmdVc2luZ0NvbmRpdGlvbikKICAgICBPd25QdHI8Q0NUaHJlYWQ+
IHRocmVhZCA9IENDVGhyZWFkOjpjcmVhdGUoKTsKICAgICBQaW5nUG9uZ1VzaW5nQ29uZGl0aW9u
IHRhcmdldDsKICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwotICAgIHRocmVhZC0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKCZ0YXJnZXQsICZQaW5nUG9uZ1VzaW5nQ29uZGl0
aW9uOjpwaW5nLCAmY29tcGxldGlvbikpOworICAgIHRocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NU
aHJlYWRUYXNrKCZ0YXJnZXQsICZQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uOjpwaW5nLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjb21wbGV0aW9uKSkpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwogCiAgICAgRVhQRUNUX0VR
KHRocmVhZC0+dGhyZWFkSUQoKSwgdGFyZ2V0LmhpdFRocmVhZElEKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>