<?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>44101</bug_id>
          
          <creation_ts>2010-08-17 04:46:52 -0700</creation_ts>
          <short_desc>[IndexedDB] Abort idle IDBTransactions when the JS context they were created in finishes execution.</short_desc>
          <delta_ts>2010-08-19 09:43:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Popescu">andreip</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bulach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265471</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-17 04:46:52 -0700</bug_when>
    <thetext>[IndexedDB] Abort idle IDBTransactions when the JS context they were created in finishes execution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265474</commentid>
    <comment_count>1</comment_count>
      <attachid>64575</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-17 04:54:37 -0700</bug_when>
    <thetext>Created attachment 64575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265482</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-17 05:49:54 -0700</bug_when>
    <thetext>Attachment 64575 did not build on chromium:
Build output: http://queues.webkit.org/results/3784225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265520</commentid>
    <comment_count>3</comment_count>
      <attachid>64575</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-17 07:11:27 -0700</bug_when>
    <thetext>Comment on attachment 64575
Patch

LayoutTests/storage/indexeddb/script-tests/transaction-basics.js:1
 +  description(&quot;Test IndexedDB&apos;s basics.&quot;);
fix

LayoutTests/storage/indexeddb/script-tests/transaction-basics.js:7
 +      done();
Verify the event

WebCore/WebCore.gypi:3511
 +              &apos;storage/IDBAbortEvent.cpp&apos;,
Lets update these in a later patch.

WebCore/bindings/v8/V8Proxy.cpp:655
 +          page-&gt;group().idbFactory()-&gt;abortPendingTransactions(IDBPendingTransactionMonitor::pendingTransactions());
Refactor to check pendingTransactions and skip the rest if there are none.  Actually hasIDBFactory might be an ASSERT in such a case?  This might make it a bit faster.

WebCore/storage/IDBAbortEvent.cpp:45
 +      : IDBEvent(eventNames().abortEvent, 0)
The source should be set.  Add a fixme for now and fix it in a subsequent patch.

WebCore/storage/IDBDatabase.cpp:76
 +      // appropriate locks have been acquired.
Maybe mention that IDBTransaction is 1:1 with a backend..since this is not true anywhere else.

WebCore/storage/IDBFactoryBackendImpl.cpp:48
 +  IDBFactoryBackendImpl::IDBFactoryBackendImpl() : m_transactionCoordinator(IDBTransactionCoordinator::create())
put on next line

WebCore/storage/IDBPendingTransactionMonitor.h:29
 +  #if ENABLE(INDEXED_DATABASE)
newline after?

WebCore/storage/IDBPendingTransactionMonitor.h:37
 +  // has been issued for it (e.g. an IDBObjectStore::put() or similar).
no asynchronous operation is currently queued for it (e.g. ...)

WebCore/storage/IDBPendingTransactionMonitor.cpp:1
 +  #include &quot;config.h&quot;
license

WebCore/storage/IDBPendingTransactionMonitor.cpp:8
 +  Vector&lt;int&gt; IDBPendingTransactionMonitor::m_ids;
Only POD static variables....need to make this lazily inited.

WebCore/storage/IDBTransactionCoordinator.h:40
 +  // This class manages transactions as follows. Requests for new transactions are
fixme: do it this way, maybe?

WebCore/storage/IDBTransactionCoordinator.h:49
 +  // available.
Mention the semantics of ordering.

WebCore/storage/IDBTransactionCoordinator.h:58
 +      IDBTransactionCoordinator();
newline after

WebCore/storage/IDBTransactionCoordinator.h:60
 +      typedef HashMap&lt;int, RefPtr&lt;IDBTransactionBackendInterface&gt; &gt; IdToQueuePositionMap;
type name sucks

WebCore/storage/IDBTransactionCoordinator.cpp:1
 +  #include &quot;config.h&quot;
license

WebCore/storage/IDBTransactionCoordinator.cpp:13
 +  class IDBTransactionBackendImpl : public IDBTransactionBackendInterface {
split into its own file

WebCore/storage/IDBTransactionCoordinator.cpp:107
 +      m_transactionQueue.remove(transaction.get());
assert it&apos;s in the transaction queue

WebCore/storage/IDBTransactionCoordinator.cpp:110
 +      // FIXME: this will change once we have transactions actually running.
what will change though?

WebCore/storage/IDBTransactionCoordinator.cpp:16
 +      virtual ~IDBTransactionBackendImpl() { }
maybe newline after this?...and the ~ not inline when it&apos;s in its own .h file

WebCore/storage/IDBTransactionCoordinator.cpp:18
 +      virtual unsigned short mode() const;
an example of somethign that should prob just be inline

WebCore/storage/IDBTransactionCoordinator.cpp:21
 +      virtual SQLiteDatabase* sqliteDatabase();
lets not add this until we need it

WebCore/storage/IDBTransactionCoordinator.cpp:23
 +      virtual void setCallbacks(IDBTransactionCallbacks*);
newline after

WebCore/storage/IDBTransactionCoordinator.cpp:56
 +      return 0;
do something

WebCore/storage/IDBTransactionCoordinator.cpp:51
 +      return 0;
fixme

WebCore/storage/IDBTransactionCoordinator.cpp:60
 +  {
fixme...plus ASSERT_NOT_REACHED on all

WebCore/storage/IDBTransactionCoordinator.cpp:66
 +      if (m_callbacks)
remove if

WebCore/storage/IDBTransactionCoordinator.cpp:72
 +      return 0;
delete

WebCore/storage/IDBTransactionCoordinator.cpp:77
 +      return m_id;
inline...plus mode and such

WebCore/storage/IDBTransactionCoordinator.cpp:82
 +      m_callbacks = callbacks;
inline

WebCore/storage/IDBTransactionCoordinator.cpp:86
 +  IDBTransactionCoordinator::IDBTransactionCoordinator() : m_nextID(0)
initialization on the next line

WebCore/storage/IDBTransactionCallbacks.h:35
 +  #if ENABLE(INDEXED_DATABASE)
put this above the other includes

WebCore/storage/IDBTransactionCallbacks.h:45
 +      // FIXME: add the rest
In comments, try to use complete sentences.

WebCore/storage/IDBTransaction.h:100
 +  
no newline

WebCore/storage/IDBTransaction.h:70
 +      virtual int id() const;
newline after this

WebCore/storage/IDBTransaction.cpp:106
 +      dispatchEvent(abortEvent); // FIXME: create the correct event
delete fixme

WebCore/storage/IDBTransaction.cpp:105
 +      RefPtr&lt;IDBAbortEvent&gt; abortEvent = IDBAbortEvent::create();
just do this inline?

WebCore/storage/IDBTransaction.cpp:104
 +      RefPtr&lt;IDBTransaction&gt; selfRef = m_selfRef.release();
Reference comment in IDBRequest.cpp about how the self ref works.

WebCore/storage/IDBTransaction.h:70
 +      virtual int id() const;
fixme: implement other events.

WebCore/storage/IDBTransaction.cpp:65
 +      // Release the backend.
Mention this is to break a circular reference?

WebKit/chromium/public/WebIDBFactory.h:69
 +        WEBKIT_ASSERT_NOT_REACHED();
wrong indent

WebKit/chromium/public/WebIDBFactory.h:67
 +      virtual void abortPendingTransactions(const WebVector&lt;int&gt;&amp; pendingIDs)
Can be inlined...only need multiple lines if multiple statements.

WebKit/chromium/public/WebIDBTransaction.h:60
 +      virtual void setCallbacks(WebIDBTransactionCallbacks*)
one line

WebKit/chromium/public/WebIDBTransaction.h:53
 +          WEBKIT_ASSERT_NOT_REACHED();
one line

WebKit/chromium/public/WebIDBTransactionCallbacks.h:31
 +  namespace WebKit {
newline after

WebKit/chromium/src/IDBDatabaseProxy.cpp:101
 +      if (!transaction)
Can this happen?

WebKit/chromium/src/IDBFactoryBackendProxy.cpp:70
 +      if (!pendingIDs.size())
Maybe assert this?

WebKit/chromium/src/IDBFactoryBackendProxy.h:49
 +      virtual void abortPendingTransactions(const Vector&lt;int&gt;&amp; pendingIDs);
newline after

WebKit/chromium/src/IDBTransactionBackendProxy.cpp:36
 +  #if ENABLE(INDEXED_DATABASE)
move up

WebKit/chromium/src/IDBTransactionBackendProxy.h:33
 +  #if ENABLE(INDEXED_DATABASE)
move up

WebKit/chromium/src/IDBTransactionBackendProxy.cpp:57
 +      if (!objectStore)
possible?  it probaby is, but double check

WebKit/chromium/src/IDBTransactionBackendProxy.cpp:74
 +      ASSERT_NOT_REACHED();
FIXME

WebKit/chromium/src/IDBTransactionBackendProxy.cpp:79
 +      ASSERT_NOT_REACHED();
delete

WebKit/chromium/src/IDBTransactionCallbacksProxy.h:51
 +      virtual int id() const;
FIXME: implement others

WebKit/chromium/src/IDBTransactionCallbacksProxy.h:37
 +  #if ENABLE(INDEXED_DATABASE)
move up

WebKit/chromium/src/IDBTransactionCallbacksProxy.h:40
 +  class WebIDBTransactionCallbacks;
one line

WebKit/chromium/src/IDBTransactionCallbacksProxy.h:35
 +  #include &lt;wtf/RefPtr.h&gt;
why do you nee this?

WebKit/chromium/src/IDBTransactionCallbacksProxy.h:34
 +  #include &lt;wtf/PassRefPtr.h&gt;
or this?

WebKit/chromium/src/WebIDBDatabaseImpl.cpp:92
 +      RefPtr&lt;DOMStringList&gt; nameList = PassRefPtr&lt;DOMStringList&gt;(names);
For this reason, I&apos;d lean towards having transaction take in a PassRefPtr...

WebKit/chromium/src/WebIDBDatabaseImpl.cpp:95
 +          return 0;
make sure the level above does the right thing

WebKit/chromium/src/WebIDBFactoryImpl.cpp:67
 +  {
I think WebVector has &quot;cute&quot; ways of dealing with this.

WebKit/chromium/src/WebIDBFactoryImpl.h:46
 +      virtual void abortPendingTransactions(const WebVector&lt;int&gt;&amp; pendingIDs);
newline after

WebKit/chromium/src/WebIDBTransactionCallbacksImpl.cpp:31
 +  #if ENABLE(INDEXED_DATABASE)
move up

WebKit/chromium/src/WebIDBTransactionImpl.h:53
 +  
extra new line

WebKit/chromium/src/WebIDBTransactionImpl.cpp:34
 +  #if ENABLE(INDEXED_DATABASE)
move up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266097</commentid>
    <comment_count>4</comment_count>
      <attachid>64709</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-18 07:33:33 -0700</bug_when>
    <thetext>Created attachment 64709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266098</commentid>
    <comment_count>5</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-18 07:34:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 64575 [details])

Thanks for the comments Jeremy. All fixed, new patch attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266112</commentid>
    <comment_count>6</comment_count>
      <attachid>64709</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-18 08:26:45 -0700</bug_when>
    <thetext>Comment on attachment 64709
Patch

WebKit/chromium/src/WebIDBTransactionImpl.h:54
 +  
extra newline

WebCore/storage/IDBPendingTransactionMonitor.cpp:37
 +      return (m_ids &amp;&amp; m_ids-&gt;size());
no need for ()&apos;s

WebCore/storage/IDBPendingTransactionMonitor.cpp:58
 +      m_ids-&gt;clear();
Hm...might be worth to have this do a if (m_ids) check?

WebCore/storage/IDBPendingTransactionMonitor.cpp:47
 +  void IDBPendingTransactionMonitor::removePendingTransaction(int id)
I&apos;m tempted to say this should be a set rather than a vector...but at the same time I don&apos;t see the list ever getting very big.

WebCore/storage/IDBPendingTransactionMonitor.h:51
 +      static const Vector&lt;int&gt;&amp; pendingTransactions();
newline after

WebCore/storage/IDBTransactionCoordinator.cpp:1
 +  #include &quot;config.h&quot;
license!


r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266694</commentid>
    <comment_count>7</comment_count>
      <attachid>64840</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-19 06:20:24 -0700</bug_when>
    <thetext>Created attachment 64840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266695</commentid>
    <comment_count>8</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-19 06:21:17 -0700</bug_when>
    <thetext>Thanks, all comments addressed, will land as soon as I get confirmation from the try bots that all is well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266738</commentid>
    <comment_count>9</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-19 07:54:11 -0700</bug_when>
    <thetext>Committed r65670: &lt;http://trac.webkit.org/changeset/65670&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64575</attachid>
            <date>2010-08-17 04:54:37 -0700</date>
            <delta_ts>2010-08-18 07:33:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44101-20100817125434.patch</filename>
            <type>text/plain</type>
            <size>88865</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2UyNTQ3MDdjY2YwYzJkYTJiMGMxZTc5ZDk0ZmFkNzBmOThkYjNlLi4wMmNlMjJj
MjA5MjZjNjQ0ZmMwZmVjY2E2YzU1MTdjOWZlYzgyNzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDgtMTcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtJbmRleGVkREJdIEFi
b3J0IGlkbGUgSURCVHJhbnNhY3Rpb25zIHdoZW4gdGhlIEpTIGNvbnRleHQgdGhleSB3ZXJlIGNy
ZWF0ZWQgaW4gZmluaXNoZXMgZXhlY3V0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMDEKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICh1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL3RyYW5zYWN0aW9uLWJh
c2ljcy5qczogQWRkZWQuCisgICAgICAgIChhYm9ydENhbGxiYWNrKToKKyAgICAgICAgKGNyZWF0
ZVRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWw6IEFkZGVkLgor
CiAyMDEwLTA4LTA5ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
cGRhdGUgY2hyb21pdW0gdGVzdCByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKaW5kZXggZTUxMGJlMThjYmMxZDhjZGNiM2I3
NzNmY2ViNWZiZGQwN2QwOGIwNi4uZjI5MjE3NjJjOTM0Mjg2ODg5ZDNlMzA1MjRkZWMxMTA1MzFm
NjFjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c2hhcmVkLmpzCkBAIC01Miw0ICs1MiwzIEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrKCkKICAgICB2ZXJpZnlFcnJvckV2ZW50KGV2ZW50KTsKICAgICBkb25lKCk7CiB9Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NjcmlwdC10ZXN0cy90cmFu
c2FjdGlvbi1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQt
dGVzdHMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNDYzYmUzZTcxODk5N2Nj
NTk3YTcyODczMGE1MDJjOGY2ODVkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQtdGVzdHMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCkBAIC0w
LDAgKzEsMzAgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJhc2ljcy4iKTsKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBhYm9ydENhbGxiYWNrKCkKK3sKKyAgICBkb25l
KCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQ2FsbGJhY2soKQoreworICAgIHZl
cmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJl
dmVudC5yZXN1bHQudHJhbnNhY3Rpb24oKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBh
Ym9ydENhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUo
IidpbmRleGVkREInIGluIHdpbmRvdyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9
PSBudWxsIik7CisKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbmFt
ZScsICdkZXNjcmlwdGlvbicpIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CisgICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZVRyYW5zYWN0aW9uQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwordGVzdCgpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdjNGY0NmQzN2I4N2ZjMjRjYjU0NDY0OWEwMThhYjU1MmFjYTE3YzAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3Mt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgYmFzaWNzLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnaW5kZXhlZERCJyBpbiB3aW5k
b3cgaXMgdHJ1ZQorUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9w
ZW4oJ25hbWUnLCAnZGVzY3JpcHRpb24nKQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMg
dHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBy
ZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2
ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1Mg
J3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UK
K1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50
IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNj
ZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFy
Z2V0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAn
cmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJl
YWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworZXZlbnQucmVzdWx0LnRyYW5zYWN0aW9u
KCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNp
Y3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2lj
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE3MjM4ZjYyNmZmZjVjODBhZmQ5MTUxNWE5MWQwYTQxZGEyYTI0
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1iYXNpY3MuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGYzZGU0YzkwZDRkMjQ4ZTI2ODRhNTFmNzkyMDdkNDkzOWRlNGRlZjYuLmQ2NjU4YTRmZWQzNWQ0
MWYwYTQ4NmM1NzE3OWE0MDk2MTJhNzFiMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTAtMDgtMTcgIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtJbmRleGVkREJdIEFib3J0IGlkbGUgSURCVHJh
bnNhY3Rpb25zIHdoZW4gdGhlIEpTIGNvbnRleHQgdGhleSB3ZXJlIGNyZWF0ZWQgaW4gZmluaXNo
ZXMgZXhlY3V0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDQxMDEKKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIGludHJvZHVjZXMgdGhlIFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IsIHdoaWNoIHdpbGwgYmUgdXNlZAorICAgICAgICB0byBzY2hl
ZHVsZSB0cmFuc2FjdGlvbnMgZm9yIGV4ZWN1dGlvbi4KKworICAgICAgICBUZXN0OiBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94
eTo6cnVuU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmNhbGxGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpkaWRMZWF2ZVNjcmlwdENvbnRleHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvSURCVHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6Omhhc0lEQkZhY3RvcnkpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCQWJvcnRFdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURC
QWJvcnRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFib3J0RXZlbnQ6OklE
QkFib3J0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQWJvcnRFdmVudDo6fklEQkFib3J0
RXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQWJvcnRFdmVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkFib3J0RXZlbnQ6OmlzSURCQWJvcnRFdmVudCk6CisgICAgICAgICog
c3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
dHJhbnNhY3Rpb24pOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZSk6Cisg
ICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZhY3RvcnlCYWNrZW5kSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjphYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWRkUGVuZGluZ1RyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJlbW92ZVBlbmRpbmdUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
OjpjbGVhclBlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvcjo6cGVuZGluZ1RyYW5zYWN0aW9ucyk6CisgICAgICAgICogc3Rv
cmFnZS9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
bkFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6dGltZXJGaXJlZCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg6
CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOjp+SURCVHJhbnNhY3Rpb25D
YWxsYmFja3MpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
fklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6bW9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c3FsaXRlRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6aWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2V0Q2FsbGJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6fklE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25Db29yZGluYXRvcjo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcjo6YWJvcnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSk6CisKIDIwMTAtMDgtMDkgIE1hcmN1cyBCdWxhY2gg
IDxidWxhY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxv
dy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggYjk4MTRiNzNkNzQ2MWJlYmVkYTUzNDAxYTM4ODAwYjhlMjI2MzE4OC4uYTk1ZmI5
YmZhY2I3MzRmNjMzYzhhZTE5N2Y0MDYzZTg5ODA4NjY4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MDgsNiArMzUwOCw4
IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9FbnRyeUNhbGxiYWNrLmgnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRmxh
Z3MuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJBYm9ydEV2ZW50LmNwcCcsCisgICAgICAg
ICAgICAnc3RvcmFnZS9JREJBYm9ydEV2ZW50LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURC
QW55LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuaCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJDYWxsYmFja3MuaCcsCkBAIC0zNTQ4LDEyICszNTUwLDE3IEBACiAgICAgICAg
ICAgICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgnLAorICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAnLAorICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oJywKICAgICAgICAgICAgICdzdG9y
YWdlL0lEQlJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlJlcXVlc3QuaCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwJywKICAgICAgICAgICAg
ICdzdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oJywK
KyAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgnLAorICAgICAg
ICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAnLAorICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oJywKICAgICAgICAgICAgICdz
dG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oJywKICAgICAgICAgICAgICdz
dG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0xvY2Fs
U3RvcmFnZVRhc2suaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggZDZm
MDVmNGE2OWNmNWJlZTA2ODEyZWJiYTliMjZhNDlkZDEwMDZmMS4uZTNjZTlhNzAwNTFiY2VlMmMx
YTEzNDkzMzcwZDk3MWJhMDIxZWE1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNw
cApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJWOEhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4SURCUmVxdWVzdC5oIgorI2luY2x1
ZGUgIlY4SURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgog
I2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VDaGFubmVsLmgiCkBA
IC0zODAsNiArMzgxLDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29u
dmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGEKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKICAgICBpZiAoSURCUmVxdWVzdCogaWRiUmVxdWVzdCA9IHRhcmdldC0+
dG9JREJSZXF1ZXN0KCkpCiAgICAgICAgIHJldHVybiB0b1Y4KGlkYlJlcXVlc3QpOworICAgIGlm
IChJREJUcmFuc2FjdGlvbiogaWRiVHJhbnNhY3Rpb24gPSB0YXJnZXQtPnRvSURCVHJhbnNhY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuIHRvVjgoaWRiVHJhbnNhY3Rpb24pOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCAzZjcyMTEy
YjUwNzhhZjEzYjIzMDNiYzVmMDI4MzNlMmI0ZWYyYzdhLi5lZTQ0ODQ5ZmQ1ZTBlNDAwNWI0OTVh
MmZkYmViOGU5YjY3NjRmZWJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTM3LDYgKzM3
LDggQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNDU5LDcgKzQ2MSw3IEBAIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IFY4UHJveHk6OnJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCwg
Ym9vbCBpc0luCiAgICAgfQogCiAgICAgLy8gUmVsZWFzZSB0aGUgc3RvcmFnZSBtdXRleCBpZiBh
cHBsaWNhYmxlLgotICAgIHJlbGVhc2VTdG9yYWdlTXV0ZXgoKTsKKyAgICBkaWRMZWF2ZVNjcmlw
dENvbnRleHQoKTsKIAogICAgIGlmIChoYW5kbGVPdXRPZk1lbW9yeSgpKQogICAgICAgICBBU1NF
UlQocmVzdWx0LklzRW1wdHkoKSk7CkBAIC01MzIsNyArNTM0LDcgQEAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gVjhQcm94eTo6Y2FsbEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5j
dGlvbiwgdjgKICAgICB9CiAKICAgICAvLyBSZWxlYXNlIHRoZSBzdG9yYWdlIG11dGV4IGlmIGFw
cGxpY2FibGUuCi0gICAgcmVsZWFzZVN0b3JhZ2VNdXRleCgpOworICAgIGRpZExlYXZlU2NyaXB0
Q29udGV4dCgpOwogCiAgICAgaWYgKHY4OjpWODo6SXNEZWFkKCkpCiAgICAgICAgIGhhbmRsZUZh
dGFsRXJyb3JJblY4KCk7CkBAIC02NDEsMTYgKzY0MywyMyBAQCB2b2lkIFY4UHJveHk6OmRpc2Nv
bm5lY3RGcmFtZSgpCiB7CiB9CiAKLXZvaWQgVjhQcm94eTo6cmVsZWFzZVN0b3JhZ2VNdXRleCgp
Cit2b2lkIFY4UHJveHk6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpCiB7CisgICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICAvLyBJZiB3ZSd2ZSBqdXN0IGxlZnQgYSBzY3JpcHQgY29udGV4dCBhbmQgaW5kZXhlZCBkYXRh
YmFzZSBoYXMgYmVlbgorICAgIC8vIGluc3RhbnRpYXRlZCwgd2UgbXVzdCBsZXQgaXRzIHRyYW5z
YWN0aW9uIGNvb3JkaW5hdG9yIGtub3cgc28gaXQgY2FuIHRlcm1pbmF0ZQorICAgIC8vIGFueSBu
b3QteWV0LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zLgorICAgIGlmIChwYWdlLT5ncm91cCgpLmhhc0lE
QkZhY3RvcnkoKSkgeworICAgICAgICBwYWdlLT5ncm91cCgpLmlkYkZhY3RvcnkoKS0+YWJvcnRQ
ZW5kaW5nVHJhbnNhY3Rpb25zKElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnBlbmRpbmdU
cmFuc2FjdGlvbnMoKSk7CisgICAgICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmNs
ZWFyUGVuZGluZ1RyYW5zYWN0aW9ucygpOworICAgIH0KICAgICAvLyBJZiB3ZSd2ZSBqdXN0IGxl
ZnQgYSB0b3AgbGV2ZWwgc2NyaXB0IGNvbnRleHQgYW5kIGxvY2FsIHN0b3JhZ2UgaGFzIGJlZW4K
ICAgICAvLyBpbnN0YW50aWF0ZWQsIHdlIG11c3QgZW5zdXJlIHRoYXQgYW55IHN0b3JhZ2UgbG9j
a3MgaGF2ZSBiZWVuIGZyZWVkLgogICAgIC8vIFBlciBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9z
cGVjL092ZXJ2aWV3Lmh0bWwjc3RvcmFnZS1tdXRleAogICAgIGlmIChtX3JlY3Vyc2lvbiAhPSAw
KQogICAgICAgICByZXR1cm47Ci0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKICAgICBpZiAocGFnZS0+Z3JvdXAoKS5oYXNM
b2NhbFN0b3JhZ2UoKSkKICAgICAgICAgcGFnZS0+Z3JvdXAoKS5sb2NhbFN0b3JhZ2UoKS0+dW5s
b2NrKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IDg0MWMyNDljZWEzZTQ2ZDg3YzkwYzRm
YWFjYmZkZDZlYWEzNjQxOTUuLjQyMGE5OWQ4MzI1NmYwNGRmZDNmOTY3MzVlNDMzNjJhYTBhYTk4
MWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC0zMzgsOSArMzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCByZXBvcnRVbnNhZmVBY2Nlc3NUbyhGcmFtZSog
dGFyZ2V0LCBEZWxheVJlcG9ydGluZyBkZWxheSk7CiAKICAgICBwcml2YXRlOgotICAgICAgICAv
LyBJZiBtX3JlY3Vyc2lvbkNvdW50IGlzIDAsIGxldCBMb2NhbFN0b3JhZ2Uga25vdyBzbyB3ZSBj
YW4gcmVsZWFzZQotICAgICAgICAvLyB0aGUgc3RvcmFnZSBtdXRleC4KLSAgICAgICAgdm9pZCBy
ZWxlYXNlU3RvcmFnZU11dGV4KCk7CisgICAgICAgIHZvaWQgZGlkTGVhdmVTY3JpcHRDb250ZXh0
KCk7CiAKICAgICAgICAgdm9pZCByZXNldElzb2xhdGVkV29ybGRzKCk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAppbmRleCA0MmExNTNhNjkxZjQzNTIxZTAwYzQ2NmEwZjg0N2Q4N2RjNzczZmZiLi4zMTM3NmJh
MmFmNzRmNzZjYmI3MDJjNDZhNjYyM2NiZDJiNzgzYzUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0x
NjgsNiArMTY4LDEwIEBAIElEQlJlcXVlc3QqIEV2ZW50VGFyZ2V0Ojp0b0lEQlJlcXVlc3QoKQog
ewogICAgIHJldHVybiAwOwogfQorSURCVHJhbnNhY3Rpb24qIEV2ZW50VGFyZ2V0Ojp0b0lEQlRy
YW5zYWN0aW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30KICNlbmRpZgogCiBib29sIEV2ZW50VGFy
Z2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAppbmRleCAxZmY5MDMxZjM5MTUxZGJhNjIxNTkwM2EyZDYwMGI3Njk5NDIwZGJhLi5hNDhiMzkx
Y2M3NmYzZTQ4NzQ3ZjRiMTIzYjZkODlhYjM0NDJjYWI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUwLDYg
KzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEV2ZW50U291cmNlOwogICAg
IGNsYXNzIEZpbGVSZWFkZXI7CiAgICAgY2xhc3MgSURCUmVxdWVzdDsKKyAgICBjbGFzcyBJREJU
cmFuc2FjdGlvbjsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwogICAg
IGNsYXNzIE5vdGlmaWNhdGlvbjsKQEAgLTEyNiw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAgICAgdmlydHVhbCBJREJS
ZXF1ZXN0KiB0b0lEQlJlcXVlc3QoKTsKKyAgICAgICAgdmlydHVhbCBJREJUcmFuc2FjdGlvbiog
dG9JREJUcmFuc2FjdGlvbigpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5o
CmluZGV4IDA4YjAzZDcwMjc4NTA0MDIzNzM4OGVlNWY5MjkxYzliMzQ1YzA0ZjIuLmI1ZjI2ZWZm
MWQyNTMyZTNhYjg3NDdiZGM4OGU2NTlmYWMwNTlkNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTczLDYgKzcz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgICAgIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5KCk7
CisgICAgICAgIGJvb2wgaGFzSURCRmFjdG9yeSgpIHsgcmV0dXJuIG1fZmFjdG9yeUJhY2tlbmQ7
IH0KICNlbmRpZgogCiAgICAgICAgIHZvaWQgYWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBl
cldvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmLApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0lEQkFib3J0RXZlbnQuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkFi
b3J0RXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMTY3MTA1OWZhNGYxNGUzODlhY2U3MTE0NDg5OTU3
MWY4NGYwY2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQWJvcnRFdmVu
dC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
REJBYm9ydEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitQYXNzUmVmUHRyPElEQkFib3J0RXZlbnQ+IElEQkFib3J0RXZlbnQ6OmNyZWF0ZSgp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBYm9ydEV2ZW50KCkpOworfQorCitJREJB
Ym9ydEV2ZW50OjpJREJBYm9ydEV2ZW50KCkKKyAgICA6IElEQkV2ZW50KGV2ZW50TmFtZXMoKS5h
Ym9ydEV2ZW50LCAwKQoreworfQorCitJREJBYm9ydEV2ZW50Ojp+SURCQWJvcnRFdmVudCgpCit7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCQWJvcnRFdmVudC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkFib3J0RXZl
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZGMyMjAyNDM5NmE4NTBlYzBkNTBlYmJlYTljNDdlMjAwMDUxMTNk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkFib3J0RXZlbnQuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJBYm9ydEV2ZW50X2gKKyNkZWZpbmUgSURCQWJvcnRF
dmVudF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkV2
ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBJREJBYm9ydEV2ZW50IDogcHVibGljIElEQkV2ZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJBYm9ydEV2ZW50PiBjcmVhdGUoKTsKKyAgICAvLyBGSVhNRTog
TmVlZCB0byBhbGxvdyBjcmVhdGlvbiBvZiB0aGVzZSBldmVudHMgZnJvbSBKUy4KKyAgICB2aXJ0
dWFsIH5JREJBYm9ydEV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJREJBYm9ydEV2ZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIElEQkFib3J0RXZlbnQo
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCQWJvcnRFdmVudF9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcAppbmRleCBmYTE4MDdjY2QzNTZhMTA2MmMyNjdhYjBiNTM0ZjY2NDcwNjcwZmQ1Li4w
NDJhNDEzMWNjNjI4MWUyZGVlNzEyYzZkYjY0OWM1ODkwMGE2NzY1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKQEAgLTc1LDcgKzc1LDggQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURC
RGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICAv
LyBjYW4gYmUgcXVldWVkIGFnYWluc3QgdGhlIHRyYW5zYWN0aW9uIGF0IGFueSBwb2ludC4gVGhl
eSB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBhcyBzb29uIGFzIHRoZQogICAgIC8vIGFwcHJvcHJpYXRl
IGxvY2tzIGhhdmUgYmVlbiBhY3F1aXJlZC4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBtX2JhY2tlbmQtPnRyYW5zYWN0aW9u
KHN0b3JlTmFtZXMsIG1vZGUsIHRpbWVvdXQpOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRyYW5zYWN0aW9u
QmFja2VuZC5yZWxlYXNlKCksIHRoaXMpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRyYW5zYWN0aW9uQmFj
a2VuZCwgdGhpcyk7CisgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFja3ModHJhbnNh
Y3Rpb24uZ2V0KCkpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAwOWI5ZGVlNjE1
YjUyNmNkZGVmZmZmOGE3MjVjNzdmODBhMWFkNTZjLi5jYmFlMGQxOGRmMzdjMWE1MDZkMDA4N2Yy
MDIxNjY1YzlmZGUwNzk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC0yOSwxNSArMjksMTcgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgog
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lv
bikKK0lEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yKQogICAgIDogbV9u
YW1lKG5hbWUpCiAgICAgLCBtX2Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKQogICAgICwgbV92ZXJz
aW9uKHZlcnNpb24pCisgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3Ip
CiB7CiB9CiAKQEAgLTgzLDExICs4NSw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElECiAgICAg
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKERPTVN0
cmluZ0xpc3QqLCB1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgbG9uZykKK1Bhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFu
c2FjdGlvbihET01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUs
IHVuc2lnbmVkIGxvbmcgdGltZW91dCkKIHsKLSAgICAvLyBGSVhNRTogQXNrIHRoZSB0cmFuc2Fj
dGlvbiBtYW5hZ2VyIGZvciBhIG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLgotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3RyYW5zYWN0
aW9uQ29vcmRpbmF0b3ItPmNyZWF0ZVRyYW5zYWN0aW9uKG9iamVjdFN0b3JlcywgbW9kZSwgdGlt
ZW91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IGY2ZmYwNTg3ZjkxMDJhOWYwMDA5Y2ZjNTc1NWM2ZGQz
MGU2OWExYTYuLjUxMzNjNWE1N2YyNzA1MTJhMDBhNTE1YWIxNzliNWJlYmI5ZmUzOWUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtMzUsMTEgKzM1LDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cjsKKwogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkZXNjcmlwdGlv
biwgdmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFj
a2VuZEltcGwobmFtZSwgZGVzY3JpcHRpb24sIHZlcnNpb24sIGNvb3JkaW5hdG9yKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIApAQCAtNTQsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJp
bmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRp
bWVvdXQpOwogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KTsKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yKik7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX2Rlc2Ny
aXB0aW9uOwpAQCAtNjIsNiArNjQsOCBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gPiBPYmplY3RT
dG9yZU1hcDsKICAgICBPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlczsKKworICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYWMxMmJmMTNjODhiZTNkNmY3OTY4M2RjN2E1MzJl
MmU1MmIyZjEzMS4uOWUzNTM2OTgxODNlNjBlYjJiZWVjMzEwYmM0ODI3OWY3YjlmNGQ5MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZTsKK2NsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOwogCiAvLyBUaGlzIGNsYXNz
IGlzIHNoYXJlZCBieSBJREJEYXRhYmFzZSAoYXN5bmMpIGFuZCBJREJEYXRhYmFzZVN5bmMgKHN5
bmMpLgogLy8gVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsIGFu
ZCBvcHRpb25hbGx5IG90aGVycyAoaW4gb3JkZXIgdG8gcHJveHkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggN2JkZDcwZDMwODE1NjgzNmJmZTdjZjJmYTZi
ZDBmMWJkOWUyOWUyYi4uODQ4YTkzMTY5NTc0OGQwZGFjZjZjMDczMDNiMWEzOWVjNjMxNGNjNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
I2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtNDQsNyArNDUsNyBAQCBQYXNzUmVmUHRy
PElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVhdGUoKQog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRmFjdG9yeUJhY2tlbmRJbXBsKTsKIH0KIAotSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZEltcGwoKQorSURCRmFjdG9yeUJh
Y2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZEltcGwoKSA6IG1fdHJhbnNhY3Rpb25Db29yZGlu
YXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKSkKIHsKIH0KIApAQCAtNTgs
NyArNTksNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sCiAgICAgSURCRGF0YWJhc2VCYWNrZW5k
TWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQobmFtZSk7CiAgICAg
aWYgKGl0ID09IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXaGF0IHNob3VsZCB0aGUgdmVyc2lvbiBiZT8gIFRoZSBzcGVjIGRvZXNuJ3QgZGVmaW5lIGl0
IHlldC4KLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y3JlYXRlKG5hbWUsIGRlc2NyaXB0aW9uLCAiIik7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZCA9
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBkZXNjcmlwdGlvbiwgIiIsIG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSk7CiAgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5k
TWFwLnNldChuYW1lLCBkYXRhYmFzZUJhY2tlbmQpOwogICAgIH0gZWxzZQogICAgICAgICBkYXRh
YmFzZUJhY2tlbmQgPSBpdC0+c2Vjb25kOwpAQCAtNjYsNiArNjcsMTIgQEAgdm9pZCBJREJGYWN0
b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5yZWxl
YXNlKCkpOwogfQogCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6YWJvcnRQZW5kaW5nVHJh
bnNhY3Rpb25zKGNvbnN0IFZlY3RvcjxpbnQ+JiBwZW5kaW5nSURzKQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0lEcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90cmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLT5hYm9ydChwZW5kaW5nSURzLmF0KGkpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggYmJjYzUzN2M3OTk0ZjFlNjk2
ZjUxMjgwMTUwOTg4NmM5Zjg1NTBhNi4uZjA1NzQ0YTEwM2Y2NzU3NWE0N2JkODZiMGMzMjY5NzFh
ODFmM2M5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAtMzcs
NiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdMaXN0Owor
Y2xhc3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIAogY2xhc3MgSURCRmFjdG9yeUJhY2tl
bmRJbXBsIDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKQEAg
LTQ0LDEyICs0NSwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJ
bXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVuZGlu
Z1RyYW5zYWN0aW9ucyhjb25zdCBWZWN0b3I8aW50PiYgcGVuZGluZ0lEcyk7CiAKIHByaXZhdGU6
CiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbXBsKCk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiA+IElEQkRhdGFiYXNlQmFj
a2VuZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXAgbV9kYXRhYmFzZUJhY2tlbmRNYXA7
CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25Db29y
ZGluYXRvcjsKIAogICAgIC8vIFdlIG9ubHkgY3JlYXRlIG9uZSBpbnN0YW5jZSBvZiB0aGlzIGNs
YXNzIGF0IGEgdGltZS4KICAgICBzdGF0aWMgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBpZGJGYWN0
b3J5QmFja2VuZEltcGw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZS5oCmluZGV4IGJhMTgwOTg2YWZlZWY2YWEyODI4YmE3MTYxNTZjMGQ1MTc5ZjJjYzguLmMw
NTJiYzI5MDJmMWI0ZGVkMDdkYWU2OTc5MjY5Yjg2ZTBhYzQ2YjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1l
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMoY29uc3Qg
VmVjdG9yPGludD4mIGlkcykgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3Bw
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ5M2I1YzZjZDhjOTkxNDI1MmM1ZGFjYzE2MjE4YmViMWI4MTgwZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5j
cHAKQEAgLTAsMCArMSwzMSBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlBl
bmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZlY3RvcjxpbnQ+IElEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3I6Om1faWRzOworCit2b2lkIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6
OmFkZFBlbmRpbmdUcmFuc2FjdGlvbihpbnQgaWQpCit7CisgICAgbV9pZHMuYXBwZW5kKGlkKTsK
K30KKwordm9pZCBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpyZW1vdmVQZW5kaW5nVHJh
bnNhY3Rpb24oaW50IGlkKQoreworICAgIG1faWRzLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQgSURC
UGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6Y2xlYXJQZW5kaW5nVHJhbnNhY3Rpb25zKCkKK3sK
KyAgICBtX2lkcy5jbGVhcigpOworfQorCitjb25zdCBWZWN0b3I8aW50PiYgSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvcjo6cGVuZGluZ1RyYW5zYWN0aW9ucygpCit7CisgICAgcmV0dXJuIG1f
aWRzOworfQorCit9OworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCBiL1dl
YkNvcmUvc3RvcmFnZS9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzJiM2Y3Yzg2M2RlYTM0NTY0N2I2MjMzZWZlZmIwNTg2MzNjYjIzNQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvc3RvcmFnZS9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcl9o
CisjZGVmaW5lIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3JfaAorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3Mga2Vl
cHMgdHJhY2sgb2YgdGhlIHRyYW5zYWN0aW9ucyBjcmVhdGVkIGR1cmluZyB0aGUgY3VycmVudAor
Ly8gSmF2YXNjcmlwdCBleGVjdXRpb24gY29udGV4dC4gQSB0cmFuc2FjdGlvbiBpcyAncGVuZGlu
ZycgaWYgbm8gb3BlcmF0aW9uCisvLyBoYXMgYmVlbiBpc3N1ZWQgZm9yIGl0IChlLmcuIGFuIElE
Qk9iamVjdFN0b3JlOjpwdXQoKSBvciBzaW1pbGFyKS4KKy8vIEFsbCBwZW5kaW5nIHRyYW5zYWN0
aW9ucyBhcmUgYWJvcnRlZCBhcyBzb29uIGFzIGV4ZWN1dGlvbiByZXR1cm5zIGZyb20KKy8vIHRo
ZSBzY3JpcHQgZW5naW5lLgorLy8KKy8vIEZJWE1FOiBtb3ZlIHRoZSB2ZWN0b3Igb2YgdHJhbnNh
Y3Rpb24gSURzIHRvIFRMUy4gS2VlcGluZyBpdCBzdGF0aWMKKy8vIHdpbGwgbm90IHdvcmsgb25j
ZSB3ZSBhZGQgc3VwcG9ydCBmb3Igd29ya2Vycy4gQW5vdGhlciBwb3NzaWJsZQorLy8gc29sdXRp
b24gaXMgdG8ga2VlcCB0aGUgdmVjdG9yIGluIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0Lgor
Y2xhc3MgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYWRkUGVuZGluZ1RyYW5zYWN0aW9uKGludCBpZCk7
CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKGludCBpZCk7CisgICAg
c3RhdGljIHZvaWQgY2xlYXJQZW5kaW5nVHJhbnNhY3Rpb25zKCk7CisgICAgc3RhdGljIGNvbnN0
IFZlY3RvcjxpbnQ+JiBwZW5kaW5nVHJhbnNhY3Rpb25zKCk7Citwcml2YXRlOgorICAgIElEQlBl
bmRpbmdUcmFuc2FjdGlvbk1vbml0b3IoKTsKKworICAgIHN0YXRpYyBWZWN0b3I8aW50PiBtX2lk
czsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDFiYzA1OWEzNzdmMGE3ZDBlMGRj
NzlhNzJhZDBkOTk3ZDEzYzI0MzcuLmU4ZDYzMTIyMTU5NzRhMTk1ZDU4M2E3YTgxODZiY2UwYWZj
Y2I5YjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNSw5ICs1LDExIEBACiAK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVk
ZSAiSURCQWJvcnRFdmVudC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
Niw3ICsxOCwxMCBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcgogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fZGF0
YWJhc2UoZGIpCisgICAgLCBtX3N0b3BwZWQoZmFsc2UpCisgICAgLCBtX3RpbWVyKHRoaXMsICZJ
REJUcmFuc2FjdGlvbjo6dGltZXJGaXJlZCkKIHsKKyAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yOjphZGRQZW5kaW5nVHJhbnNhY3Rpb24obV9iYWNrZW5kLT5pZCgpKTsKIH0KIAogSURC
VHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbigpCkBAIC01MCw2ICs1NSwyMiBAQCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKK3sKKyAgICBpZiAoIW1f
c3RvcHBlZCkgeworICAgICAgICBtX3NlbGZSZWYgPSB0aGlzOworICAgICAgICBtX3N0b3BwZWQg
PSB0cnVlOworICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9CisgICAgLy8g
UmVsZWFzZSB0aGUgYmFja2VuZC4KKyAgICBtX2JhY2tlbmQuY2xlYXIoKTsKK30KKworaW50IElE
QlRyYW5zYWN0aW9uOjppZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmFja2VuZC0+aWQoKTsK
K30KKwogYm9vbCBJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCgpIGNvbnN0CiB7CiAgICAgLy8g
V2UgbWF5IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2FjdGlvbiBzbyB3ZSBjYW5ub3Qgc3Vz
cGVuZCBvdXIgb2JqZWN0LgpAQCAtNTcsNiArNzgsMTUgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6
Y2FuU3VzcGVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIElEQlRyYW5z
YWN0aW9uOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fc3RvcHBlZCkgeworICAgICAgICAvLyBUaGUg
ZG9jdW1lbnQgaXMgZ2V0dGluZyBkZXRhY2hlZC4gQWJvcnQhCisgICAgICAgIG1fc3RvcHBlZCA9
IHRydWU7CisgICAgICAgIG1fYmFja2VuZC0+YWJvcnQoKTsKKyAgICB9Cit9CisKIEV2ZW50VGFy
Z2V0RGF0YSogSURCVHJhbnNhY3Rpb246OmV2ZW50VGFyZ2V0RGF0YSgpCiB7CiAgICAgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsKQEAgLTY3LDYgKzk3LDE2IEBAIEV2ZW50VGFyZ2V0RGF0YSog
SURCVHJhbnNhY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAgICAgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsKIH0KIAordm9pZCBJREJUcmFuc2FjdGlvbjo6dGltZXJGaXJlZChUaW1l
cjxJREJUcmFuc2FjdGlvbj4qIHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VSVChtX3NlbGZSZWYp
OworCisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBzZWxmUmVmID0gbV9zZWxmUmVmLnJlbGVh
c2UoKTsKKyAgICBSZWZQdHI8SURCQWJvcnRFdmVudD4gYWJvcnRFdmVudCA9IElEQkFib3J0RXZl
bnQ6OmNyZWF0ZSgpOworICAgIGRpc3BhdGNoRXZlbnQoYWJvcnRFdmVudCk7IC8vIEZJWE1FOiBj
cmVhdGUgdGhlIGNvcnJlY3QgZXZlbnQKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMmUzMTY3YzY4Mzhk
N2YwNzFiZTBmZGQyYmJhMDUxODE1YjYwYzI2Ni4uOGVmZDhkZDI0NzRlZDg4MjFiZjNiZDVjODNj
OTVkYWExZDQ0OTA0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTM0LDEzICszNCwx
NSBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQk9iamVj
dFN0b3JlOwogCi1jbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBFdmVudFRhcmdldCwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcywgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSogZGIpCiAgICAg
eyAKQEAgLTYzLDEyICs2NSwxOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihjb21wbGV0ZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih0aW1lb3V0KTsKIAorICAgIC8vIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzCisgICAgdmlydHVh
bCB2b2lkIG9uQWJvcnQoKTsKKyAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0OwogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBJREJUcmFuc2FjdGlvbiogdG9JREJUcmFuc2FjdGlvbigp
IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0
b3AoKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+Ojpy
ZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz46OmRlcmVm
OwogCiBwcml2YXRlOgogICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIElEQkRhdGFiYXNl
Kik7CkBAIC03OSw5ICs4OCwxNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRE
YXRhKiBldmVudFRhcmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKKyAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8SURCVHJh
bnNhY3Rpb24+Kik7CisKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAg
IFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKworICAgIGJvb2wgbV9zdG9wcGVkOwor
ICAgIFRpbWVyPElEQlRyYW5zYWN0aW9uPiBtX3RpbWVyOworICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gbV9zZWxmUmVmOyAvLyBUaGlzIGlzIHNldCB0byB1cyBpZmYgdGhlcmUncyBhbiBldmVu
dCBwZW5kaW5nLgorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggZGZmMmJkN2Y5
NDNkZWQ4NDk0NDQ5NGJmZjU2NWQxNmI0ODk5MTVkNC4uMjZkMzk0NTMxZmI4NDRjMmNjNDI1MGY3
YjEzZDRiNDk1MGM3OTg1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CitjbGFzcyBJREJUcmFu
c2FjdGlvbkNhbGxiYWNrczsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOwogCiAvLyBUaGlzIGNsYXNz
IGlzIHNoYXJlZCBieSBJREJUcmFuc2FjdGlvbiAoYXN5bmMpIGFuZCBJREJUcmFuc2FjdGlvblN5
bmMgKHN5bmMpLgpAQCAtNTIsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgU1FMaXRlRGF0YWJh
c2UqIHNxbGl0ZURhdGFiYXNlKCkgPSAwOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3Mq
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkNhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZWRkODlmN2I0ZjRjNjVhNjZlOTk3
MGY1NDczZjhjODQxMzIxMGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb25DYWxsYmFja3MuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFu
c2FjdGlvbkNhbGxiYWNrc19oCisjZGVmaW5lIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzX2gKKwor
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVk
PElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURCVHJh
bnNhY3Rpb25DYWxsYmFja3MoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KCkgPSAw
OworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3QgPSAwOworICAgIC8vIEZJWE1FOiBhZGQgdGhl
IHJlc3QKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisKKyNlbmRpZiAv
LyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM3NDQyOTNjNDA5Y2YwZmIyYTI3ZjFj
ZTU3YWU0MTAzODNmMGNjOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMCwwICsxLDExNSBAQAorI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNp
bmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVh
dGUoRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNp
Z25lZCBsb25nIHRpbWVvdXQsIGludCBpZCk7CisgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCgpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJvcnQoKTsKKyAgICB2aXJ0dWFsIFNRTGl0ZURhdGFiYXNlKiBzcWxpdGVE
YXRhYmFzZSgpOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOworcHJpdmF0ZToKKyAgICBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlcywgdW5z
aWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0LCBpbnQgaWQpOworCisgICAg
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IG1fb2JqZWN0U3RvcmVOYW1lczsKKyAgICB1bnNpZ25lZCBz
aG9ydCBtX21vZGU7CisgICAgdW5zaWduZWQgbG9uZyBtX3RpbWVvdXQ7CisgICAgaW50IG1faWQ7
CisgICAgYm9vbCBtX2Fib3J0ZWQ7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
PiBtX2NhbGxiYWNrczsKK307CisKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoRE9NU3RyaW5nTGlzdCog
b2JqZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQs
IGludCBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwob2JqZWN0U3RvcmVzLCBtb2RlLCB0aW1lb3V0LCBpZCkpOworfQorCitJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKERPTVN0cmluZ0xpc3Qq
IG9iamVjdFN0b3JlcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0
LCBpbnQgaWQpCisgICAgOiBtX29iamVjdFN0b3JlTmFtZXMob2JqZWN0U3RvcmVzKQorICAgICwg
bV9tb2RlKG1vZGUpCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkKKyAgICAsIG1faWQoaWQpCisg
ICAgLCBtX2Fib3J0ZWQoZmFsc2UpCit7Cit9CisKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIHNob3J0
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiAw
OworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KQoreworfQorCit2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KCkKK3sKKyAgICBtX2Fib3J0ZWQgPSB0cnVlOwor
ICAgIGlmIChtX2NhbGxiYWNrcykKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoKTsKK30K
KworU1FMaXRlRGF0YWJhc2UqIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNxbGl0ZURhdGFi
YXNlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50IElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZDsKK30KKwordm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNh
bGxiYWNrcykKK3sKKyAgICBtX2NhbGxiYWNrcyA9IGNhbGxiYWNrczsKK30KKworCitJREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgOiBtX25leHRJ
RCgwKQoreworfQorCitJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjp+SURCVHJhbnNhY3Rpb25D
b29yZGluYXRvcigpCit7Cit9CisKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGVUcmFuc2FjdGlvbihET01T
dHJpbmdMaXN0KiBvYmplY3RTdG9yZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxv
bmcgdGltZW91dCkKK3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RT
dG9yZXMsIG1vZGUsIHRpbWVvdXQsICsrbV9uZXh0SUQpOworICAgIG1fdHJhbnNhY3Rpb25RdWV1
ZS5hZGQodHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIG1faWRNYXAuYWRkKG1fbmV4dElELCB0cmFu
c2FjdGlvbik7CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKK30KKwordm9pZCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphYm9ydChpbnQgaWQpCit7CisgICAgQVNTRVJUKG1f
aWRNYXAuY29udGFpbnMoaWQpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1faWRNYXAuZ2V0KGlkKTsKKyAgICBBU1NFUlQodHJhbnNh
Y3Rpb24pOworICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5yZW1vdmUodHJhbnNhY3Rpb24uZ2V0KCkp
OworICAgIG1faWRNYXAucmVtb3ZlKGlkKTsKKyAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKKyAg
ICAvLyBGSVhNRTogdGhpcyB3aWxsIGNoYW5nZSBvbmNlIHdlIGhhdmUgdHJhbnNhY3Rpb25zIGFj
dHVhbGx5IHJ1bm5pbmcuCit9CisKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM1OWUzZjViNDY3NzQ3NzI5NGZjMGFmMjZkOTIxODRhM2JjMTQwMTkKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCkBA
IC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Jf
aAorI2RlZmluZSBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yX2gKKworI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsKKworLy8gVGhpcyBjbGFzcyBtYW5hZ2VzIHRy
YW5zYWN0aW9ucyBhcyBmb2xsb3dzLiBSZXF1ZXN0cyBmb3IgbmV3IHRyYW5zYWN0aW9ucyBhcmUK
Ky8vIGFsd2F5cyBzYXRpc2ZpZWQgYW5kIHRoZSBuZXcgdHJhbnNhY3Rpb24gaXMgcGxhY2VkIGlu
IGEgcXVldWUuCisvLyBUcmFuc2FjdGlvbnMgYXJlIG5vdCBhY3R1YWxseSBzdGFydGVkIHVudGls
IHRoZSBmaXJzdCBvcGVyYXRpb24gaXMgaXNzdWVkLgorLy8gRWFjaCB0cmFuc2FjdGlvbiBleGVj
dXRlcyBpbiBhIHNlcGFyYXRlIHRocmVhZCBhbmQgaXMgY29tbWl0dGVkIGF1dG9tYXRpY2FsbHkK
Ky8vIHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgb3BlcmF0aW9ucyBpc3N1ZWQgaW4gaXRzIGNvbnRl
eHQuCisvLyBXaGVuIHN0YXJ0aW5nLCBhIHRyYW5zYWN0aW9uIHdpbGwgYXR0ZW1wdCB0byBsb2Nr
IGFsbCB0aGUgb2JqZWN0IHN0b3JlcyBpbiBpdHMKKy8vIHNjb3BlLiBJZiB0aGlzIGRvZXMgbm90
IGhhcHBlbiB3aXRoaW4gYSBnaXZlbiB0aW1lb3V0LCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgor
Ly8gVGhlIENvb3JkaW5hdG9yIG1haW50YWlucyBhIHBvb2wgb2YgdGhyZWFkcy4gSWYgdGhlcmUg
YXJlIG5vIHRocmVhZHMgYXZhaWxhYmxlCisvLyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBpbiB0aGUg
cXVldWUgd2lsbCBoYXZlIHRvIHdhaXQgdW50aWwgYSB0aHJlYWQgYmVjb21lcworLy8gYXZhaWxh
YmxlLgorY2xhc3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciA6IHB1YmxpYyBSZWZDb3VudGVk
PElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigpKTsgfQorICAgIHZpcnR1YWwgfklEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKKworICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBvYmplY3RT
dG9yZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CisgICAg
dm9pZCBhYm9ydChpbnQgdHJhbnNhY3Rpb25JZCk7Citwcml2YXRlOgorICAgIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKTsKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqPiBtX3RyYW5zYWN0aW9uUXVldWU7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gPiBJZFRvUXVldWVQb3NpdGlv
bk1hcDsKKyAgICBJZFRvUXVldWVQb3NpdGlvbk1hcCBtX2lkTWFwOworICAgIGludCBtX25leHRJ
RDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcl9oCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBjNDJlNjNiMzUzMTJiODVjNzVkNjQ3MTBlYjAyYTg4NmFjZTE5Njk4Li5l
MGEyZTdiNTU5MzJhYjJhNmQzMWJlM2QxZjYxYjkyYjAzNzZjYjQ1IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3NSBAQAorMjAxMC0wOC0xNyAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0luZGV4ZWREQl0gQWJvcnQgaWRsZSBJREJUcmFuc2FjdGlvbnMgd2hlbiB0aGUgSlMgY29udGV4
dCB0aGV5IHdlcmUgY3JlYXRlZCBpbiBmaW5pc2hlcyBleGVjdXRpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDEwMQorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
SURCRmFjdG9yeS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5OjphYm9ydFBlbmRp
bmdUcmFuc2FjdGlvbnMpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246On5XZWJJREJUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uOjptb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCVHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
VHJhbnNhY3Rpb246OmlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246OnNl
dENhbGxiYWNrcyk6CisgICAgICAgICogcHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrczo6
fldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJh
bnNhY3Rpb25DYWxsYmFja3M6Om9uQWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFu
c2FjdGlvbkNhbGxiYWNrczo6aWQpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUHJveHk6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjphYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAg
ICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL0lEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6fklEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eTo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHk6OnNjaGVkdWxlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eTo6c3FsaXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHk6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZFByb3h5OjpzZXRDYWxsYmFja3MpOgorICAgICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxs
YmFja3NQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzUHJveHk6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6fklEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94
eTo6b25BYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1By
b3h5OjppZCk6CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaDog
QWRkZWQuCisgICAgICAgICogc3JjL1dlYkRPTVN0cmluZ0xpc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJET01TdHJpbmdMaXN0OjpsZW5ndGgpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICog
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9y
eUltcGw6OmFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyk6CisgICAgICAgICogc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1w
bC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NJbXBsOjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsOjp+V2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
SW1wbDo6b25BYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrc0ltcGw6OmlkKToKKyAgICAgICAgKiBzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJ
bXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBsOjpXZWJJREJUcmFu
c2FjdGlvbkltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkltcGw6On5X
ZWJJREJUcmFuc2FjdGlvbkltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlv
bkltcGw6Om1vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkltcGw6Om9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBsOjphYm9y
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uSW1wbDo6aWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkltcGw6OnNldENhbGxiYWNrcyk6CisgICAgICAg
ICogc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
KToKKwogMjAxMC0wOC0wOSAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCAwNmZkODJjYmI5YmU5MDAxY2M2N2ZjODQ3MDRhMDZiNjMzOThkOWMzLi5hYzM2MzY4Njgx
MzVkMzZlYjM2MzJlZGIzYTQ3MjY0YzIzY2M0ZjNkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTgyLDYg
KzE4Miw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJJbmRleC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYklEQktleS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYklEQk9iamVjdFN0b3JlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCVHJh
bnNhY3Rpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0RWxlbWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0RXZlbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJLaXQuaCcsCkBAIC0zMjYsNiArMzI4LDEwIEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0lE
Qk9iamVjdFN0b3JlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQk9iamVjdFN0
b3JlUHJveHkuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHkuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAnLApAQCAtNDIyLDYgKzQyOCwx
MCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCS2V5UmFuZ2UuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCVHJhbnNhY3Rpb25JbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJUcmFu
c2FjdGlvbkltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc0ltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkltYWdlQ0cuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViSW1hZ2VTa2lhLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRh
dGFiYXNlLmgKaW5kZXggYjBkNjA4NmFlYjc5ZjhkYzZlZTVlODY4YzkzNTFlZjY0ZjYxYTczNy4u
NmU0OTRjZTgyN2UxYzMwNGRlMzdhMzMyN2FiZjBkMDk5MGFlNjk0MyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViSURCQ2FsbGJhY2tzOwogY2xhc3MgV2Vi
SURCT2JqZWN0U3RvcmU7CitjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIAogLy8gU2VlIGNvbW1l
bnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgb2YgdGhl
c2UgY2xhc3Nlcy4KIGNsYXNzIFdlYklEQkRhdGFiYXNlIHsKQEAgLTc0LDYgKzc1LDEzIEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCVHJhbnNhY3Rpb24gdG8g
dGhlIGNhbGxlci4KKyAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihj
b25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWdu
ZWQgbG9uZyB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5Lmgg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAppbmRleCA1ZWI2ZjU4Mzdh
ZTY4Zjg1NGE0OGVjMjcyOTk1MTczMGM1YTk3MDE2Li4zMDNhNzA1MzRiMDQ5N2E4NzUwNTQyMjMy
MDMyYjY0OTk0ZDE3YWU4IDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkZhY3RvcnkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApA
QCAtMzQsMTIgKzM0LDEyIEBACiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRl
ICJXZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwog
Y2xhc3MgV2ViSURCRGF0YWJhc2U7Ci1jbGFzcyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKIAogLy8gVGhlIGVudHJ5IHBvaW50IGludG8gdGhlIEluZGV4ZWREYXRhYmFzZSBB
UEkuICBUaGVzZSBjbGFzc2VzIG1hdGNoIHRoZWlyIEZvbyBhbmQKQEAgLTYzLDYgKzYzLDExIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIG9wZW4obmFtZSwgZGVzY3JpcHRpb24sIGNhbGxiYWNr
cywgb3JpZ2luLCB3ZWJGcmFtZSk7CiAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVu
ZGluZ1RyYW5zYWN0aW9ucyhjb25zdCBXZWJWZWN0b3I8aW50PiYgcGVuZGluZ0lEcykKKyAgICB7
CisgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QlRyYW5zYWN0aW9uLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2FkMzhhYTdkYjIyZDU2NmIxMzcxOWYzNmQ0NDZiM2Q1YjUyYTFkNQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rp
b24uaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJUcmFuc2FjdGlvbl9o
CisjZGVmaW5lIFdlYklEQlRyYW5zYWN0aW9uX2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CitjbGFzcyBX
ZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsKKworLy8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhl
ZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlc2UgY2xhc3Nlcy4KK2Ns
YXNzIFdlYklEQlRyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJREJUcmFu
c2FjdGlvbigpIHsgfQorCisgICAgdmlydHVhbCBpbnQgbW9kZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKQorICAg
IHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICB2aXJ0
dWFsIGludCBpZCgpIGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2Fs
bGJhY2tzKFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikKKyAgICB7CisgICAgICAgIFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYklEQlRyYW5zYWN0aW9uX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjky
MjE3OWQzMDQyNDViOWI1OTEzNTAyY2VhODYxZTUyOTg0YzE4Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzX2gK
KyNkZWZpbmUgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NfaAorCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydCgpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCBpbnQgaWQoKSBjb25zdAorICAgIHsgCisgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc19oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
UHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAppbmRl
eCBkMTFkMTgyYTZjZmIwOTA0N2MyZGQ1YTQ5MTEyNzdjNmVkYTk0ZDBiLi5jNTNiNWFiYTdjYzQz
ZGRiY2JkOTQzNzE4YzJmM2YzNDA3OGFjMDFmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VQcm94eS5jcHAKQEAgLTI5LDEyICsyOSwxNCBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZVByb3h5LmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCisj
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCIKKyNpbmNsdWRlICJXZWJET01T
dHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURC
Q2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
V2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCisj
aW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogCkBAIC05NCw5ICs5NiwxMSBAQCB2b2lkIElEQkRhdGFiYXNlUHJveHk6OnJlbW92ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYgogCiBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VQcm94eTo6
dHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9k
ZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KQogewotICAgIC8vIEZJWE1FOiBwbHVtYiB0byB0aGUg
YnJvd3NlciBwcm9jZXNzLCBldGMgZXRjLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiAwOworICAgIFdlYktpdDo6V2ViRE9NU3RyaW5nTGlzdCBuYW1lcyhzdG9yZU5hbWVz
KTsKKyAgICBXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fd2ViSURC
RGF0YWJhc2UtPnRyYW5zYWN0aW9uKG5hbWVzLCBtb2RlLCB0aW1lb3V0KTsKKyAgICBpZiAoIXRy
YW5zYWN0aW9uKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHk6OmNyZWF0ZSh0cmFuc2FjdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IDQ0Y2JiNDBkNjlmNDJmNjM0ZDZkMDdhOTI3Y2NmNDBiN2MzMGVlYzUuLjQ2ZDJmZTQ3
MDkwOGU1Mzg4ZmViZGU2MzUzYjI3OWIxZDYwNDg2MmMgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIldlYklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJL
aXRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogCkBAIC02NCw2ICs2NSwxNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJv
eHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLAog
ICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgbmV3IFdlYklEQkNh
bGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKGNvbnN0IFZlY3Rv
cjxpbnQ+JiBwZW5kaW5nSURzKQoreworICAgIGlmICghcGVuZGluZ0lEcy5zaXplKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBXZWJLaXQ6OldlYlZlY3RvcjxpbnQ+IGlkcyhwZW5kaW5nSURzLnNp
emUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nSURzLnNpemUoKTsgKytp
KQorICAgICAgICBpZHNbaV0gPSBwZW5kaW5nSURzLmF0KGkpOworCisgICAgbV93ZWJJREJGYWN0
b3J5LT5hYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMoaWRzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCmluZGV4IDk2OWE5ZDdjMzhhZGQz
MzI1NmFlOWVkYjMxZDQyODI5MjI4ZWI5NjYuLjQ5Y2E3ODhiMWUzNDRjNTE3ZGEwMjAwYWJlZjAy
MzA4ZDkyNzZkNDkgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gZGF0YWJhc2VzKHZvaWQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqKTsKLQorICAg
IHZpcnR1YWwgdm9pZCBhYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMoY29uc3QgVmVjdG9yPGludD4m
IHBlbmRpbmdJRHMpOwogcHJpdmF0ZToKICAgICBJREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODBmNDllNTVhOGE4NDM5OThkNzMyNjQwMTI1OTc3MjdmMWFhZjU3NAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCIKKworI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlUHJveHkuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5o
IgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJJREJPYmpl
Y3RTdG9yZS5oIgorI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
SURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmNyZWF0ZShQYXNz
T3duUHRyPFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkodHJhbnNhY3Rpb24p
KTsKK30KKworSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24p
CisgICAgOiBtX3dlYklEQlRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQoreworfQorCitJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eTo6fklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KCkKK3sKK30K
KworUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5OjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX3dlYklEQlRyYW5zYWN0
aW9uLT5vYmplY3RTdG9yZShuYW1lKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlKG9iamVjdFN0
b3JlKTsKK30KKwordW5zaWduZWQgc2hvcnQgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6Om1v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYklEQlRyYW5zYWN0aW9uLT5tb2RlKCk7Cit9
CisKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmFib3J0KCkKK3sKKyAgICBtX3dl
YklEQlRyYW5zYWN0aW9uLT5hYm9ydCgpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5OjpzY2hlZHVsZVRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworU1FMaXRlRGF0YWJhc2Uq
IElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpzcWxpdGVEYXRhYmFzZSgpCit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eTo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYklEQlRyYW5zYWN0
aW9uLT5pZCgpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpzZXRDYWxs
YmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcykKK3sKKyAgICBtX3dlYklE
QlRyYW5zYWN0aW9uLT5zZXRDYWxsYmFja3MobmV3IFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM2ZTZkM2U4NzE5NzdiNzJh
YWMwNWI2ODg5MzUyZWJjYjlkNjY0ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eV9oCisjZGVmaW5lIElEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5X2gKKworI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJL
aXQgeyBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsgfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5IDogcHVibGljIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklE
QlRyYW5zYWN0aW9uPik7CisgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHko
KTsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IG9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBzaG9ydCBtb2RlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CisgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KTsKKyAgICB2aXJ0dWFsIFNRTGl0ZURhdGFiYXNlKiBzcWxpdGVEYXRhYmFzZSgpOwor
ICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNr
cyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOworCitwcml2YXRlOgorICAgIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4pOwor
CisgICAgT3duUHRyPFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb24+IG1fd2ViSURCVHJhbnNhY3Rp
b247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8g
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU3ZDQ0ZjE5
ZDI1NjNjODQyM2NlNjEwMjNhODgxNDBlNmY4M2E3NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5LmgiCisKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5o
IgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5PiBJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJU
cmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KGNhbGxiYWNrcykpOworfQorCitJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc1Byb3h5OjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8
V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIDogbV9j
YWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
Ojp+SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSgpCit7Cit9CisKK3ZvaWQgSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3NQcm94eTo6b25BYm9ydCgpCit7CisgICAgbV9jYWxsYmFja3MtPm9uQWJv
cnQoKTsKKyAgICBtX2NhbGxiYWNrcy5jbGVhcigpOworfQorCitpbnQgSURCVHJhbnNhY3Rpb25D
YWxsYmFja3NQcm94eTo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NhbGxiYWNrcy0+aWQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzUHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25D
YWxsYmFja3NQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NTZjZmMyY2ZjMTBhYjU0OTRlM2JiNTMwYTky
OTA0Mjc4OTcwZGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJU
cmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5X2gKKyNkZWZpbmUgSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NQcm94eV9oCisKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
IDogcHVibGljIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5PiBjcmVhdGUoUGFzc093blB0
cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB+SURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSgpOworCisgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQo
KTsKKyAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIElEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzPik7CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisKKyNlbmRpZiAvLyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5X2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NU3RyaW5nTGlzdC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRPTVN0cmluZ0xpc3QuY3BwCmluZGV4IDRiZTdmYWJhMjhmNThiN2Q0ZjIw
Y2M3ZGFkZjQ1ZDYwNDExNjY2NjEuLmRjODIzMzEzODRjYzZmZGUzZjBiMGYxMjU0MzIyNmRjNzQw
NzVmNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NU3RyaW5nTGlzdC5j
cHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01TdHJpbmdMaXN0LmNwcApAQCAtNjAs
NiArNjAsOCBAQCB2b2lkIFdlYkRPTVN0cmluZ0xpc3Q6OmFwcGVuZChjb25zdCBXZWJTdHJpbmcm
IHN0cmluZykKIAogdW5zaWduZWQgV2ViRE9NU3RyaW5nTGlzdDo6bGVuZ3RoKCkgY29uc3QKIHsK
KyAgICBpZiAobV9wcml2YXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gbV9wcml2YXRlLT5sZW5ndGgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCmluZGV4IDhjOGUzMGEyNDQyNWY5NGFmNTM3YThlMjA1ZDY4OWFiZjA1
MzU4MzYuLmJkMzYwMGYxZDY3OThkMzZhZGUzMDgwYWMwMzUyNzMyODc2NWIwZmUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTI5LDggKzI5LDEwIEBA
CiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCisjaW5jbHVkZSAiV2Vi
SURCVHJhbnNhY3Rpb25JbXBsLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApA
QCAtODUsNiArODcsMTUgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnJlbW92ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2sKICAgICBtX2RhdGFiYXNl
QmFja2VuZC0+cmVtb3ZlT2JqZWN0U3RvcmUobmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShjYWxsYmFja3MpKTsKIH0KIAorV2ViSURCVHJhbnNhY3Rpb24qIFdlYklEQkRhdGFiYXNlSW1w
bDo6dHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNo
b3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKK3sKKyAgICBSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gbmFtZUxpc3QgPSBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KG5hbWVzKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1fZGF0
YWJhc2VCYWNrZW5kLT50cmFuc2FjdGlvbihuYW1lTGlzdC5nZXQoKSwgbW9kZSwgdGltZW91dCk7
CisgICAgaWYgKCF0cmFuc2FjdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5l
dyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDQ2YTY2MDk2NGNiY2JjMmI3NGQ1
NjM2YTgzMjU4ZDFjZTIyZmY5N2MuLjlhZTc0ZTBjOGNiMzc5ZWZhODFlNTIxOWZjYjY2NWRjNDU0
NGQ0ZjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtMzYs
NiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTsgfQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklEQk9iamVjdFN0b3Jl
OworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKIC8vIFNlZSBjb21tZW50IGluIFdlYkluZGV4
ZWREYXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNsYXNzZXMuCiBjbGFz
cyBXZWJJREJEYXRhYmFzZUltcGwgOiBwdWJsaWMgV2ViSURCRGF0YWJhc2UgewpAQCAtNTEsNiAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKTsKICAgICB2aXJ0dWFsIFdlYklEQk9i
amVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKTsKKyAgICB2aXJ0dWFsIFdl
YklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1l
cywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKIAogcHJpdmF0
ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IG1fZGF0YWJhc2VCYWNrZW5kOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJGYWN0b3J5SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBs
LmNwcAppbmRleCA1YWM4OWY0MGY4M2QxMmRjYzllNGYzN2U5MTdkYTM3ZjcxYWE4MWYzLi41NjRi
ZTM2NDljNzYwNzMyOWUwNWI0NjY4YWFlZTJhZjNiMjhhZTgxIDEwMDc1NQotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAtNjMsNiArNjMsMTUgQEAgdm9pZCBXZWJJREJG
YWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
ZGVzY3JpcHRpb24KICAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIG9yaWdpbiwgMCk7CiB9
CiAKK3ZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyhjb25z
dCBXZWJWZWN0b3I8aW50PiYgcGVuZGluZ0lEcykKK3sKKyAgICBXVEY6OlZlY3RvcjxpbnQ+IGlk
cyhwZW5kaW5nSURzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5n
SURzLnNpemUoKTsgKytpKQorICAgICAgICBpZHNbaV0gPSBwZW5kaW5nSURzW2ldOworCisgICAg
bV9pZGJGYWN0b3J5QmFja2VuZC0+YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKGlkcyk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKaW5kZXggYzllYzlhMzJl
ZWZhODExYjcyOWI4NDUzZjZhOGYzM2M0NDk0YjJhNS4uNTdhNTgwYWUzYmNmNTA4NDVmZDZkOWI1
ZDgxNzc1ZDcyZjVlZDYwMCAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJG
YWN0b3J5SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwu
aApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCRmFjdG9yeUlt
cGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2Vj
dXJpdHlPcmlnaW4mLCBXZWJGcmFtZSopOwotCisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVuZGlu
Z1RyYW5zYWN0aW9ucyhjb25zdCBXZWJWZWN0b3I8aW50PiYgcGVuZGluZ0lEcyk7CiBwcml2YXRl
OgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBt
X2lkYkZhY3RvcnlCYWNrZW5kOwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzRlODE4NGQ4
YTBhNWNkY2JmYjdjN2RmZWNhZWJhMTY0ZWQ1YTQwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuY3BwCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSURCVHJh
bnNhY3Rpb25DYWxsYmFja3NJbXBsLmgiCisKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsOjpXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQorICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitXZWJJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrc0ltcGw6On5XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwoKQorewor
fQorCit2b2lkIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbDo6b25BYm9ydCgpCit7Cisg
ICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoKTsKK30KKworaW50IFdlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzSW1wbDo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NhbGxiYWNrcy0+aWQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGVhMTBiZmJkYjVjZjFmNGI1ODhiYTU3OTZm
NTI3ODJhZWExM2JhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGxfaAorI2RlZmluZSBXZWJJREJUcmFu
c2FjdGlvbkNhbGxiYWNrc0ltcGxfaAorCisjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOworCitjbGFzcyBXZWJJREJUcmFu
c2FjdGlvbkNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcyB7CitwdWJsaWM6CisgICAgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIH5XZWJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KCk7
CisgICAgdmlydHVhbCBpbnQgaWQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25DYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
SW1wbF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9u
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWEwYTgxNjI3NjQzOTg0MzFlNmIyMmRhNWZjMGFhYTM3ZmQ5ZjFmYQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBs
LmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYklEQlRyYW5zYWN0aW9uSW1wbC5oIgorCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24u
aCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAi
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYklEQlRyYW5zYWN0aW9uSW1w
bDo6V2ViSURCVHJhbnNhY3Rpb25JbXBsKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBiYWNrZW5kKQorICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCit7Cit9CisKK1dl
YklEQlRyYW5zYWN0aW9uSW1wbDo6fldlYklEQlRyYW5zYWN0aW9uSW1wbCgpCit7Cit9CisKK2lu
dCBXZWJJREJUcmFuc2FjdGlvbkltcGw6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Jh
Y2tlbmQtPm1vZGUoKTsKK30KKworV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQlRyYW5zYWN0aW9u
SW1wbDo6b2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQoreworICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gbV9iYWNrZW5kLT5v
YmplY3RTdG9yZShuYW1lKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbmV3IFdlYklEQk9iamVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7Cit9
CisKK3ZvaWQgV2ViSURCVHJhbnNhY3Rpb25JbXBsOjphYm9ydCgpCit7CisgICAgbV9iYWNrZW5k
LT5hYm9ydCgpOworfQorCitpbnQgV2ViSURCVHJhbnNhY3Rpb25JbXBsOjppZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYmFja2VuZC0+aWQoKTsKK30KKwordm9pZCBXZWJJREJUcmFuc2FjdGlv
bkltcGw6OnNldENhbGxiYWNrcyhXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyogY2FsbGJhY2tz
KQoreworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gaWRiQ2FsbGJhY2tzID0g
SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyk7CisgICAgbV9i
YWNrZW5kLT5zZXRDYWxsYmFja3MoaWRiQ2FsbGJhY2tzLmdldCgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmggYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0YTg0
Nzg4NjNjMzYzOTk1MDdhYzUyZjVkZTVlYTEzOWUzYjkwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYklEQlRyYW5zYWN0aW9uSW1wbF9oCisjZGVmaW5lIFdlYklE
QlRyYW5zYWN0aW9uSW1wbF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJX
ZWJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gU2VlIGNv
bW1lbnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhl
c2UgY2xhc3Nlcy4KK2NsYXNzIFdlYklEQlRyYW5zYWN0aW9uSW1wbDogcHVibGljIFdlYklEQlRy
YW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJJREJUcmFuc2FjdGlvbkltcGwoV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHZp
cnR1YWwgfldlYklEQlRyYW5zYWN0aW9uSW1wbCgpOyAgCisKKyAgICB2aXJ0dWFsIGludCBtb2Rl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoY29u
c3QgV2ViU3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKKyAgICB2aXJ0
dWFsIGludCBpZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViSURC
VHJhbnNhY3Rpb25DYWxsYmFja3MqKTsKKworcHJpdmF0ZToKKyAgICBXVEY6OlJlZlB0cjxXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKK307CisKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJUcmFuc2FjdGlvbkltcGxf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64709</attachid>
            <date>2010-08-18 07:33:33 -0700</date>
            <delta_ts>2010-08-19 06:20:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44101-20100818153330.patch</filename>
            <type>text/plain</type>
            <size>93547</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2UyNTQ3MDdjY2YwYzJkYTJiMGMxZTc5ZDk0ZmFkNzBmOThkYjNlLi4wMmNlMjJj
MjA5MjZjNjQ0ZmMwZmVjY2E2YzU1MTdjOWZlYzgyNzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDgtMTcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtJbmRleGVkREJdIEFi
b3J0IGlkbGUgSURCVHJhbnNhY3Rpb25zIHdoZW4gdGhlIEpTIGNvbnRleHQgdGhleSB3ZXJlIGNy
ZWF0ZWQgaW4gZmluaXNoZXMgZXhlY3V0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMDEKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICh1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL3RyYW5zYWN0aW9uLWJh
c2ljcy5qczogQWRkZWQuCisgICAgICAgIChhYm9ydENhbGxiYWNrKToKKyAgICAgICAgKGNyZWF0
ZVRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWw6IEFkZGVkLgor
CiAyMDEwLTA4LTA5ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
cGRhdGUgY2hyb21pdW0gdGVzdCByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKaW5kZXggZTUxMGJlMThjYmMxZDhjZGNiM2I3
NzNmY2ViNWZiZGQwN2QwOGIwNi4uZTE0NWU4MzkwY2E3ODM3MmU0MzI0ODQxN2YyMWI1MGNjZTNj
MmQ3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c2hhcmVkLmpzCkBAIC0zNSw2ICszNSwxMiBAQCBmdW5jdGlvbiB2ZXJpZnlTdWNjZXNzRXZlbnQo
ZXZlbnQpCiAgICAgdmVyaWZ5RXZlbnRDb21tb24oZXZlbnQpOwogfQogCitmdW5jdGlvbiB2ZXJp
ZnlBYm9ydEV2ZW50KGV2ZW50KQoreworICAgIGRlYnVnKCJBYm9ydCBldmVudCBmaXJlZDoiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUiLCAiYWJvcnQiKTsKK30KKwog
ZnVuY3Rpb24gdmVyaWZ5UmVzdWx0KHJlc3VsdCkKIHsKICAgICBzaG91bGRCZVRydWUoIidvbnN1
Y2Nlc3MnIGluIHJlc3VsdCIpOwpAQCAtNTIsNCArNTgsMyBAQCBmdW5jdGlvbiB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjaygpCiAgICAgdmVyaWZ5RXJyb3JFdmVudChldmVudCk7CiAgICAgZG9uZSgp
OwogfQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQt
dGVzdHMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2NyaXB0LXRlc3RzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjI5NWVh
NDhjNWY1NjRiOTJhZTY0YTEyYWE0MzZlMzg2Zjc4OTdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL3RyYW5zYWN0aW9uLWJhc2lj
cy5qcwpAQCAtMCwwICsxLDMxIEBACitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNh
Y3Rpb24gYmFzaWNzLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIGFib3J0Q2Fs
bGJhY2soKQoreworICAgIHZlcmlmeUFib3J0RXZlbnQoZXZlbnQpOworICAgIGRvbmUoKTsKK30K
KworZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25DYWxsYmFjaygpCit7CisgICAgdmVyaWZ5U3Vj
Y2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImV2ZW50LnJl
c3VsdC50cmFuc2FjdGlvbigpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGFib3J0Q2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4
ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwi
KTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCduYW1lJywgJ2Rl
c2NyaXB0aW9uJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKKyAgICByZXN1bHQub25z
dWNjZXNzID0gY3JlYXRlVHJhbnNhY3Rpb25DYWxsYmFjazsKKyAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCit0ZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYw
ODM3NDBjNmNiYWRkZjBjMGIyN2VlMjYwNjdlZGU3YWE3NWQ0MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gYmFzaWNz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnaW5kZXhlZERCJyBpbiB3
aW5kb3cgaXMgdHJ1ZQorUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERC
Lm9wZW4oJ25hbWUnLCAnZGVzY3JpcHRpb24nKQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQg
aXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBp
biByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0Fu
IGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BB
U1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFs
c2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2
ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25z
dWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFT
UyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0
LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworZXZlbnQucmVzdWx0LnRyYW5zYWN0
aW9uKCkKK0Fib3J0IGV2ZW50IGZpcmVkOgorUEFTUyBldmVudC50eXBlIGlzICJhYm9ydCIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNzIzOGY2MjZmZmY1YzgwYWZkOTE1MTVhOTFkMGE0MWRhMmEyNGM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YmFzaWNzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90
cmFuc2FjdGlvbi1iYXNpY3MuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmM2RlNGM5
MGQ0ZDI0OGUyNjg0YTUxZjc5MjA3ZDQ5MzlkZTRkZWY2Li5kNjY1OGE0ZmVkMzVkNDFmMGE0ODZj
NTcxNzlhNDA5NjEyYTcxYjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEwLTA4LTE3ICBBbmRyZWkgUG9w
ZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbSW5kZXhlZERCXSBBYm9ydCBpZGxlIElEQlRyYW5zYWN0aW9u
cyB3aGVuIHRoZSBKUyBjb250ZXh0IHRoZXkgd2VyZSBjcmVhdGVkIGluIGZpbmlzaGVzIGV4ZWN1
dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0
MTAxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBpbnRyb2R1Y2VzIHRoZSBUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLCB3aGljaCB3aWxsIGJlIHVzZWQKKyAgICAgICAgdG8gc2NoZWR1bGUgdHJh
bnNhY3Rpb25zIGZvciBleGVjdXRpb24uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJ1blNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpjYWxsRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQcm94eTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b0lEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpoYXNJREJGYWN0b3J5KToKKyAgICAgICAgKiBzdG9yYWdl
L0lEQkFib3J0RXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkFib3J0RXZl
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJBYm9ydEV2ZW50OjpJREJBYm9ydEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFib3J0RXZlbnQ6On5JREJBYm9ydEV2ZW50KToK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkFib3J0RXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpJREJBYm9ydEV2ZW50Ojppc0lEQkFib3J0RXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0
aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2Fj
dGlvbik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFn
ZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rv
cnlCYWNrZW5kSW1wbDo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlBlbmRpbmdUcmFu
c2FjdGlvbk1vbml0b3I6OmFkZFBlbmRpbmdUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpyZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6Y2xlYXJQ
ZW5kaW5nVHJhbnNhY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3I6OnBlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
UGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0lE
QlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJREJU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrczo6fklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6On5JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNxbGl0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNldENhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6On5JREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3I6OmFib3J0KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yOjpjcmVhdGUpOgorCiAyMDEwLTA4LTA5ICBNYXJjdXMgQnVsYWNoICA8YnVsYWNo
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGI5ODE0YjczZDc0NjFiZWJlZGE1MzQwMWEzODgwMGI4ZTIyNjMxODguLmU3MTM3NTVkOWFlZmRi
NTQxMTY0Njk4OTc4YWI0ZGNiZDE3ZTQ2NDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTA4LDYgKzM1MDgsOCBAQAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvRW50cnlDYWxsYmFjay5oJywKICAgICAgICAgICAgICdzdG9yYWdl
L0ZpbGVTeXN0ZW1DYWxsYmFjay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0ZsYWdzLmgnLAor
ICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQWJvcnRFdmVudC5jcHAnLAorICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCQWJvcnRFdmVudC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkFueS5jcHAn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQW55LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCQ2FsbGJhY2tzLmgnLApAQCAtMzU0OCwxMyArMzU1MCwyMCBAQAogICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJS
ZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmgnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9JREJTdWNjZXNzRXZlbnQuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaCcsCisgICAgICAg
ICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgnLAorICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvTG9jYWxTdG9y
YWdlVGFzay5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAnLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IGQ2ZjA1ZjRhNjljZjViZWUwNjgxMmViYmE5YjI2
YTQ5ZGQxMDA2ZjEuLmUzY2U5YTcwMDUxYmNlZTJjMWExMzQ5MzM3MGQ5NzFiYTAyMWVhNTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNs
dWRlICJWOEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhIVE1MRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJWOElEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJWOElEQlRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOExvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgpAQCAtMzgwLDYgKzM4MSw4IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3Qo
RXZlbnRUYXJnZXQqIHRhCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKElE
QlJlcXVlc3QqIGlkYlJlcXVlc3QgPSB0YXJnZXQtPnRvSURCUmVxdWVzdCgpKQogICAgICAgICBy
ZXR1cm4gdG9WOChpZGJSZXF1ZXN0KTsKKyAgICBpZiAoSURCVHJhbnNhY3Rpb24qIGlkYlRyYW5z
YWN0aW9uID0gdGFyZ2V0LT50b0lEQlRyYW5zYWN0aW9uKCkpCisgICAgICAgIHJldHVybiB0b1Y4
KGlkYlRyYW5zYWN0aW9uKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAKaW5kZXggM2Y3MjExMmI1MDc4YWYxM2IyMzAzYmM1ZjAyODMzZTJi
NGVmMmM3YS4uYjIzOTQ2NWMxZTFmNjZkZmFjZTg0NGZlYjBiOGIwYjllNGQ0NDMxZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJ
REJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKQEAg
LTQ1OSw3ICs0NjEsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFByb3h5OjpydW5TY3JpcHQo
djg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQsIGJvb2wgaXNJbgogICAgIH0KIAogICAgIC8v
IFJlbGVhc2UgdGhlIHN0b3JhZ2UgbXV0ZXggaWYgYXBwbGljYWJsZS4KLSAgICByZWxlYXNlU3Rv
cmFnZU11dGV4KCk7CisgICAgZGlkTGVhdmVTY3JpcHRDb250ZXh0KCk7CiAKICAgICBpZiAoaGFu
ZGxlT3V0T2ZNZW1vcnkoKSkKICAgICAgICAgQVNTRVJUKHJlc3VsdC5Jc0VtcHR5KCkpOwpAQCAt
NTMyLDcgKzUzNCw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OmNhbGxGdW5jdGlv
bih2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIHY4CiAgICAgfQogCiAgICAgLy8g
UmVsZWFzZSB0aGUgc3RvcmFnZSBtdXRleCBpZiBhcHBsaWNhYmxlLgotICAgIHJlbGVhc2VTdG9y
YWdlTXV0ZXgoKTsKKyAgICBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKIAogICAgIGlmICh2ODo6
Vjg6OklzRGVhZCgpKQogICAgICAgICBoYW5kbGVGYXRhbEVycm9ySW5WOCgpOwpAQCAtNjQxLDE2
ICs2NDMsMjQgQEAgdm9pZCBWOFByb3h5OjpkaXNjb25uZWN0RnJhbWUoKQogewogfQogCi12b2lk
IFY4UHJveHk6OnJlbGVhc2VTdG9yYWdlTXV0ZXgoKQordm9pZCBWOFByb3h5OjpkaWRMZWF2ZVNj
cmlwdENvbnRleHQoKQogeworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgLy8gSWYgd2UndmUganVzdCBsZWZ0IGEg
c2NyaXB0IGNvbnRleHQgYW5kIGluZGV4ZWQgZGF0YWJhc2UgaGFzIGJlZW4KKyAgICAvLyBpbnN0
YW50aWF0ZWQsIHdlIG11c3QgbGV0IGl0cyB0cmFuc2FjdGlvbiBjb29yZGluYXRvciBrbm93IHNv
IGl0IGNhbiB0ZXJtaW5hdGUKKyAgICAvLyBhbnkgbm90LXlldC1zdGFydGVkIHRyYW5zYWN0aW9u
cy4KKyAgICBpZiAoSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6aGFzUGVuZGluZ1RyYW5z
YWN0aW9ucygpKSB7CisgICAgICAgIEFTU0VSVChwYWdlLT5ncm91cCgpLmhhc0lEQkZhY3Rvcnko
KSk7CisgICAgICAgIHBhZ2UtPmdyb3VwKCkuaWRiRmFjdG9yeSgpLT5hYm9ydFBlbmRpbmdUcmFu
c2FjdGlvbnMoSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cGVuZGluZ1RyYW5zYWN0aW9u
cygpKTsKKyAgICAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6Y2xlYXJQZW5kaW5n
VHJhbnNhY3Rpb25zKCk7CisgICAgfQogICAgIC8vIElmIHdlJ3ZlIGp1c3QgbGVmdCBhIHRvcCBs
ZXZlbCBzY3JpcHQgY29udGV4dCBhbmQgbG9jYWwgc3RvcmFnZSBoYXMgYmVlbgogICAgIC8vIGlu
c3RhbnRpYXRlZCwgd2UgbXVzdCBlbnN1cmUgdGhhdCBhbnkgc3RvcmFnZSBsb2NrcyBoYXZlIGJl
ZW4gZnJlZWQuCiAgICAgLy8gUGVyIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZp
ZXcuaHRtbCNzdG9yYWdlLW11dGV4CiAgICAgaWYgKG1fcmVjdXJzaW9uICE9IDApCiAgICAgICAg
IHJldHVybjsKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFn
ZSkKLSAgICAgICAgcmV0dXJuOwogICAgIGlmIChwYWdlLT5ncm91cCgpLmhhc0xvY2FsU3RvcmFn
ZSgpKQogICAgICAgICBwYWdlLT5ncm91cCgpLmxvY2FsU3RvcmFnZSgpLT51bmxvY2soKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmgKaW5kZXggODQxYzI0OWNlYTNlNDZkODdjOTBjNGZhYWNiZmRkNmVh
YTM2NDE5NS4uNDIwYTk5ZDgzMjU2ZjA0ZGZkM2Y5NjczNWU0MzM2MmFhMGFhOTgxYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmgKQEAgLTMzOCw5ICszMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZUFjY2Vzc1RvKEZyYW1lKiB0YXJnZXQsIERl
bGF5UmVwb3J0aW5nIGRlbGF5KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIElmIG1fcmVj
dXJzaW9uQ291bnQgaXMgMCwgbGV0IExvY2FsU3RvcmFnZSBrbm93IHNvIHdlIGNhbiByZWxlYXNl
Ci0gICAgICAgIC8vIHRoZSBzdG9yYWdlIG11dGV4LgotICAgICAgICB2b2lkIHJlbGVhc2VTdG9y
YWdlTXV0ZXgoKTsKKyAgICAgICAgdm9pZCBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKIAogICAg
ICAgICB2b2lkIHJlc2V0SXNvbGF0ZWRXb3JsZHMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDQy
YTE1M2E2OTFmNDM1MjFlMDBjNDY2YTBmODQ3ZDg3ZGM3NzNmZmIuLjMxMzc2YmEyYWY3NGY3NmNi
YjcwMmM0NmE2NjIzY2JkMmI3ODNjNTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTE2OCw2ICsxNjgs
MTAgQEAgSURCUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCUmVxdWVzdCgpCiB7CiAgICAgcmV0
dXJuIDA7CiB9CitJREJUcmFuc2FjdGlvbiogRXZlbnRUYXJnZXQ6OnRvSURCVHJhbnNhY3Rpb24o
KQoreworICAgIHJldHVybiAwOworfQogI2VuZGlmCiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDFm
ZjkwMzFmMzkxNTFkYmE2MjE1OTAzYTJkNjAwYjc2OTk0MjBkYmEuLmE0OGIzOTFjYzc2ZjNlNDg3
NDdmNGIxMjNiNmQ4OWFiMzQ0MmNhYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTAsNiArNTAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgY2xhc3MgRmls
ZVJlYWRlcjsKICAgICBjbGFzcyBJREJSZXF1ZXN0OworICAgIGNsYXNzIElEQlRyYW5zYWN0aW9u
OwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgTm90
aWZpY2F0aW9uOwpAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRv
SURCUmVxdWVzdCgpOworICAgICAgICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0b0lEQlRyYW5z
YWN0aW9uKCk7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvUGFnZUdyb3VwLmggYi9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKaW5kZXggMDhi
MDNkNzAyNzg1MDQwMjM3Mzg4ZWU1ZjkyOTFjOWIzNDVjMDRmMi4uYjVmMjZlZmYxZDI1MzJlM2Fi
ODc0N2JkYzg4ZTY1OWZhYzA1OWQ1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5oCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaApAQCAtNzMsNiArNzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAgICAgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZhY3RvcnkoKTsKKyAgICAgICAg
Ym9vbCBoYXNJREJGYWN0b3J5KCkgeyByZXR1cm4gbV9mYWN0b3J5QmFja2VuZDsgfQogI2VuZGlm
CiAKICAgICAgICAgdm9pZCBhZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0
b3JhZ2UvSURCQWJvcnRFdmVudC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQWJvcnRFdmVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjE3NjBmODkzZjA3MzlhM2MyNzI3OGFiZDllNjEyYjkxMGJkMTU5OAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJBYm9ydEV2ZW50LmNwcApAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkFib3J0RXZl
bnQuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIklEQkFueS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8SURCQWJvcnRFdmVudD4gSURCQWJvcnRFdmVudDo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQkFib3J0RXZlbnQoKSk7Cit9CisKK0lEQkFib3J0RXZlbnQ6
OklEQkFib3J0RXZlbnQoKQorICAgIDogSURCRXZlbnQoZXZlbnROYW1lcygpLmFib3J0RXZlbnQs
IDApIC8vIEZJWE1FOiBzZXQgdGhlIHNvdXJjZSB0byB0aGUgdHJhbnNhY3Rpb24KK3sKK30KKwor
SURCQWJvcnRFdmVudDo6fklEQkFib3J0RXZlbnQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkFib3J0RXZl
bnQuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJBYm9ydEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRjMjIw
MjQzOTZhODUwZWMwZDUwZWJiZWE5YzQ3ZTIwMDA1MTEzZAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9JREJBYm9ydEV2ZW50LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SURCQWJvcnRFdmVudF9oCisjZGVmaW5lIElEQkFib3J0RXZlbnRfaAorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCQWJvcnRFdmVudCA6
IHB1YmxpYyBJREJFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQWJv
cnRFdmVudD4gY3JlYXRlKCk7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gYWxsb3cgY3JlYXRpb24g
b2YgdGhlc2UgZXZlbnRzIGZyb20gSlMuCisgICAgdmlydHVhbCB+SURCQWJvcnRFdmVudCgpOwor
CisgICAgdmlydHVhbCBib29sIGlzSURCQWJvcnRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKworcHJpdmF0ZToKKyAgICBJREJBYm9ydEV2ZW50KCk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlm
IC8vIElEQkFib3J0RXZlbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggZmExODA3Y2Nk
MzU2YTEwNjJjMjY3YWIwYjUzNGY2NjQ3MDY3MGZkNS4uNzhhNjY0NjA0NjdmY2M3ZDgzNzc5YThk
ZjgyMmNiNmE2YjI1ZDRiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC03NCw4ICs3NCwx
MCBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIGEg
bmV3IHRyYW5zYWN0aW9uIHN5bmNocm9ub3VzbHkuIExvY2tzIGFyZSBhY3F1aXJlZCBhc3luY2hy
b25vdXNseS4gT3BlcmF0aW9ucwogICAgIC8vIGNhbiBiZSBxdWV1ZWQgYWdhaW5zdCB0aGUgdHJh
bnNhY3Rpb24gYXQgYW55IHBvaW50LiBUaGV5IHdpbGwgc3RhcnQgZXhlY3V0aW5nIGFzIHNvb24g
YXMgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgbG9ja3MgaGF2ZSBiZWVuIGFjcXVpcmVkLgorICAg
IC8vIEFsc28gbm90ZSB0aGF0IGVhY2ggYmFja2VuZCBvYmplY3QgY29ycmVzcG9uZHMgdG8gZXhh
Y3RseSBvbmUgSURCVHJhbnNhY3Rpb24gb2JqZWN0LgogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFja2VuZCA9IG1fYmFja2VuZC0+dHJhbnNh
Y3Rpb24oc3RvcmVOYW1lcywgbW9kZSwgdGltZW91dCk7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoY29udGV4dCwgdHJhbnNh
Y3Rpb25CYWNrZW5kLnJlbGVhc2UoKSwgdGhpcyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoY29udGV4dCwgdHJhbnNhY3Rp
b25CYWNrZW5kLCB0aGlzKTsKKyAgICB0cmFuc2FjdGlvbkJhY2tlbmQtPnNldENhbGxiYWNrcyh0
cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDA5Yjlk
ZWU2MTViNTI2Y2RkZWZmZmY4YTcyNWM3N2Y4MGExYWQ1NmMuLmNiYWUwZDE4ZGYzN2MxYTUwNmQw
MDg3ZjIwMjE2NjVjOWZkZTA3OTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKQEAgLTI5LDE1ICsyOSwxNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3Qu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1JREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKQorSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0b3IpCiAgICAg
OiBtX25hbWUobmFtZSkKICAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pCiAgICAgLCBt
X3ZlcnNpb24odmVyc2lvbikKKyAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGlu
YXRvcikKIHsKIH0KIApAQCAtODMsMTEgKzg1LDkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SUQK
ICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb24o
RE9NU3RyaW5nTGlzdCosIHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBsb25nKQorUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlcywgdW5zaWduZWQgc2hvcnQg
bW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KQogewotICAgIC8vIEZJWE1FOiBBc2sgdGhlIHRy
YW5zYWN0aW9uIG1hbmFnZXIgZm9yIGEgbmV3IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fdHJh
bnNhY3Rpb25Db29yZGluYXRvci0+Y3JlYXRlVHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVzLCBtb2Rl
LCB0aW1lb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggZjZmZjA1ODdmOTEwMmE5ZjAwMDljZmM1NzU1
YzZkZDMwZTY5YTFhNi4uNTEzM2M1YTU3ZjI3MDUxMmEwMGE1MTVhYjE3OWI1YmViYjlmZTM5ZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC0zNSwxMSArMzUs
MTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yOworCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsIDogcHVibGljIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKG5hbWUsIGRlc2Ny
aXB0aW9uLCB2ZXJzaW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbiwgY29vcmRpbmF0b3IpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kSW1wbCgpOwogCkBAIC01NCw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERP
TVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxv
bmcgdGltZW91dCk7CiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24pOworICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIElEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IqKTsKIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1f
ZGVzY3JpcHRpb247CkBAIC02Miw2ICs2NCw4IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiA+IE9i
amVjdFN0b3JlTWFwOwogICAgIE9iamVjdFN0b3JlTWFwIG1fb2JqZWN0U3RvcmVzOworCisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25Db29yZGluYXRv
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhYzEyYmYxM2M4OGJlM2Q2Zjc5NjgzZGM3
YTUzMmUyZTUyYjJmMTMxLi45ZTM1MzY5ODE4M2U2MGViMmJlZWMzMTBiYzQ4Mjc5ZjdiOWY0ZDkx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBA
IC0zOSw2ICszOSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3Mg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlOworY2xhc3MgSURCVHJhbnNhY3Rpb25DYWxsYmFja3M7CiAKIC8vIFRoaXMg
Y2xhc3MgaXMgc2hhcmVkIGJ5IElEQkRhdGFiYXNlIChhc3luYykgYW5kIElEQkRhdGFiYXNlU3lu
YyAoc3luYykuCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlQmFja2VuZElt
cGwgYW5kIG9wdGlvbmFsbHkgb3RoZXJzIChpbiBvcmRlciB0byBwcm94eQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3Jh
Z2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCA3YmRkNzBkMzA4MTU2ODM2YmZlN2Nm
MmZhNmJkMGYxYmQ5ZTI5ZTJiLi5lNWM2MjkyZDMyM2U3YTczYWZjNWYwN2U3ZDY0MTE0YTM3MWU0
NGIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNw
cAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC00NCw3ICs0NSw4IEBAIFBhc3NS
ZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0
ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJGYWN0b3J5QmFja2VuZEltcGwpOwogfQog
Ci1JREJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpCitJREJGYWN0
b3J5QmFja2VuZEltcGw6OklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpIAorICAgIDogbV90cmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSgpKQogewog
fQogCkBAIC01OCw3ICs2MCw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwKICAgICBJREJEYXRh
YmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZChu
YW1lKTsKICAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoZSB2ZXJzaW9uIGJlPyAgVGhlIHNwZWMgZG9lc24n
dCBkZWZpbmUgaXQgeWV0LgotICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgZGVzY3JpcHRpb24sICIiKTsKKyAgICAgICAgZGF0YWJh
c2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGRlc2NyaXB0
aW9uLCAiIiwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpKTsKICAgICAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAuc2V0KG5hbWUsIGRhdGFiYXNlQmFja2VuZCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IGl0LT5zZWNvbmQ7CkBAIC02Niw2ICs2OCwxMiBAQCB2
b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VC
YWNrZW5kLnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjphYm9y
dFBlbmRpbmdUcmFuc2FjdGlvbnMoY29uc3QgVmVjdG9yPGludD4mIHBlbmRpbmdJRHMpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nSURzLnNpemUoKTsgKytpKQorICAgICAg
ICBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3ItPmFib3J0KHBlbmRpbmdJRHMuYXQoaSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwu
aCBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaAppbmRleCBiYmNjNTM3
Yzc5OTRmMWU2OTZmNTEyODAxNTA5ODg2YzlmODU1MGE2Li5mMDU3NDRhMTAzZjY3NTc1YTQ3YmQ4
NmIwYzMyNjk3MWE4MWYzYzk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVN0
cmluZ0xpc3Q7CitjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFzcyBJREJG
YWN0b3J5QmFja2VuZEltcGwgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Ugewog
cHVibGljOgpAQCAtNDQsMTIgKzQ1LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0
b3J5QmFja2VuZEltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKGNvbnN0IFZlY3RvcjxpbnQ+JiBwZW5kaW5nSURzKTsK
IAogcHJpdmF0ZToKICAgICBJREJGYWN0b3J5QmFja2VuZEltcGwoKTsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+ID4gSURC
RGF0YWJhc2VCYWNrZW5kTWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcCBtX2RhdGFiYXNl
QmFja2VuZE1hcDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yOwogCiAgICAgLy8gV2Ugb25seSBjcmVhdGUgb25lIGluc3RhbmNl
IG9mIHRoaXMgY2xhc3MgYXQgYSB0aW1lLgogICAgIHN0YXRpYyBJREJGYWN0b3J5QmFja2VuZElt
cGwqIGlkYkZhY3RvcnlCYWNrZW5kSW1wbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYmExODA5ODZhZmVlZjZhYTI4MjhiYTcxNjE1NmMwZDUx
NzlmMmNjOC4uYzA1MmJjMjkwMmYxYjRkZWQwN2RhZTY5NzkyNjliODZlMGFjNDZiOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtNTEsNiArNTIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiwgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVuZGluZ1RyYW5zYWN0
aW9ucyhjb25zdCBWZWN0b3I8aW50PiYgaWRzKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0aW9u
TW9uaXRvci5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWJjNzUyYzI4ODY4NWExNWZhOTYxMzA5NjJjMzNkMzExZTE1YzU5
NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZlY3RvcjxpbnQ+
KiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjptX2lkcyA9IDA7CisKK2Jvb2wgSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6aGFzUGVuZGluZ1RyYW5zYWN0aW9ucygpCit7CisgICAg
cmV0dXJuIChtX2lkcyAmJiBtX2lkcy0+c2l6ZSgpKTsKK30KKwordm9pZCBJREJQZW5kaW5nVHJh
bnNhY3Rpb25Nb25pdG9yOjphZGRQZW5kaW5nVHJhbnNhY3Rpb24oaW50IGlkKQoreworICAgIGlm
ICghbV9pZHMpCisgICAgICAgIG1faWRzID0gbmV3IFZlY3RvcjxpbnQ+KCk7CisgICAgbV9pZHMt
PmFwcGVuZChpZCk7Cit9CisKK3ZvaWQgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVt
b3ZlUGVuZGluZ1RyYW5zYWN0aW9uKGludCBpZCkKK3sKKyAgICBtX2lkcy0+cmVtb3ZlKGlkKTsK
KyAgICBpZiAoIW1faWRzLT5zaXplKCkpIHsKKyAgICAgICAgZGVsZXRlIG1faWRzOworICAgICAg
ICBtX2lkcyA9IDA7CisgICAgfQorfQorCit2b2lkIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0
b3I6OmNsZWFyUGVuZGluZ1RyYW5zYWN0aW9ucygpCit7CisgICAgbV9pZHMtPmNsZWFyKCk7Cisg
ICAgZGVsZXRlIG1faWRzOworICAgIG1faWRzID0gMDsKK30KKworY29uc3QgVmVjdG9yPGludD4m
IElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnBlbmRpbmdUcmFuc2FjdGlvbnMoKQorewor
ICAgIHJldHVybiAqbV9pZHM7Cit9CisKK307CisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0aW9u
TW9uaXRvci5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMmRiMjhkNDE4Mjg5MGMxZmQ1NDY0MWViM2M0ODkxZTg3NGQwNWRlCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1v
bml0b3IuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJQZW5kaW5nVHJhbnNh
Y3Rpb25Nb25pdG9yX2gKKyNkZWZpbmUgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcl9oCisK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBUaGlzIGNsYXNzIGtlZXBzIHRyYWNrIG9mIHRoZSB0cmFuc2FjdGlvbnMgY3JlYXRlZCBkdXJp
bmcgdGhlIGN1cnJlbnQKKy8vIEphdmFzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuIEEgdHJhbnNh
Y3Rpb24gaXMgJ3BlbmRpbmcnIGlmIG5vIGFzeW5jaHJvbm91cworLy8gb3BlcmF0aW9uIGlzIGN1
cnJlbnRseSBxdWV1ZWQgZm9yIGl0IChlLmcuIGFuIElEQk9iamVjdFN0b3JlOjpwdXQoKSBvciBz
aW1pbGFyKS4KKy8vIEFsbCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgYWJvcnRlZCBhcyBzb29u
IGFzIGV4ZWN1dGlvbiByZXR1cm5zIGZyb20KKy8vIHRoZSBzY3JpcHQgZW5naW5lLgorLy8KKy8v
IEZJWE1FOiBtb3ZlIHRoZSB2ZWN0b3Igb2YgdHJhbnNhY3Rpb24gSURzIHRvIFRMUy4gS2VlcGlu
ZyBpdCBzdGF0aWMKKy8vIHdpbGwgbm90IHdvcmsgb25jZSB3ZSBhZGQgc3VwcG9ydCBmb3Igd29y
a2Vycy4gQW5vdGhlciBwb3NzaWJsZQorLy8gc29sdXRpb24gaXMgdG8ga2VlcCB0aGUgdmVjdG9y
IGluIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorY2xhc3MgSURCUGVuZGluZ1RyYW5zYWN0
aW9uTW9uaXRvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJv
b2wgaGFzUGVuZGluZ1RyYW5zYWN0aW9ucygpOworICAgIHN0YXRpYyB2b2lkIGFkZFBlbmRpbmdU
cmFuc2FjdGlvbihpbnQgaWQpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVBlbmRpbmdUcmFuc2Fj
dGlvbihpbnQgaWQpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyUGVuZGluZ1RyYW5zYWN0aW9ucygp
OworICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8aW50PiYgcGVuZGluZ1RyYW5zYWN0aW9ucygpOwor
cHJpdmF0ZToKKyAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yKCk7CisKKyAgICBzdGF0
aWMgVmVjdG9yPGludD4qIG1faWRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJQZW5kaW5n
VHJhbnNhY3Rpb25Nb25pdG9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFu
c2FjdGlvbi5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDFi
YzA1OWEzNzdmMGE3ZDBlMGRjNzlhNzJhZDBkOTk3ZDEzYzI0MzcuLjFiOTg2NDgwYzY2ODFkNzFm
NWZjNjkwMjE0YzI1N2I5ODJiZjAzZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApA
QCAtNSw5ICs1LDExIEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiSURCQWJvcnRFdmVudC5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xNiw3ICsxOCwxMCBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNh
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcgog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tlbmQoYmFj
a2VuZCkKICAgICAsIG1fZGF0YWJhc2UoZGIpCisgICAgLCBtX3N0b3BwZWQoZmFsc2UpCisgICAg
LCBtX3RpbWVyKHRoaXMsICZJREJUcmFuc2FjdGlvbjo6dGltZXJGaXJlZCkKIHsKKyAgICBJREJQ
ZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphZGRQZW5kaW5nVHJhbnNhY3Rpb24obV9iYWNrZW5k
LT5pZCgpKTsKIH0KIAogSURCVHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbigpCkBAIC01MCw2
ICs1NSwyMiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0
KCkKK3sKKyAgICBpZiAoIW1fc3RvcHBlZCkgeworICAgICAgICBtX3NlbGZSZWYgPSB0aGlzOwor
ICAgICAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKKyAgICB9CisgICAgLy8gUmVsZWFzZSB0aGUgYmFja2VuZCBhcyBpdCBob2xkcyBhIChjaXJj
dWxhcikgcmVmZXJlbmNlIGJhY2sgdG8gdXMuCisgICAgbV9iYWNrZW5kLmNsZWFyKCk7Cit9CisK
K2ludCBJREJUcmFuc2FjdGlvbjo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tlbmQt
PmlkKCk7Cit9CisKIGJvb2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdAogewog
ICAgIC8vIFdlIG1heSBiZSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJhbnNhY3Rpb24gc28gd2UgY2Fu
bm90IHN1c3BlbmQgb3VyIG9iamVjdC4KQEAgLTU3LDYgKzc4LDE1IEBAIGJvb2wgSURCVHJhbnNh
Y3Rpb246OmNhblN1c3BlbmQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJ
REJUcmFuc2FjdGlvbjo6c3RvcCgpCit7CisgICAgaWYgKCFtX3N0b3BwZWQpIHsKKyAgICAgICAg
Ly8gVGhlIGRvY3VtZW50IGlzIGdldHRpbmcgZGV0YWNoZWQuIEFib3J0IQorICAgICAgICBtX3N0
b3BwZWQgPSB0cnVlOworICAgICAgICBtX2JhY2tlbmQtPmFib3J0KCk7CisgICAgfQorfQorCiBF
dmVudFRhcmdldERhdGEqIElEQlRyYW5zYWN0aW9uOjpldmVudFRhcmdldERhdGEoKQogewogICAg
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CkBAIC02Nyw2ICs5NywxNCBAQCBFdmVudFRhcmdl
dERhdGEqIElEQlRyYW5zYWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQogICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnRpbWVyRmly
ZWQoVGltZXI8SURCVHJhbnNhY3Rpb24+KiB0cmFuc2FjdGlvbikKK3sKKyAgICBBU1NFUlQobV9z
ZWxmUmVmKTsKKworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gc2VsZlJlZiA9IG1fc2VsZlJl
Zi5yZWxlYXNlKCk7CisgICAgZGlzcGF0Y2hFdmVudChJREJBYm9ydEV2ZW50OjpjcmVhdGUoKSk7
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb24uaAppbmRleCAyZTMxNjdjNjgzOGQ3ZjA3MWJlMGZkZDJiYmEwNTE4MTViNjBj
MjY2Li43ZDZmODdkZmI5YzEzZTFkMDNlZDM3MzNkNGEwNzYwOWEyNzFlMzU2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uaApAQCAtMzQsMTMgKzM0LDE1IEBACiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKLWNsYXNzIElEQlRyYW5z
YWN0aW9uIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2Ns
YXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLCBwdWJs
aWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGJhY2tlbmQsIElEQkRhdGFiYXNlKiBkYikKICAgICB7IApAQCAtNjMsMTIgKzY1LDIwIEBAIHB1
YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvbXBsZXRlKTsKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRpbWVvdXQpOwogCisgICAgLy8gSURC
VHJhbnNhY3Rpb25DYWxsYmFja3MKKyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydCgpOworICAgIHZp
cnR1YWwgaW50IGlkKCkgY29uc3Q7CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwg
SURCVHJhbnNhY3Rpb24qIHRvSURCVHJhbnNhY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3Vz
cGVuZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisKKyAgICB1c2luZyBSZWZD
b3VudGVkPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBJREJU
cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBJREJEYXRhYmFzZSopOwpAQCAtNzksOSArODksMTUgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7
CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwog
CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uPiopOworCiAgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1f
ZGF0YWJhc2U7CisKKyAgICBib29sIG1fc3RvcHBlZDsKKyAgICBUaW1lcjxJREJUcmFuc2FjdGlv
bj4gbV90aW1lcjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fc2VsZlJlZjsgLy8gVGhp
cyBpcyBzZXQgdG8gdXMgaWZmIHRoZXJlJ3MgYW4gZXZlbnQgcGVuZGluZy4KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWM5NTRiOTkwYTJlY2JlNDg3ZjhlNDQ1YzI5ZGY4MWVk
MWVmZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRl
KERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWdu
ZWQgbG9uZyB0aW1lb3V0LCBpbnQgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKG9iamVjdFN0b3JlcywgbW9kZSwgdGltZW91dCwgaWQpKTsK
K30KKworSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bChET01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2ln
bmVkIGxvbmcgdGltZW91dCwgaW50IGlkKQorICAgIDogbV9vYmplY3RTdG9yZU5hbWVzKG9iamVj
dFN0b3JlcykKKyAgICAsIG1fbW9kZShtb2RlKQorICAgICwgbV90aW1lb3V0KHRpbWVvdXQpCisg
ICAgLCBtX2lkKGlkKQorICAgICwgbV9hYm9ydGVkKGZhbHNlKQoreworfQorCitQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudC4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjphYm9ydCgpCit7CisgICAgbV9hYm9ydGVkID0gdHJ1ZTsKKyAgICBtX2NhbGxiYWNr
cy0+b25BYm9ydCgpOworfQorCit9OworCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMGIyNDE2OTUwNTQwMzIyZGFkZmFlZGNiMzVjOTBhOGNkMjBkMWVjCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsX2gK
KyNkZWZpbmUgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbF9oCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVibGljIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoRE9NU3RyaW5nTGlzdCogb2JqZWN0
U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQsIGludCBp
ZCk7CisgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCgpIHsgfQorCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVU
YXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOworICAgIHZpcnR1
YWwgdm9pZCBhYm9ydCgpOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MqIGNhbGxiYWNrcykgeyBtX2NhbGxiYWNrcyA9IGNhbGxiYWNrczsgfQorCitwcml2YXRlOgor
ICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQsIGludCBpZCk7CisK
KyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9vYmplY3RTdG9yZU5hbWVzOworICAgIHVuc2ln
bmVkIHNob3J0IG1fbW9kZTsKKyAgICB1bnNpZ25lZCBsb25nIG1fdGltZW91dDsKKyAgICBpbnQg
bV9pZDsKKyAgICBib29sIG1fYWJvcnRlZDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxs
YmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UuaAppbmRleCBkZmYyYmQ3Zjk0M2RlZDg0OTQ0NDk0YmZmNTY1ZDE2YjQ4OTkx
NWQ0Li4zOTY1MWYxMDE3NWRlNzA2MGQwNDVhOWYwYzYyMzkzYzZhZTM3NWRjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC0zNyw2
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZTsKK2NsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOwogY2xhc3MgU1FM
aXRlRGF0YWJhc2U7CiAKIC8vIFRoaXMgY2xhc3MgaXMgc2hhcmVkIGJ5IElEQlRyYW5zYWN0aW9u
IChhc3luYykgYW5kIElEQlRyYW5zYWN0aW9uU3luYyAoc3luYykuCkBAIC01MSw3ICs1Miw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1vZGUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwotICAgIHZp
cnR1YWwgU1FMaXRlRGF0YWJhc2UqIHNxbGl0ZURhdGFiYXNlKCkgPSAwOworICAgIHZpcnR1YWwg
aW50IGlkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJh
bnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCBiL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MTgx
ZmNjZjNjYmQxMDQ3ZTIyMmYxOGVmYThjM2Y2NjNjZGQzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc19oCisjZGVmaW5lIElEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyA6
IHB1YmxpYyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25DYWxsYmFja3MoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBvbkFib3J0KCkgPSAwOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3QgPSAwOworICAg
IC8vIEZJWE1FOiBhZGQgdGhlIHJlc3QKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCisKKyNlbmRpZiAvLyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc19oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYzMjVk
NjBkYTZhYTQ4ZTU4NGFiZTEzZWExOWY4NGM4YjA4ZGZiOAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMCwwICsxLDQz
IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJP
YmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5o
IgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvcjo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigpIAorICAgIDogbV9u
ZXh0SUQoMCkKK3sKK30KKworSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6fklEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKQoreworfQorCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3JlYXRlVHJhbnNhY3Rpb24o
RE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25l
ZCBsb25nIHRpbWVvdXQpCit7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUob2Jq
ZWN0U3RvcmVzLCBtb2RlLCB0aW1lb3V0LCArK21fbmV4dElEKTsKKyAgICBtX3RyYW5zYWN0aW9u
UXVldWUuYWRkKHRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBtX2lkTWFwLmFkZChtX25leHRJRCwg
dHJhbnNhY3Rpb24pOworICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7Cit9CisKK3Zv
aWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6YWJvcnQoaW50IGlkKQoreworICAgIEFTU0VS
VChtX2lkTWFwLmNvbnRhaW5zKGlkKSk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBtX2lkTWFwLmdldChpZCk7CisgICAgQVNTRVJUKHRy
YW5zYWN0aW9uKTsKKyAgICBtX3RyYW5zYWN0aW9uUXVldWUucmVtb3ZlKHRyYW5zYWN0aW9uLmdl
dCgpKTsKKyAgICBtX2lkTWFwLnJlbW92ZShpZCk7CisgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7
CisgICAgLy8gRklYTUU6IHRoaXMgd2lsbCBjaGFuZ2Ugb25jZSB3ZSBoYXZlIHRyYW5zYWN0aW9u
cyBhY3R1YWxseSBydW5uaW5nLgorfQorCit9OworCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ODU2YWQ3ZTRlMzY3NDJlN2IyNmUzYTRkYWY5NGVhZDZkMzQzMWUxCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yX2gKKyNkZWZpbmUgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcl9oCisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSURCVHJhbnNhY3Rpb25DYWxsYmFja3M7CisKKy8vIFRoaXMgY2xhc3MgbWFuYWdl
cyB0cmFuc2FjdGlvbnMgYXMgZm9sbG93cy4gUmVxdWVzdHMgZm9yIG5ldyB0cmFuc2FjdGlvbnMg
YXJlCisvLyBhbHdheXMgc2F0aXNmaWVkIGFuZCB0aGUgbmV3IHRyYW5zYWN0aW9uIGlzIHBsYWNl
ZCBpbiBhIHF1ZXVlLgorLy8gVHJhbnNhY3Rpb25zIGFyZSBub3QgYWN0dWFsbHkgc3RhcnRlZCB1
bnRpbCB0aGUgZmlyc3Qgb3BlcmF0aW9uIGlzIGlzc3VlZC4KKy8vIEVhY2ggdHJhbnNhY3Rpb24g
ZXhlY3V0ZXMgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgYW5kIGlzIGNvbW1pdHRlZCBhdXRvbWF0aWNh
bGx5CisvLyB3aGVuIHRoZXJlIGFyZSBubyBtb3JlIG9wZXJhdGlvbnMgaXNzdWVkIGluIGl0cyBj
b250ZXh0LgorLy8gV2hlbiBzdGFydGluZywgYSB0cmFuc2FjdGlvbiB3aWxsIGF0dGVtcHQgdG8g
bG9jayBhbGwgdGhlIG9iamVjdCBzdG9yZXMgaW4gaXRzCisvLyBzY29wZS4gSWYgdGhpcyBkb2Vz
IG5vdCBoYXBwZW4gd2l0aGluIGEgZ2l2ZW4gdGltZW91dCwgYW4gZXhjZXB0aW9uIGlzIHJhaXNl
ZC4KKy8vIFRoZSBDb29yZGluYXRvciBtYWludGFpbnMgYSBwb29sIG9mIHRocmVhZHMuIElmIHRo
ZXJlIGFyZSBubyB0aHJlYWRzIGF2YWlsYWJsZQorLy8gdGhlIG5leHQgdHJhbnNhY3Rpb24gaW4g
dGhlIHF1ZXVlIHdpbGwgaGF2ZSB0byB3YWl0IHVudGlsIGEgdGhyZWFkIGJlY29tZXMKKy8vIGF2
YWlsYWJsZS4KK2NsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IgOiBwdWJsaWMgUmVmQ291
bnRlZDxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSk7IH0KKyAgICB2aXJ0dWFsIH5J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CisKKyAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogb2Jq
ZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwor
ICAgIHZvaWQgYWJvcnQoaW50IHRyYW5zYWN0aW9uSWQpOworCitwcml2YXRlOgorICAgIElEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKKworICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSo+IG1fdHJhbnNhY3Rpb25RdWV1ZTsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8aW50LCBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiA+IElkVG9UcmFu
c2FjdGlvbk1hcDsKKyAgICBJZFRvVHJhbnNhY3Rpb25NYXAgbV9pZE1hcDsKKyAgICBpbnQgbV9u
ZXh0SUQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Jf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggYzQyZTYzYjM1MzEyYjg1Yzc1ZDY0NzEwZWIwMmE4ODZhY2UxOTY5
OC4uZTBhMmU3YjU1OTMyYWIyYTZkMzFiZTNkMWY2MWI5MmIwMzc2Y2I0NSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzUgQEAKKzIwMTAtMDgtMTcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtJbmRleGVkREJdIEFib3J0IGlkbGUgSURCVHJhbnNhY3Rpb25zIHdoZW4gdGhlIEpTIGNv
bnRleHQgdGhleSB3ZXJlIGNyZWF0ZWQgaW4gZmluaXNoZXMgZXhlY3V0aW9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMDEKKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogcHVibGlj
L1dlYklEQkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeTo6YWJvcnRQ
ZW5kaW5nVHJhbnNhY3Rpb25zKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24u
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uOjp+V2ViSURCVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbjo6bW9kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlRyYW5zYWN0aW9uOjppZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9u
OjpzZXRDYWxsYmFja3MpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3M6On5XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzOjpvbkFib3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
VHJhbnNhY3Rpb25DYWxsYmFja3M6OmlkKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5Ojp0cmFuc2FjdGlvbik6
CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKToK
KyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oOgorICAgICAgICAqIHNyYy9J
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6On5JREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eTo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHk6Om1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHk6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5OjpzY2hlZHVsZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHk6OnNxbGl0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5OjppZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eTo6c2V0Q2FsbGJhY2tzKToKKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkuaDogQWRkZWQuCisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc1Byb3h5OjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6On5JREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
UHJveHk6Om9uQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NQcm94eTo6aWQpOgorICAgICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJET01TdHJpbmdMaXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRE9NU3RyaW5nTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjp0
cmFuc2FjdGlvbik6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAg
ICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZh
Y3RvcnlJbXBsOjphYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJJ
REJGYWN0b3J5SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNr
c0ltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzSW1wbDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbDo6fldlYklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrc0ltcGw6Om9uQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCVHJhbnNhY3Rpb25D
YWxsYmFja3NJbXBsOjppZCk6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uSW1wbDo6V2ViSURC
VHJhbnNhY3Rpb25JbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBs
Ojp+V2ViSURCVHJhbnNhY3Rpb25JbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNh
Y3Rpb25JbXBsOjptb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBs
OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uSW1wbDo6
YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkltcGw6OmlkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBsOjpzZXRDYWxsYmFja3MpOgorICAg
ICAgICAqIHNyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6Oik6CisKIDIwMTAtMDgtMDkgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKaW5kZXggMDZmZDgyY2JiOWJlOTAwMWNjNjdmYzg0NzA0YTA2YjYzMzk4ZDljMy4uYWMzNjM2
ODY4MTM1ZDM2ZWIzNjMyZWRiM2E0NzI2NGMyM2NjNGYzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE4
Miw2ICsxODIsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCSW5kZXguaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJLZXkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYklE
QlRyYW5zYWN0aW9uLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnB1dEVsZW1lbnQu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViS2l0LmgnLApAQCAtMzI2LDYgKzMyOCwxMCBAQAogICAgICAgICAg
ICAgICAgICdzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9JREJPYmplY3RTdG9yZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJPYmpl
Y3RTdG9yZVByb3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQ
cm94eS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQ
cm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckNsaWVudEltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwJywKQEAgLTQyMiw2ICs0
MjgsMTAgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleVJhbmdlLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSURC
VHJhbnNhY3Rpb25JbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3NJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrc0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUNHLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZURlY29kZXIuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkltYWdlU2tpYS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oCmluZGV4IGIwZDYwODZhZWI3OWY4ZGM2ZWU1ZTg2OGM5MzUxZWY2NGY2MWE3
MzcuLjZlNDk0Y2U4MjdlMWMzMDRkZTM3YTMzMjdhYmYwZDA5OTBhZTY5NDMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKIGNsYXNz
IFdlYklEQk9iamVjdFN0b3JlOworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKIC8vIFNlZSBj
b21tZW50IGluIFdlYkluZGV4ZWREYXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IG9m
IHRoZXNlIGNsYXNzZXMuCiBjbGFzcyBXZWJJREJEYXRhYmFzZSB7CkBAIC03NCw2ICs3NSwxMyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQorICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAgb2YgdGhlIFdlYklEQlRyYW5zYWN0aW9u
IHRvIHRoZSBjYWxsZXIuCisgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVu
c2lnbmVkIGxvbmcgdGltZW91dCkKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9y
eS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKaW5kZXggNWViNmY1
ODM3YWU2OGY4NTRhNDhlYzI3Mjk5NTE3MzBjNWE5NzAxNi4uN2MwNzBhMmZiZWEyNjM2NzA5Njll
MjQyZjdlOTg0NWM1MjM2Zjk0NyAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJGYWN0b3J5LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5
LmgKQEAgLTM0LDEyICszNCwxMiBAQAogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFt
ZTsKIGNsYXNzIFdlYklEQkRhdGFiYXNlOwotY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViU2Vj
dXJpdHlPcmlnaW47CiAKIC8vIFRoZSBlbnRyeSBwb2ludCBpbnRvIHRoZSBJbmRleGVkRGF0YWJh
c2UgQVBJLiAgVGhlc2UgY2xhc3NlcyBtYXRjaCB0aGVpciBGb28gYW5kCkBAIC02Myw2ICs2Myw4
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG9wZW4obmFtZSwgZGVzY3JpcHRpb24sIGNhbGxi
YWNrcywgb3JpZ2luLCB3ZWJGcmFtZSk7CiAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFib3J0
UGVuZGluZ1RyYW5zYWN0aW9ucyhjb25zdCBXZWJWZWN0b3I8aW50PiYgcGVuZGluZ0lEcykgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzNjliODk5YjU2OTEzYmQ2ZDE3OTY3NGYyMGIyZjA4YzBlYTUyMWMKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCVHJhbnNhY3Rpb25faAorI2RlZmluZSBXZWJJ
REJUcmFuc2FjdGlvbl9oCisKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlOworY2xhc3MgV2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3M7CisKKy8vIFNlZSBjb21tZW50IGluIFdlYkluZGV4ZWREYXRhYmFzZSBmb3Ig
YSBoaWdoIGxldmVsIG92ZXJ2aWV3IG9mIHRoZXNlIGNsYXNzZXMuCitjbGFzcyBXZWJJREJUcmFu
c2FjdGlvbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViSURCVHJhbnNhY3Rpb24oKSB7IH0K
KworICAgIHZpcnR1YWwgaW50IG1vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdmlydHVh
bCBXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQor
ICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0CisgICAgeworICAgICAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCVHJhbnNhY3Rpb25faApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRiOTIyMTc5ZDMwNDI0NWI5YjU5MTM1MDJjZWE4NjFlNTI5ODRjMTgKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NfaAorI2RlZmluZSBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc19oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KCkgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0CisgICAgeyAKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3Bw
CmluZGV4IGQxMWQxODJhNmNmYjA5MDQ3YzJkZDVhNDkxMTI3N2M2ZWRhOTRkMGIuLjlhYTI5Nzc4
MDYxNTJjNDYxMGYxNjY1ZjBhNDFmNDc5NmNmNjc4MTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZVByb3h5LmNwcApAQCAtMjksMTIgKzI5LDE0IEBACiAjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlUHJveHkuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIldl
YkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUu
aCIKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgogCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKQEAgLTk0LDkgKzk2LDkgQEAgdm9pZCBJREJEYXRhYmFzZVByb3h5OjpyZW1v
dmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGIKIAog
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJv
eHk6OnRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKIHsKLSAgICAvLyBGSVhNRTogcGx1bWIgdG8g
dGhlIGJyb3dzZXIgcHJvY2VzcywgZXRjIGV0Yy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICBXZWJLaXQ6OldlYkRPTVN0cmluZ0xpc3QgbmFtZXMoc3RvcmVO
YW1lcyk7CisgICAgV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3dl
YklEQkRhdGFiYXNlLT50cmFuc2FjdGlvbihuYW1lcywgbW9kZSwgdGltZW91dCk7CisgICAgcmV0
dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUodHJhbnNhY3Rpb24pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCA0NGNiYjQwZDY5ZjQyZjYzNGQ2ZDA3YTkyN2NjZjQw
YjdjMzBlZWM1Li4xMTRlN2UxM2ZhZGM2Zjk2NjBlNTlkY2JmMTAxYjRlNWQwYzljOGQwIDEwMDc1
NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViS2l0
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtNjQsNiArNjUsMTQgQEAgdm9pZCBJ
REJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwKICAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJh
bWUpOwogfQogCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFib3J0UGVuZGluZ1RyYW5z
YWN0aW9ucyhjb25zdCBWZWN0b3I8aW50PiYgcGVuZGluZ0lEcykKK3sKKyAgICBBU1NFUlQocGVu
ZGluZ0lEcy5zaXplKCkpOworICAgIFdlYktpdDo6V2ViVmVjdG9yPGludD4gaWRzID0gcGVuZGlu
Z0lEczsKKworICAgIG1fd2ViSURCRmFjdG9yeS0+YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKGlk
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5
QmFja2VuZFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuaAppbmRleCA5NjlhOWQ3YzM4YWRkMzMyNTZhZTllZGIzMWQ0MjgyOTIyOGViOTY2Li45ZWZj
N2FmNWJhMDk1Mzc3MzBlMzE2MDA0MjI5OGE3NjhkOGZkNzdjIDEwMDc1NQotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRhdGFiYXNlcyh2b2lkKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVuZGluZ1RyYW5zYWN0
aW9ucyhjb25zdCBWZWN0b3I8aW50PiYgcGVuZGluZ0lEcyk7CiAKIHByaXZhdGU6CiAgICAgSURC
RmFjdG9yeUJhY2tlbmRQcm94eSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTZiMDU4ZTUyZTI0Mjc1ODM0
ODcwOWRiMDAxY2QwNDFjNTY5NmU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJP
YmplY3RTdG9yZVByb3h5LmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIK
KyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIldlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eSh0cmFuc2FjdGlvbikpOworfQorCitJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKKyAgICA6IG1fd2ViSURCVHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24pCit7Cit9CisKK0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Ojp+SURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkoKQoreworfQorCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6Om9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICBXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlKiBvYmplY3RT
dG9yZSA9IG1fd2ViSURCVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlKG5hbWUpOworICAgIGlmICgh
b2JqZWN0U3RvcmUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBJREJPYmplY3RTdG9y
ZVByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOworfQorCit1bnNpZ25lZCBzaG9ydCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eTo6bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViSURC
VHJhbnNhY3Rpb24tPm1vZGUoKTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eTo6YWJvcnQoKQoreworICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPmFib3J0KCk7Cit9CisKK3Zv
aWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OnNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KQoreworICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVy
IGJlIHJlYWNoZWQgYXMgaXQncyB0aGUgaW1wbCBvYmplY3RzIHdobyBnZXQgdG8KKyAgICAvLyBl
eGVjdXRlIHRhc2tzIGluIHRoZSBicm93c2VyIHByb2Nlc3MuCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK2ludCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6aWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX3dlYklEQlRyYW5zYWN0aW9uLT5pZCgpOworfQorCit2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5OjpzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MqIGNhbGxiYWNrcykKK3sKKyAgICBtX3dlYklEQlRyYW5zYWN0aW9uLT5zZXRDYWxsYmFja3Mo
bmV3IFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDYyYjhmZjdiODQxYTJhM2Y5MmEyYzY3YTcwMGRlNjM4MzVmZTMwMgotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5k
UHJveHkuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eV9oCisjZGVmaW5lIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5X2gKKworI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0
aW9uOyB9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkgOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb24+KTsKKyAgICB2aXJ0
dWFsIH5JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSgpOworCisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1vZGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUYXNrKFBh
c3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOworICAgIHZpcnR1YWwgaW50
IGlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcyopOworCitwcml2YXRlOgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4pOworCisgICAgT3duUHRyPFdl
YktpdDo6V2ViSURCVHJhbnNhY3Rpb24+IG1fd2ViSURCVHJhbnNhY3Rpb247Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2Fj
dGlvbkNhbGxiYWNrc1Byb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rp
b25DYWxsYmFja3NQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU3ZDQ0ZjE5ZDI1NjNjODQyM2NlNjEw
MjNhODgxNDBlNmY4M2E3NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5Lmgi
CisKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgorCisjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5PiBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkNhbGxi
YWNrc1Byb3h5KGNhbGxiYWNrcykpOworfQorCitJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
OjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIDogbV9jYWxsYmFja3MoY2FsbGJh
Y2tzKQoreworfQorCitJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5Ojp+SURCVHJhbnNhY3Rp
b25DYWxsYmFja3NQcm94eSgpCit7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQ
cm94eTo6b25BYm9ydCgpCit7CisgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoKTsKKyAgICBtX2Nh
bGxiYWNrcy5jbGVhcigpOworfQorCitpbnQgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6
aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NhbGxiYWNrcy0+aWQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJv
eHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgyMWVmZjRkMmI4YzI1MDc3YzI5ZjIyYzM4ZTRkODk4MTFmOGM4NmMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzUHJveHkuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkNhbGxi
YWNrc1Byb3h5X2gKKyNkZWZpbmUgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eV9oCisKKyNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrczsgfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk+
IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3M+KTsK
KyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgb25BYm9ydCgpOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3Q7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudCBvbkNvbXBsZXRlKCkuCisKK3ByaXZhdGU6CisgICAgSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25D
YWxsYmFja3M+KTsKKworICAgIE93blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzPiBtX2NhbGxiYWNrczsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKKworI2VuZGlmIC8vIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHlfaApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01TdHJpbmdMaXN0LmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRE9NU3RyaW5nTGlzdC5jcHAKaW5kZXggNGJlN2ZhYmEyOGY1OGI3ZDRmMjBj
YzdkYWRmNDVkNjA0MTE2NjY2MS4uZGM4MjMzMTM4NGNjNmZkZTNmMGIwZjEyNTQzMjI2ZGM3NDA3
NWY2NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01TdHJpbmdMaXN0LmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTVN0cmluZ0xpc3QuY3BwCkBAIC02MCw2
ICs2MCw4IEBAIHZvaWQgV2ViRE9NU3RyaW5nTGlzdDo6YXBwZW5kKGNvbnN0IFdlYlN0cmluZyYg
c3RyaW5nKQogCiB1bnNpZ25lZCBXZWJET01TdHJpbmdMaXN0OjpsZW5ndGgoKSBjb25zdAogewor
ICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBtX3ByaXZhdGUtPmxlbmd0aCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5jcHAKaW5kZXggOGM4ZTMwYTI0NDI1Zjk0YWY1MzdhOGUyMDVkNjg5YWJmMDUz
NTgzNi4uYmQzNjAwZjFkNjc5OGQzNmFkZTMwODBhYzAzNTI3MzI4NzY1YjBmZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMjksOCArMjksMTAgQEAK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHku
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFj
a3MuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJ
REJUcmFuc2FjdGlvbkltcGwuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCkBA
IC04NSw2ICs4NywxNSBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6cmVtb3ZlT2JqZWN0U3Rv
cmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFjawogICAgIG1fZGF0YWJhc2VC
YWNrZW5kLT5yZW1vdmVPYmplY3RTdG9yZShuYW1lLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGNhbGxiYWNrcykpOwogfQogCitXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBs
Ojp0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hv
cnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KQoreworICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBuYW1lTGlzdCA9IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4obmFtZXMpOworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gbV9kYXRh
YmFzZUJhY2tlbmQtPnRyYW5zYWN0aW9uKG5hbWVMaXN0LmdldCgpLCBtb2RlLCB0aW1lb3V0KTsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3
IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggNDZhNjYwOTY0Y2JjYmMyYjc0ZDU2
MzZhODMyNThkMWNlMjJmZjk3Yy4uOWFlNzRlMGM4Y2IzNzllZmE4MWU1MjE5ZmNiNjY1ZGM0NTQ0
ZDRmMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC0zNiw2
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOyB9CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7
CitjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIAogLy8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhl
ZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2UgY2xhc3Nlcy4KIGNsYXNz
IFdlYklEQkRhdGFiYXNlSW1wbCA6IHB1YmxpYyBXZWJJREJEYXRhYmFzZSB7CkBAIC01MSw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwogICAgIHZpcnR1YWwgV2ViSURCT2Jq
ZWN0U3RvcmUqIG9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hv
cnQgbW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOworICAgIHZpcnR1YWwgV2Vi
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogCiBwcml2YXRl
OgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
bV9kYXRhYmFzZUJhY2tlbmQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkZhY3RvcnlJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwu
Y3BwCmluZGV4IDVhYzg5ZjQwZjgzZDEyZGNjOWU0ZjM3ZTkxN2RhMzdmNzFhYTgxZjMuLjU2NGJl
MzY0OWM3NjA3MzI5ZTA1YjQ2NjhhYWVlMmFmM2IyOGFlODEgMTAwNzU1Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCkBAIC02Myw2ICs2MywxNSBAQCB2b2lkIFdlYklEQkZh
Y3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBk
ZXNjcmlwdGlvbgogICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgZGVzY3JpcHRp
b24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgb3JpZ2luLCAwKTsKIH0K
IAordm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKGNvbnN0
IFdlYlZlY3RvcjxpbnQ+JiBwZW5kaW5nSURzKQoreworICAgIFdURjo6VmVjdG9yPGludD4gaWRz
KHBlbmRpbmdJRHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBlbmRpbmdJ
RHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGlkc1tpXSA9IHBlbmRpbmdJRHNbaV07CisKKyAgICBt
X2lkYkZhY3RvcnlCYWNrZW5kLT5hYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMoaWRzKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAppbmRleCBjOWVjOWEzMmVl
ZmE4MTFiNzI5Yjg0NTNmNmE4ZjMzYzQ0OTRiMmE1Li5hZWFiNDc4NzhhMmQ5MjAzYjA2ZmUyMWRj
NTMzYzE2NDdjZmNhNzEyIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5o
CkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1w
bCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYsIFdlYkZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVuZGluZ1Ry
YW5zYWN0aW9ucyhjb25zdCBXZWJWZWN0b3I8aW50PiYgcGVuZGluZ0lEcyk7CiAKIHByaXZhdGU6
CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IG1f
aWRiRmFjdG9yeUJhY2tlbmQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY0ZGRjNTJjZjQwMmVh
ZmM2YzY1ZmM2NDM5MTNlNzU3NGZjYzkwNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmNwcApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzSW1wbC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbDo6V2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3NJbXBsKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+IGNhbGxiYWNrcykK
KyAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKK3sKK30KKworV2ViSURCVHJhbnNhY3Rpb25D
YWxsYmFja3NJbXBsOjp+V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKCkKK3sKK30KKwor
dm9pZCBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGw6Om9uQWJvcnQoKQoreworICAgIG1f
Y2FsbGJhY2tzLT5vbkFib3J0KCk7Cit9CisKK2ludCBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNr
c0ltcGw6OmlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jYWxsYmFja3MtPmlkKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3NJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk4YTY3OWE5NzhmZWMxZDMxYTRjMjJkNWMzNDQ1ZDY1
NWU2YTNmYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJh
bnNhY3Rpb25DYWxsYmFja3NJbXBsLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsX2gKKyNkZWZpbmUgV2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3NJbXBsX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5j
bHVkZSAiV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsKKworY2xhc3MgV2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3NJbXBsIDogcHVibGljIFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MgeworcHVibGljOgorICAgIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbChQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB+V2ViSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3NJbXBsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydCgpOworICAg
IHZpcnR1YWwgaW50IGlkKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGxf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBkYzk3MDJkZTk3ZDFmOTg1ZGUxYTAxMjRmZjg3MzYzNTljMjEyZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
CisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCisjaW5j
bHVkZSAiV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJREJUcmFuc2FjdGlvbkltcGw6Oldl
YklEQlRyYW5zYWN0aW9uSW1wbChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCkKKyAgICA6IG1fYmFja2VuZChiYWNrZW5kKQoreworfQorCitXZWJJREJU
cmFuc2FjdGlvbkltcGw6On5XZWJJREJUcmFuc2FjdGlvbkltcGwoKQoreworfQorCitpbnQgV2Vi
SURCVHJhbnNhY3Rpb25JbXBsOjptb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNrZW5k
LT5tb2RlKCk7Cit9CisKK1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJUcmFuc2FjdGlvbkltcGw6
Om9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKK3sKKyAgICBSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fYmFja2VuZC0+b2JqZWN0
U3RvcmUobmFtZSk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOworfQorCit2
b2lkIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6YWJvcnQoKQoreworICAgIG1fYmFja2VuZC0+YWJv
cnQoKTsKK30KKworaW50IFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6aWQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2JhY2tlbmQtPmlkKCk7Cit9CisKK3ZvaWQgV2ViSURCVHJhbnNhY3Rpb25JbXBs
OjpzZXRDYWxsYmFja3MoV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcykKK3sK
KyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+IGlkYkNhbGxiYWNrcyA9IElEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpOworICAgIG1fYmFja2Vu
ZC0+c2V0Q2FsbGJhY2tzKGlkYkNhbGxiYWNrcy5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzEwNDEyZjY2
YmQ3YWFkZjkxZGMwODExMDgzNTMxMmM0MDI0ZGM5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaApAQCAtMCwwICsxLDYxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJJREJUcmFuc2FjdGlvbkltcGxfaAorI2RlZmluZSBXZWJJREJUcmFu
c2FjdGlvbkltcGxfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRl
ICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsgfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworLy8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZv
ciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2UgY2xhc3Nlcy4KK2NsYXNzIFdlYklEQlRyYW5z
YWN0aW9uSW1wbDogcHVibGljIFdlYklEQlRyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJJ
REJUcmFuc2FjdGlvbkltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOworICAgIHZpcnR1YWwgfldlYklEQlRyYW5zYWN0aW9uSW1wbCgp
OyAgCisKKyAgICB2aXJ0dWFsIGludCBtb2RlKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJJREJP
YmplY3RTdG9yZSogb2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQoKTsKKyAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKTsKKworcHJp
dmF0ZToKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IG1fYmFja2VuZDsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIFdlYklEQlRyYW5zYWN0
aW9uSW1wbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64840</attachid>
            <date>2010-08-19 06:20:24 -0700</date>
            <delta_ts>2010-08-19 09:43:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44101-20100819142022.patch</filename>
            <type>text/plain</type>
            <size>96479</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NGQyZGJjYTE1MTMyNjU0YTQ2YTFkYmRlNWMyODI2YzZlMjFmMjI1Li5lZDllN2Zh
MzU1ZWM5OTQ5MzQ3ZjkzNDk4NDZmODg2OTU1NDJmMjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDgtMTcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBbSW5kZXhlZERCXSBBYm9y
dCBpZGxlIElEQlRyYW5zYWN0aW9ucyB3aGVuIHRoZSBKUyBjb250ZXh0IHRoZXkgd2VyZSBjcmVh
dGVkIGluIGZpbmlzaGVzIGV4ZWN1dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0MTAxCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2hhcmVkLmpzOgorICAgICAgICAodW5leHBlY3RlZEVycm9yQ2FsbGJhY2spOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NjcmlwdC10ZXN0cy90cmFuc2FjdGlvbi1iYXNp
Y3MuanM6IEFkZGVkLgorICAgICAgICAoYWJvcnRDYWxsYmFjayk6CisgICAgICAgIChjcmVhdGVU
cmFuc2FjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sOiBBZGRlZC4KKwog
MjAxMC0wOC0xOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgc2tpcCBjcmFzaGluZyB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKaW5kZXggZTUxMGJlMThjYmMx
ZDhjZGNiM2I3NzNmY2ViNWZiZGQwN2QwOGIwNi4uZTE0NWU4MzkwY2E3ODM3MmU0MzI0ODQxN2Yy
MWI1MGNjZTNjMmQ3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC0zNSw2ICszNSwxMiBAQCBmdW5jdGlvbiB2ZXJpZnlTdWNj
ZXNzRXZlbnQoZXZlbnQpCiAgICAgdmVyaWZ5RXZlbnRDb21tb24oZXZlbnQpOwogfQogCitmdW5j
dGlvbiB2ZXJpZnlBYm9ydEV2ZW50KGV2ZW50KQoreworICAgIGRlYnVnKCJBYm9ydCBldmVudCBm
aXJlZDoiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUiLCAiYWJvcnQi
KTsKK30KKwogZnVuY3Rpb24gdmVyaWZ5UmVzdWx0KHJlc3VsdCkKIHsKICAgICBzaG91bGRCZVRy
dWUoIidvbnN1Y2Nlc3MnIGluIHJlc3VsdCIpOwpAQCAtNTIsNCArNTgsMyBAQCBmdW5jdGlvbiB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjaygpCiAgICAgdmVyaWZ5RXJyb3JFdmVudChldmVudCk7CiAg
ICAgZG9uZSgpOwogfQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9zY3JpcHQtdGVzdHMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYjI5NWVhNDhjNWY1NjRiOTJhZTY0YTEyYWE0MzZlMzg2Zjc4OTdiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL3RyYW5zYWN0
aW9uLWJhc2ljcy5qcwpAQCAtMCwwICsxLDMxIEBACitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgdHJhbnNhY3Rpb24gYmFzaWNzLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IGFib3J0Q2FsbGJhY2soKQoreworICAgIHZlcmlmeUFib3J0RXZlbnQoZXZlbnQpOworICAgIGRv
bmUoKTsKK30KKworZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25DYWxsYmFjaygpCit7CisgICAg
dmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImV2ZW50LnJlc3VsdC50cmFuc2FjdGlvbigpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IGFib3J0Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNob3VsZEJlVHJ1
ZSgiJ2luZGV4ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERC
ID09IG51bGwiKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdu
YW1lJywgJ2Rlc2NyaXB0aW9uJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKKyAgICBy
ZXN1bHQub25zdWNjZXNzID0gY3JlYXRlVHJhbnNhY3Rpb25DYWxsYmFjazsKKyAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCit0ZXN0KCk7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzYwODM3NDBjNmNiYWRkZjBjMGIyN2VlMjYwNjdlZGU3YWE3NWQ0MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2lj
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rp
b24gYmFzaWNzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnaW5kZXhl
ZERCJyBpbiB3aW5kb3cgaXMgdHJ1ZQorUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQor
aW5kZXhlZERCLm9wZW4oJ25hbWUnLCAnZGVzY3JpcHRpb24nKQorUEFTUyAnb25zdWNjZXNzJyBp
biByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1Mg
J2Fib3J0JyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlz
IHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBm
aXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZl
bnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3Vy
Y2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQor
UEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBldmVudC50YXJnZXQgaXMg
dHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZl
bnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworZXZlbnQucmVzdWx0
LnRyYW5zYWN0aW9uKCkKK0Fib3J0IGV2ZW50IGZpcmVkOgorUEFTUyBldmVudC50eXBlIGlzICJh
Ym9ydCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFz
aWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNp
Y3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNzIzOGY2MjZmZmY1YzgwYWZkOTE1MTVhOTFkMGE0MWRhMmEy
NGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYmFzaWNzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy90cmFuc2FjdGlvbi1iYXNpY3MuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1OGM2ODBjZDgxYWZmMDk0YzNiNTg0Y2FlZmZkMjZjYzhmN2YyNjJlLi5mMzU3Zjc5NzAyYTc5
ODFjMmU0NTllNTA1ZGFkZDljOTZiY2UzM2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEwLTA4LTE3ICBB
bmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgW0luZGV4ZWREQl0gQWJvcnQgaWRsZSBJREJUcmFu
c2FjdGlvbnMgd2hlbiB0aGUgSlMgY29udGV4dCB0aGV5IHdlcmUgY3JlYXRlZCBpbiBmaW5pc2hl
cyBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NDEwMQorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gaW50cm9kdWNlcyB0aGUgVHJh
bnNhY3Rpb25Db29yZGluYXRvciwgd2hpY2ggd2lsbCBiZSB1c2VkCisgICAgICAgIHRvIHNjaGVk
dWxlIHRyYW5zYWN0aW9ucyBmb3IgZXhlY3V0aW9uLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5
OjpydW5TY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6Y2FsbEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmRpZExlYXZlU2NyaXB0Q29udGV4dCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9JREJUcmFuc2FjdGlvbik6Cisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6aGFzSURCRmFjdG9yeSk6CisgICAgICAgICog
c3RvcmFnZS9JREJBYm9ydEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJB
Ym9ydEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQWJvcnRFdmVudDo6SURC
QWJvcnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJBYm9ydEV2ZW50Ojp+SURCQWJvcnRF
dmVudCk6CisgICAgICAgICogc3RvcmFnZS9JREJBYm9ydEV2ZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWJvcnRFdmVudDo6aXNJREJBYm9ydEV2ZW50KToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0
cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNl
QmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
dHJhbnNhY3Rpb24pOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6SURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJGYWN0b3J5QmFja2VuZEltcGw6OmFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyk6CisgICAgICAg
ICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJQZW5kaW5n
VHJhbnNhY3Rpb25Nb25pdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphZGRQZW5kaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6
OmNsZWFyUGVuZGluZ1RyYW5zYWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5n
VHJhbnNhY3Rpb25Nb25pdG9yOjpwZW5kaW5nVHJhbnNhY3Rpb25zKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaDogQWRkZWQuCisgICAgICAgICogc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9u
QWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9u
Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3M6On5JREJUcmFuc2FjdGlvbkNh
bGxiYWNrcyk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp+
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjptb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphYm9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzcWxpdGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjppZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzZXRDYWxsYmFja3MpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6SURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjp+SURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yOjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphYm9ydCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvcjo6Y3JlYXRlKToKKwogMjAxMC0wOC0xOSAgQWxlamFuZHJvIEcuIENh
c3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVs
emUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDNkZmYyNWRlYzM2MWUyNGU5ODdmMGFiY2Y2MGQyZjRkNTk5OWQ5Y2EuLjI2NTU3
ZDdhYzUyMjY2NGQ1YTFlZjIwMWVhM2E2NDM2N2FjY2NlNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTY3LDYgKzM1Njcs
OCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvRmlsZUVudHJ5LmgnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRmxhZ3Mu
aCcsCisgICAgICAgICAgICAnc3RvcmFnZS9JREJBYm9ydEV2ZW50LmNwcCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9JREJBYm9ydEV2ZW50LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCQW55
LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuaCcsCiAgICAgICAgICAgICAnc3Rv
cmFnZS9JREJDYWxsYmFja3MuaCcsCkBAIC0zNjA5LDEzICszNjExLDIwIEBACiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgnLAorICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAnLAorICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oJywKICAgICAgICAgICAgICdzdG9yYWdl
L0lEQlJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlJlcXVlc3QuaCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwJywKICAgICAgICAgICAgICdz
dG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5z
YWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oJywKKyAg
ICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwJywKKyAgICAg
ICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oJywKKyAgICAgICAgICAgICdzdG9y
YWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdl
L0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VUYXNrLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNr
LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcCcsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggOGE3MmEzYTMyYjljYjMwNjIwOGVjYjM4
OTM3NjAwZDIzYmZlYzkyMC4uOWU0NGI1NmJmYjk2ZDFiOWNhY2IwMGY5NGYwZDEzOThiNTNjYWUz
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNTEsNiArNTEsNyBAQAog
I2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOEhUTUxEb2N1bWVudC5o
IgogI2luY2x1ZGUgIlY4SURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIlY4SURCVHJhbnNhY3Rpb24u
aCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4TG9jYXRpb24u
aCIKICNpbmNsdWRlICJWOE1lc3NhZ2VDaGFubmVsLmgiCkBAIC0zODIsNiArMzgzLDggQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9i
amVjdChFdmVudFRhcmdldCogdGEKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBp
ZiAoSURCUmVxdWVzdCogaWRiUmVxdWVzdCA9IHRhcmdldC0+dG9JREJSZXF1ZXN0KCkpCiAgICAg
ICAgIHJldHVybiB0b1Y4KGlkYlJlcXVlc3QpOworICAgIGlmIChJREJUcmFuc2FjdGlvbiogaWRi
VHJhbnNhY3Rpb24gPSB0YXJnZXQtPnRvSURCVHJhbnNhY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
IHRvVjgoaWRiVHJhbnNhY3Rpb24pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCAzZjcyMTEyYjUwNzhhZjEzYjIzMDNiYzVmMDI4
MzNlMmI0ZWYyYzdhLi5iMjM5NDY1YzFlMWY2NmRmYWNlODQ0ZmViMGI4YjBiOWU0ZDQ0MzFkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1
ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5o
IgpAQCAtNDU5LDcgKzQ2MSw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OnJ1blNj
cmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCwgYm9vbCBpc0luCiAgICAgfQogCiAg
ICAgLy8gUmVsZWFzZSB0aGUgc3RvcmFnZSBtdXRleCBpZiBhcHBsaWNhYmxlLgotICAgIHJlbGVh
c2VTdG9yYWdlTXV0ZXgoKTsKKyAgICBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKIAogICAgIGlm
IChoYW5kbGVPdXRPZk1lbW9yeSgpKQogICAgICAgICBBU1NFUlQocmVzdWx0LklzRW1wdHkoKSk7
CkBAIC01MzIsNyArNTM0LDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2FsbEZ1
bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgdjgKICAgICB9CiAKICAg
ICAvLyBSZWxlYXNlIHRoZSBzdG9yYWdlIG11dGV4IGlmIGFwcGxpY2FibGUuCi0gICAgcmVsZWFz
ZVN0b3JhZ2VNdXRleCgpOworICAgIGRpZExlYXZlU2NyaXB0Q29udGV4dCgpOwogCiAgICAgaWYg
KHY4OjpWODo6SXNEZWFkKCkpCiAgICAgICAgIGhhbmRsZUZhdGFsRXJyb3JJblY4KCk7CkBAIC02
NDEsMTYgKzY0MywyNCBAQCB2b2lkIFY4UHJveHk6OmRpc2Nvbm5lY3RGcmFtZSgpCiB7CiB9CiAK
LXZvaWQgVjhQcm94eTo6cmVsZWFzZVN0b3JhZ2VNdXRleCgpCit2b2lkIFY4UHJveHk6OmRpZExl
YXZlU2NyaXB0Q29udGV4dCgpCiB7CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBJZiB3ZSd2ZSBqdXN0IGxl
ZnQgYSBzY3JpcHQgY29udGV4dCBhbmQgaW5kZXhlZCBkYXRhYmFzZSBoYXMgYmVlbgorICAgIC8v
IGluc3RhbnRpYXRlZCwgd2UgbXVzdCBsZXQgaXRzIHRyYW5zYWN0aW9uIGNvb3JkaW5hdG9yIGtu
b3cgc28gaXQgY2FuIHRlcm1pbmF0ZQorICAgIC8vIGFueSBub3QteWV0LXN0YXJ0ZWQgdHJhbnNh
Y3Rpb25zLgorICAgIGlmIChJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpoYXNQZW5kaW5n
VHJhbnNhY3Rpb25zKCkpIHsKKyAgICAgICAgQVNTRVJUKHBhZ2UtPmdyb3VwKCkuaGFzSURCRmFj
dG9yeSgpKTsKKyAgICAgICAgcGFnZS0+Z3JvdXAoKS5pZGJGYWN0b3J5KCktPmFib3J0UGVuZGlu
Z1RyYW5zYWN0aW9ucyhJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpwZW5kaW5nVHJhbnNh
Y3Rpb25zKCkpOworICAgICAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpjbGVhclBl
bmRpbmdUcmFuc2FjdGlvbnMoKTsKKyAgICB9CiAgICAgLy8gSWYgd2UndmUganVzdCBsZWZ0IGEg
dG9wIGxldmVsIHNjcmlwdCBjb250ZXh0IGFuZCBsb2NhbCBzdG9yYWdlIGhhcyBiZWVuCiAgICAg
Ly8gaW5zdGFudGlhdGVkLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGFueSBzdG9yYWdlIGxvY2tzIGhh
dmUgYmVlbiBmcmVlZC4KICAgICAvLyBQZXIgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9P
dmVydmlldy5odG1sI3N0b3JhZ2UtbXV0ZXgKICAgICBpZiAobV9yZWN1cnNpb24gIT0gMCkKICAg
ICAgICAgcmV0dXJuOwotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm47CiAgICAgaWYgKHBhZ2UtPmdyb3VwKCkuaGFzTG9jYWxT
dG9yYWdlKCkpCiAgICAgICAgIHBhZ2UtPmdyb3VwKCkubG9jYWxTdG9yYWdlKCktPnVubG9jaygp
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCAwZWVmYTIyYjEyYjRjM2VmMDM4ZjVmYjhjZTgy
ZGRiMGZhMjY2ZDM5Li43YjRkNmY2Y2RlOTE5MTBkMTQ2MzZjNzM2NDM3MjMyZjQzZjJlOWE0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtMzM4LDkgKzMzOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZlQWNjZXNzVG8oRnJhbWUqIHRhcmdl
dCwgRGVsYXlSZXBvcnRpbmcgZGVsYXkpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgLy8gSWYg
bV9yZWN1cnNpb25Db3VudCBpcyAwLCBsZXQgTG9jYWxTdG9yYWdlIGtub3cgc28gd2UgY2FuIHJl
bGVhc2UKLSAgICAgICAgLy8gdGhlIHN0b3JhZ2UgbXV0ZXguCi0gICAgICAgIHZvaWQgcmVsZWFz
ZVN0b3JhZ2VNdXRleCgpOworICAgICAgICB2b2lkIGRpZExlYXZlU2NyaXB0Q29udGV4dCgpOwog
CiAgICAgICAgIHZvaWQgcmVzZXRJc29sYXRlZFdvcmxkcygpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5k
ZXggN2ZhNTNmMzIxZjFiMTQ1Yjc4ODdhYjQ3MTZhMGViNmI0NTg0ZmRkMi4uZWZmZDJhMjFhYzI3
YjlkMGI1MWQxNmUzNGU5MjRjNmQwODhjNGZiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMTc0LDYg
KzE3NCwxMCBAQCBJREJSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9JREJSZXF1ZXN0KCkKIHsKICAg
ICByZXR1cm4gMDsKIH0KK0lEQlRyYW5zYWN0aW9uKiBFdmVudFRhcmdldDo6dG9JREJUcmFuc2Fj
dGlvbigpCit7CisgICAgcmV0dXJuIDA7Cit9CiAjZW5kaWYKIAogYm9vbCBFdmVudFRhcmdldDo6
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5k
ZXggYmY2YTljMmE3YWViZGYzMmFkZjA5ZTU3Mjk4YTFhMjRmYWMzZDQ4Mi4uYjI5ODVmN2EwOTll
MDgzN2U0Y2Y1NjIzZmVlOWJmODNhNjY1Yjk4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01MCw2ICs1MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGaWxlUmVhZGVyOwogICAgIGNsYXNz
IEZpbGVXcml0ZXI7CiAgICAgY2xhc3MgSURCUmVxdWVzdDsKKyAgICBjbGFzcyBJREJUcmFuc2Fj
dGlvbjsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNz
IE5vdGlmaWNhdGlvbjsKQEAgLTEyOSw2ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAgICAgdmlydHVhbCBJREJSZXF1ZXN0
KiB0b0lEQlJlcXVlc3QoKTsKKyAgICAgICAgdmlydHVhbCBJREJUcmFuc2FjdGlvbiogdG9JREJU
cmFuc2FjdGlvbigpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCmluZGV4
IDZhMzUxOGVkNmRmMzIwOTExNDk5Mzk1NzFjZGI1NDVjOTI2NGVmYmEuLmZjYWQ3NzNkZTMzNGVk
OGQxNmM1MTdjMjI1M2JlMTJlZjNlMmU2ZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTc0LDYgKzc0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgICAgIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5KCk7CisgICAg
ICAgIGJvb2wgaGFzSURCRmFjdG9yeSgpIHsgcmV0dXJuIG1fZmFjdG9yeUJhY2tlbmQ7IH0KICNl
bmRpZgogCiAgICAgICAgIHZvaWQgYWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldvcmxk
KiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmLApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkFib3J0RXZlbnQuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkFib3J0RXZl
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIxNzYwZjg5M2YwNzM5YTNjMjcyNzhhYmQ5ZTYxMmI5MTBiZDE1
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQWJvcnRFdmVudC5jcHAK
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJBYm9y
dEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzUmVmUHRyPElEQkFib3J0RXZlbnQ+IElEQkFib3J0RXZlbnQ6OmNyZWF0ZSgpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBYm9ydEV2ZW50KCkpOworfQorCitJREJBYm9ydEV2
ZW50OjpJREJBYm9ydEV2ZW50KCkKKyAgICA6IElEQkV2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2
ZW50LCAwKSAvLyBGSVhNRTogc2V0IHRoZSBzb3VyY2UgdG8gdGhlIHRyYW5zYWN0aW9uCit7Cit9
CisKK0lEQkFib3J0RXZlbnQ6On5JREJBYm9ydEV2ZW50KCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJBYm9y
dEV2ZW50LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQWJvcnRFdmVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJk
YzIyMDI0Mzk2YTg1MGVjMGQ1MGViYmVhOWM0N2UyMDAwNTExM2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCQWJvcnRFdmVudC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIElEQkFib3J0RXZlbnRfaAorI2RlZmluZSBJREJBYm9ydEV2ZW50X2gKKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCRXZlbnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkFib3J0RXZl
bnQgOiBwdWJsaWMgSURCRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QkFib3J0RXZlbnQ+IGNyZWF0ZSgpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFsbG93IGNyZWF0
aW9uIG9mIHRoZXNlIGV2ZW50cyBmcm9tIEpTLgorICAgIHZpcnR1YWwgfklEQkFib3J0RXZlbnQo
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0lEQkFib3J0RXZlbnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisKK3ByaXZhdGU6CisgICAgSURCQWJvcnRFdmVudCgpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNl
bmRpZiAvLyBJREJBYm9ydEV2ZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGIwMDY5
NWJkMTE1MTI4MWFlYTVkNDBiOGZkM2Q2MWY5MjdkZmM1ZjAuLjFkODhiMzRkZDMyZmYyOGUxOTYy
OWRkMTcyZGM5MGJjY2VkMDBiMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtNzUsOCAr
NzUsMTAgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICAvLyBXZSBuZWVkIHRvIGNyZWF0
ZSBhIG5ldyB0cmFuc2FjdGlvbiBzeW5jaHJvbm91c2x5LiBMb2NrcyBhcmUgYWNxdWlyZWQgYXN5
bmNocm9ub3VzbHkuIE9wZXJhdGlvbnMKICAgICAvLyBjYW4gYmUgcXVldWVkIGFnYWluc3QgdGhl
IHRyYW5zYWN0aW9uIGF0IGFueSBwb2ludC4gVGhleSB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBhcyBz
b29uIGFzIHRoZQogICAgIC8vIGFwcHJvcHJpYXRlIGxvY2tzIGhhdmUgYmVlbiBhY3F1aXJlZC4K
KyAgICAvLyBBbHNvIG5vdGUgdGhhdCBlYWNoIGJhY2tlbmQgb2JqZWN0IGNvcnJlc3BvbmRzIHRv
IGV4YWN0bHkgb25lIElEQlRyYW5zYWN0aW9uIG9iamVjdC4KICAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBtX2JhY2tlbmQtPnRy
YW5zYWN0aW9uKHN0b3JlTmFtZXMsIG1vZGUsIHRpbWVvdXQpOwotICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRy
YW5zYWN0aW9uQmFja2VuZC5yZWxlYXNlKCksIHRoaXMpOworICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRyYW5z
YWN0aW9uQmFja2VuZCwgdGhpcyk7CisgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFj
a3ModHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBl
NTUwZTE4Njk0ZTUwMzMyODA1N2FmMjMwOTYwZjExMDQ5MWQzNDQ1Li4xMzdlZmEzNjhjYTNhZTM0
NjIwODdlNjU0NzBkY2FlZTA2YTA1ODZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRl
bWVudC5oIgogCkBAIC04MywxMCArODQsMTEgQEAgc3RhdGljIGJvb2wgc2V0TWV0YURhdGEoU1FM
aXRlRGF0YWJhc2UqIHNxbGl0ZURhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFBhc3NPd25QdHI8U1FMaXRlRGF0YWJhc2U+IHNxbGl0ZURhdGFiYXNlKQorSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NPd25QdHI8U1FMaXRlRGF0YWJhc2U+IHNxbGl0
ZURhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvcikKICAgICA6
IG1fc3FsaXRlRGF0YWJhc2Uoc3FsaXRlRGF0YWJhc2UpCiAgICAgLCBtX25hbWUobmFtZSkKICAg
ICAsIG1fdmVyc2lvbigiIikKKyAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGlu
YXRvcikKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwoKSk7CiAKQEAgLTE1MCwxMSArMTUy
LDkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZW1vdmVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SUQKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcygp
OwogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCosIHVuc2lnbmVkIHNo
b3J0LCB1bnNpZ25lZCBsb25nKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qq
IG9iamVjdFN0b3JlcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0
KQogewotICAgIC8vIEZJWE1FOiBBc2sgdGhlIHRyYW5zYWN0aW9uIG1hbmFnZXIgZm9yIGEgbmV3
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci0+Y3JlYXRl
VHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVzLCBtb2RlLCB0aW1lb3V0KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5k
ZXggNjBiZWMxZjc4Nzg3Y2ExZWY5Y2JmNDgzMDVhOWM4OWYzNjVjYTM5Ni4uYmVmYWZkYzMxNjFl
MDI2NWJlMTc5YzVmMTU4MTViY2NlM2I2YTc4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oCkBAIC0zNSwxMyArMzUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogY2xhc3MgU1FMaXRlRGF0YWJh
c2U7CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZURhdGFiYXNlPiBkYXRhYmFzZSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZURh
dGFiYXNlPiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0b3Ip
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZElt
cGwobmFtZSwgZGVzY3JpcHRpb24sIGRhdGFiYXNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgZGF0YWJhc2Us
IGNvb3JkaW5hdG9yKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZElt
cGwoKTsKIApAQCAtNTgsMTYgKzU5LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNl
QmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBQYXNzT3duUHRyPFNRTGl0ZURhdGFiYXNlPiBkYXRhYmFzZSk7CisgICAgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFBhc3NPd25QdHI8U1FMaXRlRGF0YWJhc2U+IGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKik7CiAKICAgICBPd25QdHI8U1FMaXRlRGF0YWJhc2U+IG1fc3FsaXRlRGF0YWJhc2U7
Ci0KICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX2Rlc2NyaXB0aW9uOwogICAgIFN0
cmluZyBtX3ZlcnNpb247CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiA+IE9iamVjdFN0b3JlTWFwOwogICAgIE9iamVj
dFN0b3JlTWFwIG1fb2JqZWN0U3RvcmVzOworCisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aAppbmRleCBhYzEyYmYxM2M4OGJlM2Q2Zjc5NjgzZGM3YTUzMmUyZTUyYjJmMTMxLi45ZTM1MzY5
ODE4M2U2MGViMmJlZWMzMTBiYzQ4Mjc5ZjdiOWY0ZDkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEZy
YW1lOwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOworY2xhc3MgSURC
VHJhbnNhY3Rpb25DYWxsYmFja3M7CiAKIC8vIFRoaXMgY2xhc3MgaXMgc2hhcmVkIGJ5IElEQkRh
dGFiYXNlIChhc3luYykgYW5kIElEQkRhdGFiYXNlU3luYyAoc3luYykuCiAvLyBUaGlzIGlzIGlt
cGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlQmFja2VuZEltcGwgYW5kIG9wdGlvbmFsbHkgb3RoZXJz
IChpbiBvcmRlciB0byBwcm94eQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcAppbmRleCA5MDU3MjZmYzk4YjcyOGI0MGJiZjk4M2Y2OGI1YzJkZGU3MjI4ZDNjLi5mMjky
MTM4N2E5MDIxNWM4NWYyMjQ4NGE4YzI5NDhmZmY1YWVjYzkyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTQyLDcgKzQzLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZhY3Rv
cnlCYWNrZW5kSW1wbCgpCitJREJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZhY3RvcnlCYWNrZW5k
SW1wbCgpIAorICAgIDogbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3I6OmNyZWF0ZSgpKQogewogfQogCkBAIC0xMDcsMTEgKzEwOSwxNyBAQCB2b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlKG5hbWUsIGRlc2NyaXB0aW9uLCBzcWxpdGVEYXRhYmFzZS5yZWxlYXNlKCkp
OworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgZGVzY3JpcHRpb24sIHNxbGl0ZURh
dGFiYXNlLnJlbGVhc2UoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpKTsKICAgICBj
YWxsYmFja3MtPm9uU3VjY2VzcyhkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgIG1fZGF0YWJh
c2VCYWNrZW5kTWFwLnNldChuYW1lLCBkYXRhYmFzZUJhY2tlbmQucmVsZWFzZSgpKTsKIH0KIAor
dm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyhjb25z
dCBWZWN0b3I8aW50PiYgcGVuZGluZ0lEcykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHBlbmRpbmdJRHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdHJhbnNhY3Rpb25Db29yZGluYXRv
ci0+YWJvcnQocGVuZGluZ0lEcy5hdChpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGU4N2VhMzllY2ZjMmVkMDZiY2NkNDkyYzJhMmQ0MDBl
OGJhYmE2ZWQuLmM5YTMzZGEwMWY0Y2JhZmFjOTlhYzNjMDMxMTNmMWJmZGRlNmVlOGUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTM3LDcgKzM3LDkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NU3RyaW5nTGlzdDsKKwogY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDsKK2NsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAKIGNs
YXNzIElEQkZhY3RvcnlCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZSB7CiBwdWJsaWM6CkBAIC00OCwxMiArNTAsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSopOworICAgIHZpcnR1
YWwgdm9pZCBhYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMoY29uc3QgVmVjdG9yPGludD4mIHBlbmRp
bmdJRHMpOwogCiBwcml2YXRlOgogICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+ID4g
SURCRGF0YWJhc2VCYWNrZW5kTWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcCBtX2RhdGFi
YXNlQmFja2VuZE1hcDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiAgICAgLy8gV2Ugb25seSBjcmVhdGUgb25lIGluc3Rh
bmNlIG9mIHRoaXMgY2xhc3MgYXQgYSB0aW1lLgogICAgIHN0YXRpYyBJREJGYWN0b3J5QmFja2Vu
ZEltcGwqIGlkYkZhY3RvcnlCYWNrZW5kSW1wbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYmExODA5ODZhZmVlZjZhYTI4MjhiYTcxNjE1NmMw
ZDUxNzlmMmNjOC4uYzA1MmJjMjkwMmYxYjRkZWQwN2RhZTY5NzkyNjliODZlMGFjNDZiOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtNTEsNiArNTIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVuZGluZ1RyYW5z
YWN0aW9ucyhjb25zdCBWZWN0b3I8aW50PiYgaWRzKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0
aW9uTW9uaXRvci5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9u
aXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAyNjA5OTA4YWI1N2NkYzAxZDM5ODY5NWViMjY1MzYzMjM2
MWE5YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJQZW5kaW5nVHJhbnNh
Y3Rpb25Nb25pdG9yLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZlY3Rvcjxp
bnQ+KiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjptX2lkcyA9IDA7CisKK2Jvb2wgSURC
UGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6aGFzUGVuZGluZ1RyYW5zYWN0aW9ucygpCit7Cisg
ICAgcmV0dXJuIG1faWRzICYmIG1faWRzLT5zaXplKCk7Cit9CisKK3ZvaWQgSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvcjo6YWRkUGVuZGluZ1RyYW5zYWN0aW9uKGludCBpZCkKK3sKKyAgICBp
ZiAoIW1faWRzKQorICAgICAgICBtX2lkcyA9IG5ldyBWZWN0b3I8aW50PigpOworICAgIG1faWRz
LT5hcHBlbmQoaWQpOworfQorCit2b2lkIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJl
bW92ZVBlbmRpbmdUcmFuc2FjdGlvbihpbnQgaWQpCit7CisgICAgbV9pZHMtPnJlbW92ZShpZCk7
CisgICAgaWYgKCFtX2lkcy0+c2l6ZSgpKSB7CisgICAgICAgIGRlbGV0ZSBtX2lkczsKKyAgICAg
ICAgbV9pZHMgPSAwOworICAgIH0KK30KKwordm9pZCBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25p
dG9yOjpjbGVhclBlbmRpbmdUcmFuc2FjdGlvbnMoKQoreworICAgIGlmICghbV9pZHMpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faWRzLT5jbGVhcigpOworICAgIGRlbGV0ZSBtX2lkczsKKyAg
ICBtX2lkcyA9IDA7Cit9CisKK2NvbnN0IFZlY3RvcjxpbnQ+JiBJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yOjpwZW5kaW5nVHJhbnNhY3Rpb25zKCkKK3sKKyAgICByZXR1cm4gKm1faWRzOwor
fQorCit9OworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCBiL1dlYkNvcmUv
c3RvcmFnZS9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBlODMz
YWZiMjIxODUzYmQ5OWIzOTM4NDE1MTYwZjNkY2M3YzZmNgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgKQEAgLTAsMCArMSw2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcl9oCisjZGVm
aW5lIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3JfaAorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyBrZWVwcyB0
cmFjayBvZiB0aGUgdHJhbnNhY3Rpb25zIGNyZWF0ZWQgZHVyaW5nIHRoZSBjdXJyZW50CisvLyBK
YXZhc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LiBBIHRyYW5zYWN0aW9uIGlzICdwZW5kaW5nJyBp
ZiBubyBhc3luY2hyb25vdXMKKy8vIG9wZXJhdGlvbiBpcyBjdXJyZW50bHkgcXVldWVkIGZvciBp
dCAoZS5nLiBhbiBJREJPYmplY3RTdG9yZTo6cHV0KCkgb3Igc2ltaWxhcikuCisvLyBBbGwgcGVu
ZGluZyB0cmFuc2FjdGlvbnMgYXJlIGFib3J0ZWQgYXMgc29vbiBhcyBleGVjdXRpb24gcmV0dXJu
cyBmcm9tCisvLyB0aGUgc2NyaXB0IGVuZ2luZS4KKy8vCisvLyBGSVhNRTogbW92ZSB0aGUgdmVj
dG9yIG9mIHRyYW5zYWN0aW9uIElEcyB0byBUTFMuIEtlZXBpbmcgaXQgc3RhdGljCisvLyB3aWxs
IG5vdCB3b3JrIG9uY2Ugd2UgYWRkIHN1cHBvcnQgZm9yIHdvcmtlcnMuIEFub3RoZXIgcG9zc2li
bGUKKy8vIHNvbHV0aW9uIGlzIHRvIGtlZXAgdGhlIHZlY3RvciBpbiB0aGUgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC4KK2NsYXNzIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IgOiBwdWJsaWMg
Tm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGhhc1BlbmRpbmdUcmFuc2Fj
dGlvbnMoKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRQZW5kaW5nVHJhbnNhY3Rpb24oaW50IGlkKTsK
KyAgICBzdGF0aWMgdm9pZCByZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24oaW50IGlkKTsKKyAgICBz
dGF0aWMgdm9pZCBjbGVhclBlbmRpbmdUcmFuc2FjdGlvbnMoKTsKKyAgICBzdGF0aWMgY29uc3Qg
VmVjdG9yPGludD4mIHBlbmRpbmdUcmFuc2FjdGlvbnMoKTsKKworcHJpdmF0ZToKKyAgICBJREJQ
ZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yKCk7CisKKyAgICBzdGF0aWMgVmVjdG9yPGludD4qIG1f
aWRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDFiYzA1OWEzNzdmMGE3ZDBlMGRj
NzlhNzJhZDBkOTk3ZDEzYzI0MzcuLjRlOTMzNzhkZGI3YmViMmIyYjg3NTM0YmU2N2IzNzRkZDMz
ODQ5NTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMSwzICsxLDI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAK
QEAgLTUsOSArMzAsMTEgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJJREJBYm9ydEV2ZW50LmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlv
bk1vbml0b3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTE2LDcgKzQzLDEwIEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFu
c2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRy
CiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChi
YWNrZW5kKQogICAgICwgbV9kYXRhYmFzZShkYikKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKKyAg
ICAsIG1fdGltZXIodGhpcywgJklEQlRyYW5zYWN0aW9uOjp0aW1lckZpcmVkKQogeworICAgIElE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmFkZFBlbmRpbmdUcmFuc2FjdGlvbihtX2JhY2tl
bmQtPmlkKCkpOwogfQogCiBJREJUcmFuc2FjdGlvbjo6fklEQlRyYW5zYWN0aW9uKCkKQEAgLTUw
LDYgKzgwLDIyIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlRyYW5zYWN0aW9uOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJv
cnQoKQoreworICAgIGlmICghbV9zdG9wcGVkKSB7CisgICAgICAgIG1fc2VsZlJlZiA9IHRoaXM7
CisgICAgICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KDApOworICAgIH0KKyAgICAvLyBSZWxlYXNlIHRoZSBiYWNrZW5kIGFzIGl0IGhvbGRzIGEgKGNp
cmN1bGFyKSByZWZlcmVuY2UgYmFjayB0byB1cy4KKyAgICBtX2JhY2tlbmQuY2xlYXIoKTsKK30K
KworaW50IElEQlRyYW5zYWN0aW9uOjppZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmFja2Vu
ZC0+aWQoKTsKK30KKwogYm9vbCBJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCgpIGNvbnN0CiB7
CiAgICAgLy8gV2UgbWF5IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2FjdGlvbiBzbyB3ZSBj
YW5ub3Qgc3VzcGVuZCBvdXIgb2JqZWN0LgpAQCAtNTcsNiArMTAzLDE1IEBAIGJvb2wgSURCVHJh
bnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9p
ZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCit7CisgICAgaWYgKCFtX3N0b3BwZWQpIHsKKyAgICAg
ICAgLy8gVGhlIGRvY3VtZW50IGlzIGdldHRpbmcgZGV0YWNoZWQuIEFib3J0IQorICAgICAgICBt
X3N0b3BwZWQgPSB0cnVlOworICAgICAgICBtX2JhY2tlbmQtPmFib3J0KCk7CisgICAgfQorfQor
CiBFdmVudFRhcmdldERhdGEqIElEQlRyYW5zYWN0aW9uOjpldmVudFRhcmdldERhdGEoKQogewog
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CkBAIC02Nyw2ICsxMjIsMTQgQEAgRXZlbnRU
YXJnZXREYXRhKiBJREJUcmFuc2FjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKICAgICBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uOjp0aW1l
ckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uPiogdHJhbnNhY3Rpb24pCit7CisgICAgQVNTRVJU
KG1fc2VsZlJlZik7CisKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHNlbGZSZWYgPSBtX3Nl
bGZSZWYucmVsZWFzZSgpOworICAgIGRpc3BhdGNoRXZlbnQoSURCQWJvcnRFdmVudDo6Y3JlYXRl
KCkpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMmUzMTY3YzY4MzhkN2YwNzFiZTBmZGQyYmJhMDUxODE1
YjYwYzI2Ni4uM2M3ZjlkZDRiYjZlNTQ2YTYwMWI3NWViNWZkYjhhNzJjMDZkMGM3ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvV2ViQ29yZS9zdG9y
YWdlL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTM0LDEzICszNCwxNiBAQAogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURCT2JqZWN0
U3RvcmU7CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIElEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzLCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkRhdGFiYXNlKiBkYikKICAgICB7
IApAQCAtNjMsMTIgKzY2LDIwIEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGNvbXBsZXRlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHRpbWVvdXQpOwogCisgICAgLy8gSURCVHJhbnNhY3Rpb25DYWxsYmFja3MKKyAgICB2aXJ0dWFs
IHZvaWQgb25BYm9ydCgpOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3Q7CisKICAgICAvLyBF
dmVudFRhcmdldAogICAgIHZpcnR1YWwgSURCVHJhbnNhY3Rpb24qIHRvSURCVHJhbnNhY3Rpb24o
KSB7IHJldHVybiB0aGlzOyB9CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCk7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPjo6
cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+OjpkZXJl
ZjsKIAogcHJpdmF0ZToKICAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBJREJEYXRhYmFz
ZSopOwpAQCAtNzksOSArOTAsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPElEQlRy
YW5zYWN0aW9uPiopOworCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAg
ICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CisKKyAgICBib29sIG1fc3RvcHBlZDsK
KyAgICBUaW1lcjxJREJUcmFuc2FjdGlvbj4gbV90aW1lcjsKKyAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IG1fc2VsZlJlZjsgLy8gVGhpcyBpcyBzZXQgdG8gdXMgaWZmIHRoZXJlJ3MgYW4gZXZl
bnQgcGVuZGluZy4KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWM5NTRiOTkw
YTJlY2JlNDg3ZjhlNDQ1YzI5ZGY4MWVkMWVmZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC0wLDAgKzEsNDMgQEAK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlcywgdW5z
aWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0LCBpbnQgaWQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKG9iamVjdFN0b3Jl
cywgbW9kZSwgdGltZW91dCwgaWQpKTsKK30KKworSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChET01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZXMsIHVu
c2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCwgaW50IGlkKQorICAgIDog
bV9vYmplY3RTdG9yZU5hbWVzKG9iamVjdFN0b3JlcykKKyAgICAsIG1fbW9kZShtb2RlKQorICAg
ICwgbV90aW1lb3V0KHRpbWVvdXQpCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9hYm9ydGVkKGZh
bHNlKQoreworfQorCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2No
ZWR1bGVUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphYm9ydCgpCit7CisgICAgbV9hYm9ydGVk
ID0gdHJ1ZTsKKyAgICBtX2NhbGxiYWNrcy0+b25BYm9ydCgpOworfQorCit9OworCisjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGIyNDE2OTUwNTQwMzIyZGFkZmFlZGNiMzVj
OTBhOGNkMjBkMWVjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsX2gKKyNkZWZpbmUgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRPTVN0cmlu
Z0xpc3QuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVh
dGUoRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNp
Z25lZCBsb25nIHRpbWVvdXQsIGludCBpZCk7CisgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4pOworICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOworICAgIHZpcnR1YWwgaW50
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFj
a3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBtX2NhbGxiYWNrcyA9IGNh
bGxiYWNrczsgfQorCitwcml2YXRlOgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoRE9N
U3RyaW5nTGlzdCogb2JqZWN0U3RvcmVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBs
b25nIHRpbWVvdXQsIGludCBpZCk7CisKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9vYmpl
Y3RTdG9yZU5hbWVzOworICAgIHVuc2lnbmVkIHNob3J0IG1fbW9kZTsKKyAgICB1bnNpZ25lZCBs
b25nIG1fdGltZW91dDsKKyAgICBpbnQgbV9pZDsKKyAgICBib29sIG1fYWJvcnRlZDsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
KyNlbmRpZiAvLyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBkZmYyYmQ3Zjk0M2Rl
ZDg0OTQ0NDk0YmZmNTY1ZDE2YjQ4OTkxNWQ0Li4zOTY1MWYxMDE3NWRlNzA2MGQwNDVhOWYwYzYy
MzkzYzZhZTM3NWRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKK2NsYXNzIElEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzOwogY2xhc3MgU1FMaXRlRGF0YWJhc2U7CiAKIC8vIFRoaXMgY2xhc3MgaXMg
c2hhcmVkIGJ5IElEQlRyYW5zYWN0aW9uIChhc3luYykgYW5kIElEQlRyYW5zYWN0aW9uU3luYyAo
c3luYykuCkBAIC01MSw3ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNo
b3J0IG1vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVGFzayhQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGFib3J0KCkgPSAwOwotICAgIHZpcnR1YWwgU1FMaXRlRGF0YWJhc2UqIHNxbGl0ZURhdGFi
YXNlKCkgPSAwOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb25DYWxsYmFja3MuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM4MTgxZmNjZjNjYmQxMDQ3ZTIyMmYxOGVmYThjM2Y2NjNjZGQz
M2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkNhbGxiYWNr
c19oCisjZGVmaW5lIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzX2gKKworI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KCkgPSAwOworICAgIHZpcnR1YWwg
aW50IGlkKCkgY29uc3QgPSAwOworICAgIC8vIEZJWE1FOiBhZGQgdGhlIHJlc3QKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisKKyNlbmRpZiAvLyBJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGU0ZDI1NjgzOTM3YTdkMTk3ZDhlODUxY2Q5ZTM3NjFmYzJkNGVi
MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IoKSAKKyAgICA6IG1fbmV4dElEKDApCit7Cit9CisKK0lEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6On5JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkKK3sKK30KKwor
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3I6OmNyZWF0ZVRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3Jl
cywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KQoreworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVjdFN0b3JlcywgbW9kZSwgdGltZW91dCwg
KyttX25leHRJRCk7CisgICAgbV90cmFuc2FjdGlvblF1ZXVlLmFkZCh0cmFuc2FjdGlvbi5nZXQo
KSk7CisgICAgbV9pZE1hcC5hZGQobV9uZXh0SUQsIHRyYW5zYWN0aW9uKTsKKyAgICByZXR1cm4g
dHJhbnNhY3Rpb24ucmVsZWFzZSgpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmFib3J0KGludCBpZCkKK3sKKyAgICBBU1NFUlQobV9pZE1hcC5jb250YWlucyhpZCkpOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0g
bV9pZE1hcC5nZXQoaWQpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CisgICAgbV90cmFuc2Fj
dGlvblF1ZXVlLnJlbW92ZSh0cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgbV9pZE1hcC5yZW1vdmUo
aWQpOworICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgIC8vIEZJWE1FOiB0aGlzIHdpbGwg
Y2hhbmdlIG9uY2Ugd2UgaGF2ZSB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcnVubmluZy4KK30KKwor
fTsKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg1NmFkN2U0ZTM2NzQy
ZTdiMjZlM2E0ZGFmOTRlYWQ2ZDM0MzFlMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcl9oCisjZGVmaW5lIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3JfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNs
dWRlICJET01TdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzOworCisvLyBUaGlzIGNsYXNzIG1hbmFnZXMgdHJhbnNhY3Rpb25zIGFzIGZvbGxvd3Mu
IFJlcXVlc3RzIGZvciBuZXcgdHJhbnNhY3Rpb25zIGFyZQorLy8gYWx3YXlzIHNhdGlzZmllZCBh
bmQgdGhlIG5ldyB0cmFuc2FjdGlvbiBpcyBwbGFjZWQgaW4gYSBxdWV1ZS4KKy8vIFRyYW5zYWN0
aW9ucyBhcmUgbm90IGFjdHVhbGx5IHN0YXJ0ZWQgdW50aWwgdGhlIGZpcnN0IG9wZXJhdGlvbiBp
cyBpc3N1ZWQuCisvLyBFYWNoIHRyYW5zYWN0aW9uIGV4ZWN1dGVzIGluIGEgc2VwYXJhdGUgdGhy
ZWFkIGFuZCBpcyBjb21taXR0ZWQgYXV0b21hdGljYWxseQorLy8gd2hlbiB0aGVyZSBhcmUgbm8g
bW9yZSBvcGVyYXRpb25zIGlzc3VlZCBpbiBpdHMgY29udGV4dC4KKy8vIFdoZW4gc3RhcnRpbmcs
IGEgdHJhbnNhY3Rpb24gd2lsbCBhdHRlbXB0IHRvIGxvY2sgYWxsIHRoZSBvYmplY3Qgc3RvcmVz
IGluIGl0cworLy8gc2NvcGUuIElmIHRoaXMgZG9lcyBub3QgaGFwcGVuIHdpdGhpbiBhIGdpdmVu
IHRpbWVvdXQsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisvLyBUaGUgQ29vcmRpbmF0b3IgbWFp
bnRhaW5zIGEgcG9vbCBvZiB0aHJlYWRzLiBJZiB0aGVyZSBhcmUgbm8gdGhyZWFkcyBhdmFpbGFi
bGUKKy8vIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGluIHRoZSBxdWV1ZSB3aWxsIGhhdmUgdG8gd2Fp
dCB1bnRpbCBhIHRocmVhZCBiZWNvbWVzCisvLyBhdmFpbGFibGUuCitjbGFzcyBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3I+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yKCkpOyB9CisgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigp
OworCisgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0
ZVRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlcywgdW5zaWduZWQgc2hvcnQg
bW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKKyAgICB2b2lkIGFib3J0KGludCB0cmFuc2Fj
dGlvbklkKTsKKworcHJpdmF0ZToKKyAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CisK
KyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqPiBtX3RyYW5z
YWN0aW9uUXVldWU7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gPiBJZFRvVHJhbnNhY3Rpb25NYXA7CisgICAgSWRUb1RyYW5z
YWN0aW9uTWFwIG1faWRNYXA7CisgICAgaW50IG1fbmV4dElEOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRp
ZiAvLyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDFiNGM3NDZi
MDQ5OTAxMWYyODcyODk4YWJiMTNlMmM1MWIzMWFlNTUuLjgyMTMyOGQ5Mzg2NjE0ODI0ZTI3OGIx
NzQ4NDgwZWE4NWE5NTE2ZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEwLTA4
LTE3ICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgW0luZGV4ZWREQl0gQWJvcnQgaWRsZSBJ
REJUcmFuc2FjdGlvbnMgd2hlbiB0aGUgSlMgY29udGV4dCB0aGV5IHdlcmUgY3JlYXRlZCBpbiBm
aW5pc2hlcyBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NDEwMQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6OnRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRmFjdG9yeS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJGYWN0b3J5OjphYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSURCVHJhbnNhY3Rpb246On5XZWJJREJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlRyYW5zYWN0aW9uOjptb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246
OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246OmlkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246OnNldENhbGxiYWNrcyk6CisgICAgICAgICog
cHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrczo6fldlYklEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3M6Om9uQWJv
cnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrczo6aWQpOgor
ICAgICAgICAqIHNyYy9JREJEYXRhYmFzZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlUHJveHk6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZFByb3h5
OjphYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFj
a2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eTo6fklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpvYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6bW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6YWJvcnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OnNjaGVkdWxlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6c3FsaXRlRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmlkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpzZXRDYWxsYmFja3Mp
OgorICAgICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6OklEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxs
YmFja3NQcm94eTo6fklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6b25BYm9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5OjppZCk6CisgICAgICAgICogc3Jj
L0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dl
YkRPTVN0cmluZ0xpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJET01TdHJpbmdMaXN0Ojps
ZW5ndGgpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUltcGw6OmFib3J0UGVuZGluZ1RyYW5z
YWN0aW9ucyk6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmg6CisgICAgICAgICog
c3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsOjpXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3NJbXBsOjp+V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbDo6b25BYm9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGw6OmlkKToKKyAgICAgICAg
KiBzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSURCVHJhbnNhY3Rpb25JbXBsOjpXZWJJREJUcmFuc2FjdGlvbkltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkltcGw6On5XZWJJREJUcmFuc2FjdGlvbkltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkltcGw6Om1vZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkltcGw6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBsOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlRyYW5zYWN0aW9uSW1wbDo6aWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2Fj
dGlvbkltcGw6OnNldENhbGxiYWNrcyk6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0aW9u
SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6KToKKwogMjAxMC0wOC0xOCAgSmlhbiBM
aSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGxheW91dCB0ZXN0IGNyYXNo
ZXMgaW4gY2hyb21pdW0uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDRkOTMwNzEyZmY3OTliZWVlMWY5ZjIy
ZGNiMTE5YWZhYTJiOTJlYjIuLmM0NmQ0MzFmMTIxYmMzOTVmNWIyODY4NTJhNmM3NWE4YjI1NDUx
MDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xOTYsNiArMTk2LDggQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYklEQktleS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQktleVBh
dGguaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJbnB1dEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViS2l0LmgnLApAQCAt
MzQ3LDYgKzM0OSwxMCBAQAogICAgICAgICAgICAgICAgICdzcmMvSURCSW5kZXhCYWNrZW5kUHJv
eHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgnLAorICAgICAgICAgICAg
ICAgICdzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgnLAorICAgICAgICAgICAgICAgICdz
cmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0luc3BlY3RvckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JbnNwZWN0b3JGcm9udGVuZENs
aWVudEltcGwuY3BwJywKQEAgLTQ1Nyw2ICs0NjMsMTAgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYklEQktleVJhbmdlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1w
bC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAnLAor
ICAgICAgICAgICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgnLAorICAgICAgICAg
ICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmNwcCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJJbWFnZUNHLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJ
bWFnZURlY29kZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkltYWdlU2tpYS5jcHAn
LApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGIwZDYwODZhZWI3
OWY4ZGM2ZWU1ZTg2OGM5MzUxZWY2NGY2MWE3MzcuLjZlNDk0Y2U4MjdlMWMzMDRkZTM3YTMzMjdh
YmYwZDA5OTBhZTY5NDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
RGF0YWJhc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNs
YXNzIFdlYklEQkNhbGxiYWNrczsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOworY2xhc3MgV2Vi
SURCVHJhbnNhY3Rpb247CiAKIC8vIFNlZSBjb21tZW50IGluIFdlYkluZGV4ZWREYXRhYmFzZSBm
b3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IG9mIHRoZXNlIGNsYXNzZXMuCiBjbGFzcyBXZWJJREJE
YXRhYmFzZSB7CkBAIC03NCw2ICs3NSwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQorICAgIC8vIFRyYW5zZmVycyBvd25lcnNo
aXAgb2YgdGhlIFdlYklEQlRyYW5zYWN0aW9uIHRvIHRoZSBjYWxsZXIuCisgICAgdmlydHVhbCBX
ZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFt
ZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKKyAgICB7Cisg
ICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJGYWN0b3J5LmgKaW5kZXggNWViNmY1ODM3YWU2OGY4NTRhNDhlYzI3Mjk5NTE3MzBjNWE5
NzAxNi4uN2MwNzBhMmZiZWEyNjM2NzA5NjllMjQyZjdlOTg0NWM1MjM2Zjk0NyAxMDA3NTUKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBAQAogI2luY2x1
ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkRhdGFiYXNlOwotY2xh
c3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiAKIC8vIFRoZSBlbnRyeSBw
b2ludCBpbnRvIHRoZSBJbmRleGVkRGF0YWJhc2UgQVBJLiAgVGhlc2UgY2xhc3NlcyBtYXRjaCB0
aGVpciBGb28gYW5kCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG9w
ZW4obmFtZSwgZGVzY3JpcHRpb24sIGNhbGxiYWNrcywgb3JpZ2luLCB3ZWJGcmFtZSk7CiAgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyhjb25zdCBXZWJW
ZWN0b3I8aW50PiYgcGVuZGluZ0lEcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJUcmFuc2FjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNjliODk5YjU2OTEzYmQ2ZDE3OTY3NGYyMGIy
ZjA4YzBlYTUyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQlRyYW5zYWN0aW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURC
VHJhbnNhY3Rpb25faAorI2RlZmluZSBXZWJJREJUcmFuc2FjdGlvbl9oCisKKyNpbmNsdWRlICJX
ZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklEQk9iamVjdFN0
b3JlOworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3M7CisKKy8vIFNlZSBjb21tZW50
IGluIFdlYkluZGV4ZWREYXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IG9mIHRoZXNl
IGNsYXNzZXMuCitjbGFzcyBXZWJJREJUcmFuc2FjdGlvbiB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViSURCVHJhbnNhY3Rpb24oKSB7IH0KKworICAgIHZpcnR1YWwgaW50IG1vZGUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3Rv
cmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdmlydHVhbCB2b2lk
IGFib3J0KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIGlu
dCBpZCgpIGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tz
KFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCVHJh
bnNhY3Rpb25faApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFu
c2FjdGlvbkNhbGxiYWNrcy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiOTIyMTc5ZDMwNDI0NWI5YjU5MTM1MDJjZWE4
NjFlNTI5ODRjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NfaAorI2RlZmluZSBXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc19oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CitjbGFzcyBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBvbkFib3J0KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFs
IGludCBpZCgpIGNvbnN0CisgICAgeyAKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzX2gKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCmluZGV4IGQxMWQxODJhNmNmYjA5MDQ3YzJkZDVh
NDkxMTI3N2M2ZWRhOTRkMGIuLjlhYTI5Nzc4MDYxNTJjNDYxMGYxNjY1ZjBhNDFmNDc5NmNmNjc4
MTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcApAQCAtMjksMTIg
KzI5LDE0IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxi
YWNrcy5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHkuaCIKLSNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAj
aW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlv
bi5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKQEAgLTk0LDkgKzk2LDkgQEAg
dm9pZCBJREJEYXRhYmFzZVByb3h5OjpyZW1vdmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGIKIAogUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlUHJveHk6OnRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qq
IHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkK
IHsKLSAgICAvLyBGSVhNRTogcGx1bWIgdG8gdGhlIGJyb3dzZXIgcHJvY2VzcywgZXRjIGV0Yy4K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBXZWJLaXQ6Oldl
YkRPTVN0cmluZ0xpc3QgbmFtZXMoc3RvcmVOYW1lcyk7CisgICAgV2ViS2l0OjpXZWJJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3dlYklEQkRhdGFiYXNlLT50cmFuc2FjdGlvbihuYW1l
cywgbW9kZSwgdGltZW91dCk7CisgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
OjpjcmVhdGUodHJhbnNhY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCA0NGNi
YjQwZDY5ZjQyZjYzNGQ2ZDA3YTkyN2NjZjQwYjdjMzBlZWM1Li4xMTRlN2UxM2ZhZGM2Zjk2NjBl
NTlkY2JmMTAxYjRlNWQwYzljOGQwIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFj
dG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJJREJG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IApAQCAtNjQsNiArNjUsMTQgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwKICAgICBtX3dlYklE
QkZhY3RvcnktPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUpOwogfQogCit2b2lkIElEQkZhY3RvcnlCYWNr
ZW5kUHJveHk6OmFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyhjb25zdCBWZWN0b3I8aW50PiYgcGVu
ZGluZ0lEcykKK3sKKyAgICBBU1NFUlQocGVuZGluZ0lEcy5zaXplKCkpOworICAgIFdlYktpdDo6
V2ViVmVjdG9yPGludD4gaWRzID0gcGVuZGluZ0lEczsKKworICAgIG1fd2ViSURCRmFjdG9yeS0+
YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKGlkcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCA5NjlhOWQ3YzM4YWRkMzMyNTZh
ZTllZGIzMWQ0MjgyOTIyOGViOTY2Li45ZWZjN2FmNWJhMDk1Mzc3MzBlMzE2MDA0MjI5OGE3Njhk
OGZkNzdjIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHku
aApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGRhdGFiYXNlcyh2b2lkKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1lKik7CisgICAgdmlydHVh
bCB2b2lkIGFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyhjb25zdCBWZWN0b3I8aW50PiYgcGVuZGlu
Z0lEcyk7CiAKIHByaXZhdGU6CiAgICAgSURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZTZiMDU4ZTUyZTI0Mjc1ODM0ODcwOWRiMDAxY2QwNDFjNTY5NmU4Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eS5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZVByb3h5LmgiCisjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9y
LmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJJREJUcmFu
c2FjdGlvbi5oIgorI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8
V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSh0cmFuc2FjdGlvbikpOworfQor
CitJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHko
UGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKKyAgICA6
IG1fd2ViSURCVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCit7Cit9CisKK0lEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5Ojp+SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkoKQoreworfQorCitQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHk6Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSA9IG1fd2ViSURCVHJhbnNhY3Rpb24tPm9i
amVjdFN0b3JlKG5hbWUpOworICAgIGlmICghb2JqZWN0U3RvcmUpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOwor
fQorCit1bnNpZ25lZCBzaG9ydCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6bW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2ViSURCVHJhbnNhY3Rpb24tPm1vZGUoKTsKK30KKwordm9p
ZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6YWJvcnQoKQoreworICAgIG1fd2ViSURCVHJh
bnNhY3Rpb24tPmFib3J0KCk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6
OnNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KQor
eworICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQgYXMgaXQncyB0aGUgaW1wbCBv
YmplY3RzIHdobyBnZXQgdG8KKyAgICAvLyBleGVjdXRlIHRhc2tzIGluIHRoZSBicm93c2VyIHBy
b2Nlc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2ludCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eTo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYklEQlRyYW5zYWN0
aW9uLT5pZCgpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpzZXRDYWxs
YmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcykKK3sKKyAgICBtX3dlYklE
QlRyYW5zYWN0aW9uLT5zZXRDYWxsYmFja3MobmV3IFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYyYjhmZjdiODQxYTJhM2Y5
MmEyYzY3YTcwMGRlNjM4MzVmZTMwMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eV9oCisjZGVmaW5lIElEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5X2gKKworI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOyB9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkgOiBwdWJsaWMgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2Vi
SURCVHJhbnNhY3Rpb24+KTsKKyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eSgpOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIHNob3J0IG1vZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4pOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOworCitwcml2YXRlOgorICAg
IElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFu
c2FjdGlvbj4pOworCisgICAgT3duUHRyPFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb24+IG1fd2Vi
SURCVHJhbnNhY3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgor
CisjZW5kaWYgLy8gSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHlfaApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmU3ZDQ0ZjE5ZDI1NjNjODQyM2NlNjEwMjNhODgxNDBlNmY4M2E3NwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5j
cHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgiCisKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcy5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5PiBJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6Oldl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KGNhbGxiYWNrcykpOworfQorCitJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5OjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQorICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5Ojp+SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSgpCit7Cit9CisKK3Zv
aWQgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6b25BYm9ydCgpCit7CisgICAgbV9jYWxs
YmFja3MtPm9uQWJvcnQoKTsKKyAgICBtX2NhbGxiYWNrcy5jbGVhcigpOworfQorCitpbnQgSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nh
bGxiYWNrcy0+aWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMWVmZjRkMmI4YzI1MDc3
YzI5ZjIyYzM4ZTRkODk4MTFmOGM4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5X2gKKyNkZWZpbmUgSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3NQcm94eV9oCisKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNr
cy5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeyBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsgfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgSURC
VHJhbnNhY3Rpb25DYWxsYmFja3MgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2Vi
SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydCgpOworICAgIHZpcnR1
YWwgaW50IGlkKCkgY29uc3Q7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBvbkNvbXBsZXRlKCku
CisKK3ByaXZhdGU6CisgICAgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eShQYXNzT3duUHRy
PFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3M+KTsKKworICAgIE93blB0cjxXZWJL
aXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307CisKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIElEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzUHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01T
dHJpbmdMaXN0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NU3RyaW5nTGlzdC5jcHAK
aW5kZXggNGJlN2ZhYmEyOGY1OGI3ZDRmMjBjYzdkYWRmNDVkNjA0MTE2NjY2MS4uZGM4MjMzMTM4
NGNjNmZkZTNmMGIwZjEyNTQzMjI2ZGM3NDA3NWY2NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJET01TdHJpbmdMaXN0LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRPTVN0cmluZ0xpc3QuY3BwCkBAIC02MCw2ICs2MCw4IEBAIHZvaWQgV2ViRE9NU3RyaW5nTGlz
dDo6YXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgc3RyaW5nKQogCiB1bnNpZ25lZCBXZWJET01TdHJp
bmdMaXN0OjpsZW5ndGgoKSBjb25zdAogeworICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX3ByaXZhdGUtPmxlbmd0aCgpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggOGM4ZTMwYTI0
NDI1Zjk0YWY1MzdhOGUyMDVkNjg5YWJmMDUzNTgzNi4uYmQzNjAwZjFkNjc5OGQzNmFkZTMwODBh
YzAzNTI3MzI4NzY1YjBmZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RT
dG9yZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCkBAIC04NSw2ICs4NywxNSBAQCB2b2lkIFdlYklEQkRh
dGFiYXNlSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJ
REJDYWxsYmFjawogICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5yZW1vdmVPYmplY3RTdG9yZShuYW1l
LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcykpOwogfQogCitXZWJJREJUcmFu
c2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJp
bmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0
KQoreworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBuYW1lTGlzdCA9IFBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4obmFtZXMpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uID0gbV9kYXRhYmFzZUJhY2tlbmQtPnRyYW5zYWN0aW9uKG5hbWVM
aXN0LmdldCgpLCBtb2RlLCB0aW1lb3V0KTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFuc2Fj
dGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgK
aW5kZXggNDZhNjYwOTY0Y2JjYmMyYjc0ZDU2MzZhODMyNThkMWNlMjJmZjk3Yy4uOWFlNzRlMGM4
Y2IzNzllZmE4MWU1MjE5ZmNiNjY1ZGM0NTQ0ZDRmMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsg
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOyB9CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CitjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIAog
Ly8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3Zl
cnZpZXcgdGhlc2UgY2xhc3Nlcy4KIGNsYXNzIFdlYklEQkRhdGFiYXNlSW1wbCA6IHB1YmxpYyBX
ZWJJREJEYXRhYmFzZSB7CkBAIC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MpOwogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgdW5zaWduZWQgc2hvcnQgbW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBj
YWxsYmFja3MpOworICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNv
bnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25l
ZCBsb25nIHRpbWVvdXQpOwogCiBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9kYXRhYmFzZUJhY2tlbmQ7CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmluZGV4IDVhYzg5ZjQwZjgzZDEyZGNjOWU0
ZjM3ZTkxN2RhMzdmNzFhYTgxZjMuLjU2NGJlMzY0OWM3NjA3MzI5ZTA1YjQ2NjhhYWVlMmFmM2Iy
OGFlODEgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCkBAIC02
Myw2ICs2MywxNSBAQCB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbgogICAgIG1faWRiRmFjdG9yeUJh
Y2tlbmQtPm9wZW4obmFtZSwgZGVzY3JpcHRpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUo
Y2FsbGJhY2tzKSwgb3JpZ2luLCAwKTsKIH0KIAordm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6YWJv
cnRQZW5kaW5nVHJhbnNhY3Rpb25zKGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBwZW5kaW5nSURzKQor
eworICAgIFdURjo6VmVjdG9yPGludD4gaWRzKHBlbmRpbmdJRHMuc2l6ZSgpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBlbmRpbmdJRHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGlkc1tp
XSA9IHBlbmRpbmdJRHNbaV07CisKKyAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5hYm9ydFBlbmRp
bmdUcmFuc2FjdGlvbnMoaWRzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFj
dG9yeUltcGwuaAppbmRleCBjOWVjOWEzMmVlZmE4MTFiNzI5Yjg0NTNmNmE4ZjMzYzQ0OTRiMmE1
Li5hZWFiNDc4NzhhMmQ5MjAzYjA2ZmUyMWRjNTMzYzE2NDdjZmNhNzEyIDEwMDc1NQotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW4o
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKik7CisgICAg
dmlydHVhbCB2b2lkIGFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucyhjb25zdCBXZWJWZWN0b3I8aW50
PiYgcGVuZGluZ0lEcyk7CiAKIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IG1faWRiRmFjdG9yeUJhY2tlbmQ7CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjY0ZGRjNTJjZjQwMmVhZmM2YzY1ZmM2NDM5MTNlNzU3NGZjYzkwNAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3NJbXBsLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oIgorCisjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNr
cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
SW1wbDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25DYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykK
K3sKK30KKworV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsOjp+V2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3NJbXBsKCkKK3sKK30KKwordm9pZCBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNr
c0ltcGw6Om9uQWJvcnQoKQoreworICAgIG1fY2FsbGJhY2tzLT5vbkFib3J0KCk7Cit9CisKK2lu
dCBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGw6OmlkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jYWxsYmFja3MtPmlkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk4YTY3
OWE5NzhmZWMxZDMxYTRjMjJkNWMzNDQ1ZDY1NWU2YTNmYgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBs
X2gKKyNkZWZpbmUgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsX2gKKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNr
czsKKworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsIDogcHVibGljIFdlYktp
dDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgeworcHVibGljOgorICAgIFdlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB+V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgb25BYm9ydCgpOworICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJUcmFuc2FjdGlvbkltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkYzk3MDJkZTk3ZDFmOTg1ZGUxYTAx
MjRmZjg3MzYzNTljMjEyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIK
KyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJJREJUcmFuc2FjdGlvbkltcGw6OldlYklEQlRyYW5zYWN0aW9uSW1wbChQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKKyAgICA6IG1fYmFja2Vu
ZChiYWNrZW5kKQoreworfQorCitXZWJJREJUcmFuc2FjdGlvbkltcGw6On5XZWJJREJUcmFuc2Fj
dGlvbkltcGwoKQoreworfQorCitpbnQgV2ViSURCVHJhbnNhY3Rpb25JbXBsOjptb2RlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5tb2RlKCk7Cit9CisKK1dlYklEQk9iamVjdFN0
b3JlKiBXZWJJREJUcmFuc2FjdGlvbkltcGw6Om9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSkKK3sKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmpl
Y3RTdG9yZSA9IG1fYmFja2VuZC0+b2JqZWN0U3RvcmUobmFtZSk7CisgICAgaWYgKCFvYmplY3RT
dG9yZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9y
ZUltcGwob2JqZWN0U3RvcmUpOworfQorCit2b2lkIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6YWJv
cnQoKQoreworICAgIG1fYmFja2VuZC0+YWJvcnQoKTsKK30KKworaW50IFdlYklEQlRyYW5zYWN0
aW9uSW1wbDo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tlbmQtPmlkKCk7Cit9CisK
K3ZvaWQgV2ViSURCVHJhbnNhY3Rpb25JbXBsOjpzZXRDYWxsYmFja3MoV2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3MqIGNhbGxiYWNrcykKK3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxs
YmFja3M+IGlkYkNhbGxiYWNrcyA9IElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShjYWxsYmFja3MpOworICAgIG1fYmFja2VuZC0+c2V0Q2FsbGJhY2tzKGlkYkNhbGxiYWNrcy5n
ZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRy
YW5zYWN0aW9uSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbklt
cGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOWJkZTY4NGVmNWEwZTM5ZjlmN2UzMzAxOWU0NzJjNDZkODlkOGRm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlv
bkltcGwuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJUcmFuc2FjdGlv
bkltcGxfaAorI2RlZmluZSBXZWJJREJUcmFuc2FjdGlvbkltcGxfaAorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJJ
REJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gU2VlIGNvbW1l
bnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2Ug
Y2xhc3Nlcy4KK2NsYXNzIFdlYklEQlRyYW5zYWN0aW9uSW1wbDogcHVibGljIFdlYklEQlRyYW5z
YWN0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJJREJUcmFuc2FjdGlvbkltcGwoV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHZpcnR1
YWwgfldlYklEQlRyYW5zYWN0aW9uSW1wbCgpOyAgCisKKyAgICB2aXJ0dWFsIGludCBtb2RlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKKyAgICB2aXJ0dWFs
IGludCBpZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViSURCVHJh
bnNhY3Rpb25DYWxsYmFja3MqKTsKKworcHJpdmF0ZToKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
KyNlbmRpZiAvLyBXZWJJREJUcmFuc2FjdGlvbkltcGxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>