<?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>43922</bug_id>
          
          <creation_ts>2010-08-12 09:00:49 -0700</creation_ts>
          <short_desc>Support for multiple speech enabled elements in same page.</short_desc>
          <delta_ts>2010-08-13 09:50:00 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39485</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Satish Sampath">satish</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>263838</commentid>
    <comment_count>0</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-12 09:00:49 -0700</bug_when>
    <thetext>The current speech input plumbing in webkit and webcore does not work when there are more than 1 speech enabled input elements. The main issue is that webcore presents a single listener to webkit/embedder and this listener gets invoked without any knowledge of the target element for the events. This had forced the webcore speech code to allow only one speech recognition session at a time, which isn&apos;t useful because even though only one element can record audio at a time, multiple such recorded streams can be in recognition phase in parallel (since recognition takes time and may even involve a server roundtrip).

This patch has the following changes to support the above (very useful) case:

- WebCore::SpeechInputClient now requires a one time set for the WebCore::SpeechInputListener and takes in a &apos;requestId&apos; for all calls. This requestId is returned back in all the listener callbacks for identifying which input element the event goes to.
- WebCore::SpeechInput class generates the above mentioned request ids as necessary when each speech enabled input element gets created/destroyed and multiplexes the listener callbacks to the appropriate input element based on the request id.
- All methods of WebKit::WebSpeechInputController (implemented by embedder) and WebKit::WebSpeechInputListener now require the requestId parameter as well.
- The relevant mocks updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263854</commentid>
    <comment_count>1</comment_count>
      <attachid>64231</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-12 09:59:19 -0700</bug_when>
    <thetext>Created attachment 64231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264283</commentid>
    <comment_count>2</comment_count>
      <attachid>64231</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-13 04:54:06 -0700</bug_when>
    <thetext>Comment on attachment 64231
Patch

WebCore/page/SpeechInput.h:74
 +      HashMap&lt;int, SpeechInputListener*&gt; m_listeners;
Why do you need ids?  Why not just keep track of listeners via their pointers?


Will you only be able to cancel recording from WebKit, and not cancel processing?  If so, I think this might work since only one input box should ever be recording at once.  In fact, if you get a message from one while another is recording, I think you can take that as a signal to end recording in the other.  And that means only having one listener pointer at a time works fine.  Why does everything ened IDs though?  The multiple speech input boxes can all share the same backend since only one item will ever be listening at once...right?

If you can cancel processing from the controls, I guess it&apos;s more complicated because you could have multiple doing processing while another is recording and so on.  In that case, I feel like you could have a pointer to the recording object and a set of processing objects.  In that case, using IDs probably makes sense.  But can&apos;t the IDs just be memory addresses?  It seems a bit simpler than trying to dole out unique IDs.

Btw, can you try making a diagram (or even hand-drawing and scanning it in) of all the classes and how they interact and attach it to the top level bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264358</commentid>
    <comment_count>3</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-13 07:51:06 -0700</bug_when>
    <thetext>&gt; I guess it&apos;s more complicated because you could have multiple
&gt; doing processing while another is recording and so on

That is correct, and this patch gets these cases working.

Jeremy and I discussed this more, and the map of IDs&lt;-&gt;listeners seems like the right way to go so that if an input element gets destroyed and that memory was reallocated for another of the same type, we don&apos;t accidentally forward invalid callbacks to the new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264359</commentid>
    <comment_count>4</comment_count>
      <attachid>64231</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-13 07:56:40 -0700</bug_when>
    <thetext>Comment on attachment 64231
Patch

actually, leave it as ints

r=meWebCore/page/SpeechInput.cpp:57
 +      for (HashMap&lt;int, SpeechInputListener*&gt;::iterator it = m_listeners.begin();
Maybe only do this in debug mode?  Or at least assert not reached that you hit it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264360</commentid>
    <comment_count>5</comment_count>
      <attachid>64339</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-13 08:06:43 -0700</bug_when>
    <thetext>Created attachment 64339
Patch

Added ASSERT_NOT_REACHED() per Jeremy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264362</commentid>
    <comment_count>6</comment_count>
      <attachid>64339</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-13 08:09:50 -0700</bug_when>
    <thetext>Comment on attachment 64339
Patch

well...assert it&apos;s not reached and return...or put the whole thing in #if defined(DEBUG) and do an ASSERT(it-&gt;second == listener) instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264375</commentid>
    <comment_count>7</comment_count>
      <attachid>64344</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-13 08:30:23 -0700</bug_when>
    <thetext>Created attachment 64344
Patch

Placed the check under #ifdef debug and assert that the given listener is already present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264376</commentid>
    <comment_count>8</comment_count>
      <attachid>64344</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-13 08:32:39 -0700</bug_when>
    <thetext>Comment on attachment 64344
Patch


WebCore/page/SpeechInput.cpp:59
 +          it != m_listeners.end(); ++it)
sorry...one more nit....either put the whole for on one line or put {}&apos;s around it...otherwise it&apos;s hard to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264380</commentid>
    <comment_count>9</comment_count>
      <attachid>64347</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-13 08:35:20 -0700</bug_when>
    <thetext>Created attachment 64347
Patch

Move to a single line for loop (sorry, my bad..)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264389</commentid>
    <comment_count>10</comment_count>
      <attachid>64347</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-13 08:47:04 -0700</bug_when>
    <thetext>Comment on attachment 64347
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264410</commentid>
    <comment_count>11</comment_count>
      <attachid>64347</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-13 09:49:55 -0700</bug_when>
    <thetext>Comment on attachment 64347
Patch

Clearing flags on attachment: 64347

Committed r65327: &lt;http://trac.webkit.org/changeset/65327&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264411</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-13 09:50:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64231</attachid>
            <date>2010-08-12 09:59:19 -0700</date>
            <delta_ts>2010-08-13 08:06:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43922-20100812175916.patch</filename>
            <type>text/plain</type>
            <size>31148</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGZlYzJlNWM0YjVmYzA1ZGZlMThhNjJhMjJhNTliYzYzN2I0ZmJkYy4uYWJhNTA2ZjUxODI3ZGEz
NDQ3OGZmYTE2MmJhNzk1NmM0NDIxMGRhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0wOC0xMiAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIHNwZWVjaCBl
bmFibGVkIGVsZW1lbnRzIGluIHNhbWUgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTIyCisKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0
LmNwcDogR2VuZXJhdGVzIHJlcXVlc3QgaWRzIGFzIG5lY2Vzc2FyeSB3aGVuIGVhY2ggc3BlZWNo
IGVuYWJsZWQgaW5wdXQgZWxlbWVudCBnZXRzCisgICAgICAgIGNyZWF0ZWQvZGVzdHJveWVkIGFu
ZCBtdWx0aXBsZXhlcyB0aGUgbGlzdGVuZXIgY2FsbGJhY2tzIHRvIHRoZSBhcHByb3ByaWF0ZSBp
bnB1dCBlbGVtZW50IGJhc2VkIG9uIHRoZSByZXF1ZXN0IGlkLgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoSW5wdXQ6OlNwZWVjaElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Ojp+U3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnJlZ2lzdGVy
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnVucmVnaXN0ZXJMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvcmRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OmRpZENvbXBsZXRlUmVjb2duaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaElucHV0OjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgICogcGFnZS9T
cGVlY2hJbnB1dC5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaDogTm93IHJl
cXVpcmVzIGEgb25lIHRpbWUgc2V0IGZvciB0aGUgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5l
ciBhbmQKKyAgICAgICAgdGFrZXMgaW4gYSAncmVxdWVzdElkJyBmb3IgYWxsIGNhbGxzLgorICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oOiBOb3cgcmV0dXJucyB0aGUgYWJvdmUg
bWVudGlvbmVkIHJlcXVlc3RJZCBpbiBhbGwgdGhlIGxpc3RlbmVyIGNhbGxiYWNrcyBmb3IKKyAg
ICAgICAgaWRlbnRpZnlpbmcgd2hpY2ggaW5wdXQgZWxlbWVudCB0aGUgZXZlbnQgZ29lcyB0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OlNwZWVjaElucHV0Q2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0b3BSZWNv
cmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpjYW5jZWxS
ZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6SW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6On5JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
c3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJl
c3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgor
CiAyMDEwLTA4LTEyICBIdWkgSHVhbmcgIDxodWkuMi5odWFuZ0Bub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCA0ZjM3OTg4
OTYxOWFlM2MzZWU5MGUwNjAyMGJhNGE1YjIyODgwMGU1Li4wYTJhZmFhODUzZjk4NGYwMzI1MTRk
ZTBlZDk1YTg1ZDA1ZjUwZDZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTQxLDQ2ICs0MSw3NSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaElucHV0OjpTcGVlY2hJbnB1dChTcGVlY2hJ
bnB1dENsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9saXN0
ZW5lcigwKQorICAgICwgbV9uZXh0TGlzdGVuZXJJZCgxKQogeworICAgIG1fY2xpZW50LT5zZXRM
aXN0ZW5lcih0aGlzKTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvcmRp
bmcoKQorU3BlZWNoSW5wdXQ6On5TcGVlY2hJbnB1dCgpCiB7Ci0gICAgQVNTRVJUKG1fbGlzdGVu
ZXIpOwotICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgbV9jbGll
bnQtPnNldExpc3RlbmVyKDApOwogfQogCi12b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJl
Y29nbml0aW9uKCkKK2ludCBTcGVlY2hJbnB1dDo6cmVnaXN0ZXJMaXN0ZW5lcihTcGVlY2hJbnB1
dExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKLSAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgbV9s
aXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwotICAgIG1fbGlzdGVuZXIgPSAwOwor
ICAgIC8vIENoZWNrIGlmIGFscmVhZHkgcHJlc2VudCBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgZW50
cnkuCisgICAgZm9yIChIYXNoTWFwPGludCwgU3BlZWNoSW5wdXRMaXN0ZW5lcio+OjppdGVyYXRv
ciBpdCA9IG1fbGlzdGVuZXJzLmJlZ2luKCk7CisgICAgICAgIGl0ICE9IG1fbGlzdGVuZXJzLmVu
ZCgpOyArK2l0KSB7CisgICAgICBpZiAoaXQtPnNlY29uZCA9PSBsaXN0ZW5lcikKKyAgICAgICAg
cmV0dXJuIGl0LT5maXJzdDsKKyAgICB9CisKKyAgICBtX2xpc3RlbmVycy5hZGQobV9uZXh0TGlz
dGVuZXJJZCwgbGlzdGVuZXIpOworICAgIHJldHVybiBtX25leHRMaXN0ZW5lcklkKys7CiB9CiAK
LXZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0KQordm9pZCBTcGVlY2hJbnB1dDo6dW5yZWdpc3Rlckxpc3RlbmVyKGludCBsaXN0ZW5lcklk
KQogewotICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25p
dGlvblJlc3VsdChyZXN1bHQpOworICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5l
cklkKSkKKyAgICAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySWQpOwogfQogCi1ib29s
IFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3Rl
bmVyKQordm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IGxpc3RlbmVy
SWQpCiB7Ci0gICAgLy8gQ2FuY2VsIGFueSBvbmdvaW5nIHJlY29nbml0aW9uIGZpcnN0LgotICAg
IGlmIChtX2xpc3RlbmVyKSB7Ci0gICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2du
aXRpb24oKTsKLSAgICAgICAgbV9saXN0ZW5lciA9IDA7Ci0gICAgICAgIG1fY2xpZW50LT5jYW5j
ZWxSZWNvZ25pdGlvbigpOwotICAgIH0KKyAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNl
bnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hp
bGUKKyAgICAvLyB0aGlzIGV2ZW50IHdhcyBvbiB0aGUgd2F5LgorICAgIGlmIChtX2xpc3RlbmVy
cy5jb250YWlucyhsaXN0ZW5lcklkKSkKKyAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVy
SWQpLT5kaWRDb21wbGV0ZVJlY29yZGluZyhsaXN0ZW5lcklkKTsKK30KKwordm9pZCBTcGVlY2hJ
bnB1dDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCkKK3sKKyAgICAvLyBE
b24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBiZWVu
IHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKKyAgICAvLyB0aGlzIGV2ZW50IHdhcyBvbiB0aGUg
d2F5LgorICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSkKKyAgICAgICAg
bV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKGxpc3Rl
bmVySWQpOworfQogCi0gICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwotICAgIHJldHVybiBtX2Ns
aWVudC0+c3RhcnRSZWNvZ25pdGlvbih0aGlzKTsKK3ZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29n
bml0aW9uUmVzdWx0KGludCBsaXN0ZW5lcklkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3sKKyAg
ICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQgaGF2
ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKKyAgICAvLyB0aGlzIGV2ZW50IHdhcyBv
biB0aGUgd2F5LgorICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSkKKyAg
ICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3VsdChs
aXN0ZW5lcklkLCByZXN1bHQpOworfQorCitib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0
aW9uKGludCBsaXN0ZW5lcklkKQoreworICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhs
aXN0ZW5lcklkKSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3Rl
bmVySWQpOworfQorCit2b2lkIFNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKGludCBsaXN0ZW5l
cklkKQoreworICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7Cisg
ICAgbV9jbGllbnQtPnN0b3BSZWNvcmRpbmcobGlzdGVuZXJJZCk7CiB9CiAKLXZvaWQgU3BlZWNo
SW5wdXQ6OnN0b3BSZWNvcmRpbmcoKQordm9pZCBTcGVlY2hJbnB1dDo6Y2FuY2VsUmVjb2duaXRp
b24oaW50IGxpc3RlbmVySWQpCiB7Ci0gICAgQVNTRVJUKG1fbGlzdGVuZXIpOwotICAgIG1fY2xp
ZW50LT5zdG9wUmVjb3JkaW5nKCk7CisgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxp
c3RlbmVySWQpKTsKKyAgICBtX2NsaWVudC0+Y2FuY2VsUmVjb2duaXRpb24obGlzdGVuZXJJZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9T
cGVlY2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggNThmNGVmZWRj
MTUyYmRjMTQwNjY3NDU0OTI2ODJiZTA3OGFkNWJjNy4uZjM2MTk0Y2EzYzdhY2MxYWVjZjE2OTg4
ZWJkMzRiNWNhYmE3ZjgwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2lu
Y2x1ZGUgIlNwZWVjaElucHV0TGlzdGVuZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDIwICs0OSwzMCBAQCBjbGFzcyBTcGVlY2hJbnB1
dExpc3RlbmVyOwogY2xhc3MgU3BlZWNoSW5wdXQgOiBwdWJsaWMgTm9uY29weWFibGUsIHB1Ymxp
YyBTcGVlY2hJbnB1dExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBTcGVlY2hJbnB1dChTcGVlY2hJ
bnB1dENsaWVudCopOwotICAgIHZpcnR1YWwgflNwZWVjaElucHV0KCkgeyB9CisgICAgdmlydHVh
bCB+U3BlZWNoSW5wdXQoKTsKKworICAgIC8vIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRCBmb3IgdGhl
IGdpdmVuIGxpc3RlbmVyIHRvIGJlIHVzZWQgZm9yIHNwZWVjaCByZXF1ZXN0cy4KKyAgICAvLyBU
aGlzIHNob3VsZCBiZSB0aGUgZmlyc3QgY2FsbCBtYWRlIGJ5IGxpc3RlbmVycyBiZWZvcmUgYW55
dGhpbmcgZWxzZS4KKyAgICBpbnQgcmVnaXN0ZXJMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVy
Kik7CisKKyAgICAvLyBJbnZva2VkIHdoZW4gdGhlIGxpc3RlbmVyIGlzIGRvbmUgd2l0aCByZWNv
cmRpbmcgb3IgZ2V0dGluZyBkZXN0cm95ZWQuCisgICAgLy8gRmFpbHVyZSB0byB1bnJlZ2lzdGVy
IG1heSByZXN1bHQgaW4gY3Jhc2hlcyBpZiB0aGVyZSB3ZXJlIGFueSBwZW5kaW5nIHNwZWVjaCBl
dmVudHMuCisgICAgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIoaW50KTsKIAogICAgIC8vIE1ldGhv
ZHMgaW52b2tlZCBieSB0aGUgaW5wdXQgZWxlbWVudHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKLSAgICB2b2lkIHN0b3BSZWNvcmRp
bmcoKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50KTsKKyAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoaW50KTsKKyAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKICAgICAvLyBT
cGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
UmVjb3JkaW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKGludCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVj
b2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hJbnB1dENsaWVudCogbV9jbGllbnQ7Ci0gICAgU3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0
ZW5lcjsKKyAgICBIYXNoTWFwPGludCwgU3BlZWNoSW5wdXRMaXN0ZW5lcio+IG1fbGlzdGVuZXJz
OworICAgIGludCBtX25leHRMaXN0ZW5lcklkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmggYi9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAppbmRleCBmNmM2MWNmNDBiMDI5MDBmZGY0YjMxY2U1
NjczMmMwMWQ1ODQyYjgwLi44N2ZmN2I5Mzk0Y2JlZDRiMWU0NDQxN2ExMGMyZjg4MjQ5ZjkwMDBh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAorKysgYi9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaApAQCAtNDAsMTUgKzQwLDIyIEBAIGNsYXNzIFNw
ZWVjaElucHV0TGlzdGVuZXI7CiAvLyBQcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIFNwZWVjaElu
cHV0IHRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudCB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oU3BlZWNoSW5wdXRM
aXN0ZW5lciogbGlzdGVuZXIpID0gMDsKKyAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBjYWxsIG1h
ZGUgYnkgYSBsaXN0ZW5lciwgcmVnaXN0ZXJpbmcgaXRzZWxmIGZvciBmdXR1cmUgY2FsbGJhY2tz
LgorICAgIC8vIFdoZW4gdGhlIGxpc3RlbmVyIG5vIGxvbmdlciBuZWVkcyBzcGVlY2ggaW5wdXQg
KGZvciBlLmcuIHdoZW4gaXQgZ2V0cyBkZXN0cm95ZWQpLAorICAgIC8vIGl0IHNob3VsZCBzZXQg
YSBudWxsIGxpc3RlbmVyIHRvIHN0b3AgcmVjZWl2aW5nIGNhbGxiYWNrcy4KKyAgICAvLyBUaGUg
Y2xpZW50IGRvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwb2ludGVyLgorICAgIHZpcnR1
YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKikgPSAwOworCisgICAgLy8g
U3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVjb3JkaW5nLgorICAgIHZpcnR1
YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpID0gMDsKIAogICAgIC8vIFN0
b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVk
aW8gcmVjb3JkZWQgdW50aWwgbm93CiAgICAgLy8gKGRvZXMgbm90IGRpc2NhcmQgYXVkaW8pLgot
ICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVjb3JkaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpID0gMDsKIAogICAgIC8vIENhbmNlbHMgYW4gb25n
b2luZyByZWNvZ25pdGlvbiBhbmQgZGlzY2FyZHMgYW55IGF1ZGlvIHJlY29yZGVkIHNvIGZhci4g
Tm8gcGFydGlhbAogICAgIC8vIHJlY29nbml0aW9uIHJlc3VsdHMgYXJlIHJldHVybmVkIHRvIHRo
ZSBsaXN0ZW5lci4KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpID0gMDsKIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50KCkgeyB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oIGIvV2ViQ29yZS9wYWdlL1Nw
ZWVjaElucHV0TGlzdGVuZXIuaAppbmRleCAxNDM5ODRkYzc1YTc1ZTU2YzE0NzU0NDA0YjE0NWUy
YWRjMmRjNjg2Li4zNjA2MGZjZGVmYmRlMjlhYzk3M2ExOGU1MDE5ZWZiOWQ2NGEyZmMxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCisrKyBiL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgKQEAgLTQxLDE5ICs0MSwxOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICAvLyBJ
bmZvcm1zIHRoYXQgYXVkaW8gcmVjb3JkaW5nIGhhcyBjb21wbGV0ZWQgYW5kIHJlY29nbml0aW9u
IGlzIHVuZGVyd2F5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkg
PSAwOwogCiAgICAgLy8gSW5mb3JtcyB0aGF0IHNwZWVjaCByZWNvZ25pdGlvbiBoYXMgY29tcGxl
dGVkLiBUaGlzIGdldHMgaW52b2tlZCBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlcgogICAgIC8vIHJl
Y29nbml0aW9uIHdhcyBzdWNjZXNmdWwgb3Igbm90LCB3aGV0aGVyIHNldFJlY29nbml0aW9uUmVz
dWx0KCkgd2FzIGludm9rZWQgb3Igbm90LiBUaGUKICAgICAvLyBoYW5kbGVyIHR5cGljYWxseSBm
cmVlcyB1cCBhbnkgdGVtcG9yYXJ5IHJlc291cmNlcyBhbGxvY2F0ZWQgYW5kIHdhaXRzIGZvciB0
aGUgbmV4dCBzcGVlY2gKICAgICAvLyByZWNvZ25pdGlvbiByZXF1ZXN0LgotICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpID0gMDsKIAogICAgIC8vIEdpdmVzIHJl
c3VsdHMgZnJvbSBzcGVlY2ggcmVjb2duaXRpb24sIGVpdGhlciBwYXJ0aWFsIG9yIHRoZSBmaW5h
bCByZXN1bHRzLgogICAgIC8vIFRoaXMgbWV0aG9kIGNhbiBwb3RlbnRpYWxseSBnZXQgY2FsbGVk
IG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlIGFyZSBwYXJ0aWFsIHJlc3VsdHMKICAgICAvLyBhdmFp
bGFibGUgYXMgdGhlIHVzZXIga2VlcHMgc3BlYWtpbmcuIElmIHRoZSBzcGVlY2ggY291bGQgbm90
IGJlIHJlY29nbml6ZWQgcHJvcGVybHkKICAgICAvLyBvciBpZiB0aGVyZSB3YXMgYW55IG90aGVy
IGVycm9ycyBpbiB0aGUgcHJvY2VzcywgdGhpcyBtZXRob2QgbWF5IG5ldmVyIGJlIGNhbGxlZC4K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1
bHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgflNwZWVjaElucHV0TGlzdGVuZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5kZXggNzRhMzE1MWNiNjQyMjFmOWE4OWQ2ODEx
YmJkM2UzMGY2NDIxODczOC4uYzNkNzRkMTkyOGY1ZTcyM2IwMjA4ZGRhZjMwMmVmZGU2OWU4MDZi
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9j
ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5j
cHAKQEAgLTQxLDM0ICs0MSw0MiBAQCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OlNwZWVjaElucHV0
Q2xpZW50TW9jaygpCiAgICAgOiBtX3JlY29yZGluZyhmYWxzZSkKICAgICAsIG1fdGltZXIodGhp
cywgJlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCkKICAgICAsIG1fbGlzdGVuZXIo
MCkKKyAgICAsIG1fcmVxdWVzdElkKDApCiB7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRN
b2NrOjpzdGFydFJlY29nbml0aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQordm9p
ZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIq
IGxpc3RlbmVyKQoreworICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKK30KKworYm9vbCBTcGVl
Y2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKIHsKICAg
ICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9s
aXN0ZW5lciA9IGxpc3RlbmVyOworICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwogICAgIG1f
cmVjb3JkaW5nID0gdHJ1ZTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0b3BSZWNvcmRpbmco
KQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJ
ZCkKIHsKKyAgICBBU1NFUlQocmVxdWVzdElkID09IG1fcmVxdWVzdElkKTsKICAgICBpZiAobV90
aW1lci5pc0FjdGl2ZSgpICYmIG1fcmVjb3JkaW5nKSB7CiAgICAgICAgIG1fdGltZXIuc3RvcCgp
OwogICAgICAgICB0aW1lckZpcmVkKCZtX3RpbWVyKTsKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjpjYW5jZWxSZWNvZ25pdGlvbigpCit2b2lkIFNwZWVjaElucHV0Q2xp
ZW50TW9jazo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKIHsKKyAgICBBU1NFUlQo
cmVxdWVzdElkID09IG1fcmVxdWVzdElkKTsKICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKSB7
CiAgICAgICAgIG1fdGltZXIuc3RvcCgpOwogICAgICAgICBtX3JlY29yZGluZyA9IGZhbHNlOwot
ICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKCk7Ci0gICAgICAgIG1f
bGlzdGVuZXIgPSAwOworICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9u
KG1fcmVxdWVzdElkKTsKKyAgICAgICAgbV9yZXF1ZXN0SWQgPSAwOwogICAgIH0KIH0KIApAQCAt
ODEsMTIgKzg5LDEyIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdl
YkNvcmU6OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQogewogICAgIGlmIChtX3JlY29y
ZGluZykgewogICAgICAgICBtX3JlY29yZGluZyA9IGZhbHNlOwotICAgICAgICBtX2xpc3RlbmVy
LT5kaWRDb21wbGV0ZVJlY29yZGluZygpOworICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0
ZVJlY29yZGluZyhtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDAp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0
KG1fcmVjb2duaXRpb25SZXN1bHQpOwotICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJl
Y29nbml0aW9uKCk7Ci0gICAgICAgIG1fbGlzdGVuZXIgPSAwOworICAgICAgICBtX2xpc3RlbmVy
LT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdCk7
CisgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24obV9yZXF1ZXN0SWQp
OworICAgICAgICBtX3JlcXVlc3RJZCA9IDA7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKaW5kZXggZmFjYTQ0NDAzN2I4MjQ4ZTQ5
M2MzZWI4Y2U4NjczNzIyMDlkNWRiZS4uN2Q1ZmRhMmMyNGM0OTdlMzJiNzcyZjIyN2QzZWE2MmJh
MjcxM2MzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xp
ZW50TW9jay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suaApAQCAtNDksOSArNDksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQg
bWV0aG9kcy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oU3BlZWNoSW5wdXRMaXN0ZW5lciop
OwotICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwotICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24o
KTsKKyAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKTsKKyAgICBib29s
IHN0YXJ0UmVjb2duaXRpb24oaW50KTsKKyAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKKyAg
ICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1l
ckZpcmVkKFRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKTsKQEAgLTU5LDYgKzYwLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fcmVjb3JkaW5nOwogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xp
ZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwor
ICAgIGludCBtX3JlcXVlc3RJZDsKICAgICBTdHJpbmcgbV9yZWNvZ25pdGlvblJlc3VsdDsKIH07
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IGY1MzIxMDEyOTk5NTJmNDRkOTM2Mjg3NTA4ZmZmZGYwNjQ3ZDBhZjUuLjk4NTJhYTZkNjFk
YTA3YzM2MGYyZWI1YTJiYzEwMjQ0YTg0ZDBjMGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMzQ2LDkgKzM0NiwyMCBAQCBpbmxpbmUg
SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVt
ZW50KE5vZGUqIHNoYWRvdwogICAgIDogVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoc2hhZG93UGFy
ZW50LT5kb2N1bWVudCgpLCBzaGFkb3dQYXJlbnQpCiAgICAgLCBtX2NhcHR1cmluZyhmYWxzZSkK
ICAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fbGlzdGVuZXJJZChkb2N1bWVudCgpLT5wYWdl
KCktPnNwZWVjaElucHV0KCktPnJlZ2lzdGVyTGlzdGVuZXIodGhpcykpCiB7CiB9CiAKK0lucHV0
RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojp+SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQo
KQoreworICAgIFNwZWVjaElucHV0KiBzcGVlY2ggPSBzcGVlY2hJbnB1dCgpOworICAgIGlmIChz
cGVlY2gpICB7IC8vIENvdWxkIGJlIG51bGwgd2hlbiBwYWdlIGlzIHVubG9hZGluZy4KKyAgICAg
ICAgaWYgKG1fc3RhdGUgIT0gSWRsZSkKKyAgICAgICAgICAgIHNwZWVjaC0+Y2FuY2VsUmVjb2du
aXRpb24obV9saXN0ZW5lcklkKTsKKyAgICAgICAgc3BlZWNoLT51bnJlZ2lzdGVyTGlzdGVuZXIo
bV9saXN0ZW5lcklkKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQdHI8SW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ+IElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpjcmVhdGUoTm9kZSog
c2hhZG93UGFyZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQoc2hhZG93UGFyZW50KSk7CkBAIC0zODYsMTEgKzM5NywxMSBAQCB2b2lk
IElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCkgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJZGxlOgotICAg
ICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24odGhpcykpCisgICAg
ICAgICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQp
KQogICAgICAgICAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6Ci0gICAgICAgICAgICBzcGVlY2hJbnB1dCgpLT5z
dG9wUmVjb3JkaW5nKCk7CisgICAgICAgICAgICBzcGVlY2hJbnB1dCgpLT5zdG9wUmVjb3JkaW5n
KG1fbGlzdGVuZXJJZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvZ25p
emluZzoKICAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSwgd2Ugd2lsbCBjb250aW51
ZSB0byB3YWl0IGZvciByZXN1bHRzLgpAQCAtNDEzLDIwICs0MjQsMjAgQEAgdm9pZCBJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0U3RhdGUoU3BlZWNoSW5wdXRTdGF0ZSBzdGF0ZSkK
IAogU3BlZWNoSW5wdXQqIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzcGVlY2hJbnB1
dCgpCiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPnBhZ2UoKS0+c3BlZWNoSW5wdXQoKTsKKyAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+cGFnZSgpID8gZG9jdW1lbnQoKS0+cGFnZSgpLT5zcGVlY2hJ
bnB1dCgpIDogMDsKIH0KIAotdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGlk
Q29tcGxldGVSZWNvcmRpbmcoKQordm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50KQogewogICAgIHNldFN0YXRlKFJlY29nbml6aW5nKTsK
IH0KIAotdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGlkQ29tcGxldGVSZWNv
Z25pdGlvbigpCit2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRDb21wbGV0
ZVJlY29nbml0aW9uKGludCkKIHsKICAgICBzZXRTdGF0ZShJZGxlKTsKIH0KIAotdm9pZCBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3Ry
aW5nJiByZXN1bHQpCit2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNv
Z25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0Fu
Y2VzdG9yTm9kZSgpKTsKICAgICAvLyBUaGUgY2FsbCB0byBzZXRWYWx1ZSgpIGJlbG93IGRpc3Bh
dGNoZXMgYW4gZXZlbnQsIGFuZCBhbiBldmVudCBoYW5kbGVyIGluIHRoZSBwYWdlIG1pZ2h0CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4IGU3ZWU5
OGY1MTViYWQ5ZTZhYmEzNjYyYjM2OWFiOTJhMDM2ZjY1Y2MuLjNmYmM5YzhmOWM4N2QyMzg0MjFk
MWI1ODYzMmY3ZGI2ZGEyZTU2MDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oCkBAIC0xMjYsMTUgKzEyNiwxNiBAQCBwdWJsaWM6CiAgICAgfTsKIAog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50PiBjcmVh
dGUoTm9kZSopOworICAgIHZpcnR1YWwgfklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICBTcGVlY2hJbnB1dFN0YXRlIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQogCiAgICAgLy8gU3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2Rz
LgotICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGRpZENvbXBsZXRl
UmVjb2duaXRpb24oKTsKLSAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KTsKKyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKGludCk7CisgICAgdm9p
ZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJl
c3VsdChpbnQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKIAogcHJpdmF0ZToKICAgICBJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudChOb2RlKik7CkBAIC0xNDMsNiArMTQ0LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV9jYXB0dXJpbmc7CiAgICAgU3BlZWNoSW5wdXRTdGF0ZSBtX3N0YXRl
OworICAgIGludCBtX2xpc3RlbmVySWQ7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQ
RUVDSCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGE2OGYyNTUzZjYzYjQ5MDE4ODJhY2IyN2M0ZDQ4NmUxNDFm
NmI0ZmMuLjI0YWUxNmNhMmMyZmQ5MzAyMTUwMmExNjY5MTgzNzQ5OTVkNjVmZDggMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEwLTA4LTEyICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlz
aEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3VwcG9ydCBmb3IgbXVsdGlwbGUgc3BlZWNoIGVuYWJsZWQgZWxlbWVudHMgaW4g
c2FtZSBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM5MjIKKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDog
QnViYmxlcyB1cCB0aGUgcmVxdWVzdElkIGdpdmVuIGJ5IHdlYmNvcmUgdG8gdGhlIGVtYmVkZGVy
LgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OmNhbmNl
bFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5l
ci5oOiBQYXNzZXMgZG93biB0aGUgcmVxdWVzdElkIGdpdmVuIGJ5IGVtYmVkZGVyIHRvIHdlYmNv
cmUuCisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXI6OmRpZENvbXBsZXRl
UmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3Rl
bmVyOjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpz
ZXRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3Rh
cnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6
c3RvcFJlY29yZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6
Y2FuY2VsUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudElt
cGw6OmRpZENvbXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRD
bGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjp+V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
OjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0b3BSZWNv
cmRpbmcpOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5o
OgorCiAyMDEwLTA4LTExICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKaW5kZXggM2RiYTVmYjZiYjFl
MmRkMWQ0YWIwOTNkMTkzZWUxY2RhZDZkZDgxMy4uYjg1ZmRlNjdmY2JmYjc0NTY1NjU1M2YwYWMy
MWRiOTliZGNmZjIwYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlci5oCkBAIC00MSwxNCArNDEsMjEgQEAgcHVibGljOgogICAgIC8vIFN0
YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0
aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUgbGltaXQg
b3Igc3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFuZCB0aGUg
cmVjb2duaXplZAogICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50
ZXJmYWNlLgorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGFydFJlY29nbml0aW9uKCk7CisgICAgfQorICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCiAgICAg
dmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oKQogICAgIHsKLSAgICAgICAgIFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgLy8gQ2FuY2VscyBhbiBvbmdvaW5nIHJlY29nbml0aW9uIGFuZCBkaXNjYXJkcyBhbnkg
YXVkaW8gcmVjb3JkZWQgc28gZmFyLiBObyBwYXJ0aWFsCiAgICAgLy8gcmVjb2duaXRpb24gcmVz
dWx0cyBhcmUgcmV0dXJuZWQgdG8gdGhlIGxpc3RlbmVyLgorICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxSZWNvZ25pdGlvbihpbnQpIHsgY2FuY2VsUmVjb2duaXRpb24oKTsgfQorICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KIAogICAgIC8vIFN0b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMg
cmVjb2duaXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3JkZWQgdW50aWwgbm93CkBAIC01Niw2ICs2
Myw4IEBAIHB1YmxpYzoKICAgICAvLyB3YW50cyB0byBzdG9wIHJlY29yZGluZyBhdWRpbyBhcyBz
b29uIGFzIHRoZXkgZmluaXNoZWQgc3BlYWtpbmcuIE90aGVyd2lzZSwgdGhlIHNwZWVjaAogICAg
IC8vIHJlY29yZGluZyAnZW5kcG9pbnRlcicgc2hvdWxkIGRldGVjdCBzaWxlbmNlIGluIHRoZSBp
bnB1dCBhbmQgc3RvcCByZWNvcmRpbmcgYXV0b21hdGljYWxseS4KICAgICAvLyBDYWxsIHN0YXJ0
UmVjb2duaXRpb24oKSB0byByZWNvcmQgYXVkaW8gYW5kIHJlY29nbml6ZSBzcGVlY2ggYWdhaW4u
CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KSB7IHN0b3BSZWNvcmRpbmcoKTsg
fQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAg
dGhpcyBjaGFuZ2UuCiAgICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0TGlzdGVuZXIuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmluZGV4IGYxNzU2YWYxZTk5OTQwMDdl
YWY4MWRmZTQyOTNmNjRlYTJlY2RlMDYuLmU3NzljM2E3OWQzMWFiZTAxZGIwMDAzMDIzMDdkZmUz
NThkMTU4MTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRMaXN0ZW5lci5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lci5oCkBAIC00NywxOSArNDcsMzQgQEAgcHVibGljOgogICAgIC8vIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlcjo6c3RvcFJlY29yZGluZygpIHdhcyBjYWxsZWQuCiAgICAgLy8gVHlwaWNh
bGx5IGFmdGVyIHRoaXMgY2FsbCB0aGUgbGlzdGVuZXIgd291bGQgdXBkYXRlIHRoZSBVSSB0byBy
ZWZsZWN0IHRoYXQgcmVjb2duaXRpb24gaXMKICAgICAvLyBpbiBwcm9ncmVzcy4KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENvbXBsZXRlUmVjb3JkaW5nKGludCkgPSAwOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBv
bmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCisgICAgdmlydHVhbCB2b2lk
IGRpZENvbXBsZXRlUmVjb3JkaW5nKCkKKyAgICB7CisgICAgICAgIGRpZENvbXBsZXRlUmVjb3Jk
aW5nKDEpOworICAgIH0KIAogICAgIC8vIEdpdmVzIHJlc3VsdHMgZnJvbSBzcGVlY2ggcmVjb2du
aXRpb24sIGVpdGhlciBwYXJ0aWFsIG9yIHRoZSBmaW5hbCByZXN1bHRzLgogICAgIC8vIFRoaXMg
bWV0aG9kIGNhbiBwb3RlbnRpYWxseSBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJl
IGFyZSBwYXJ0aWFsIHJlc3VsdHMKICAgICAvLyBhdmFpbGFibGUgYXMgdGhlIHVzZXIga2VlcHMg
c3BlYWtpbmcuIElmIHRoZSBzcGVlY2ggY291bGQgbm90IGJlIHJlY29nbml6ZWQgcHJvcGVybHkK
ICAgICAvLyBvciBpZiB0aGVyZSB3YXMgYW55IG90aGVyIGVycm9ycyBpbiB0aGUgcHJvY2Vzcywg
dGhpcyBtZXRob2QgbWF5IG5ldmVyIGJlIGNhbGxlZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVj
b2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKyAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgb25jZSBjaHJvbWl1bSBoYXMgcGlja2VkIHVwIHRoaXMgY2hhbmdl
LgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHNldFJlY29nbml0aW9uUmVzdWx0KDEsIHJlc3VsdCk7
CisgICAgfQogCiAgICAgLy8gSW5mb3JtcyB0aGF0IHNwZWVjaCByZWNvZ25pdGlvbiBoYXMgY29t
cGxldGVkLiBUaGlzIGdldHMgaW52b2tlZCBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlcgogICAgIC8v
IHJlY29nbml0aW9uIHdhcyBzdWNjZXNmdWwgb3Igbm90LCB3aGV0aGVyIHNldFJlY29nbml0aW9u
UmVzdWx0KCkgd2FzIGludm9rZWQgb3Igbm90LiBUaGUKICAgICAvLyBoYW5kbGVyIHR5cGljYWxs
eSBmcmVlcyB1cCBhbnkgdGVtcG9yYXJ5IHJlc291cmNlcyBhbGxvY2F0ZWQgYW5kIHdhaXRzIGZv
ciB0aGUgbmV4dCBzcGVlY2gKICAgICAvLyByZWNvZ25pdGlvbiByZXF1ZXN0LgotICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21wbGV0ZVJlY29nbml0aW9uKGludCkgPSAwOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCisgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oKQorICAgIHsKKyAgICAgICAgZGlkQ29tcGxldGVS
ZWNvZ25pdGlvbigxKTsKKyAgICB9CiAKIHByb3RlY3RlZDoKICAgICB+V2ViU3BlZWNoSW5wdXRM
aXN0ZW5lcigpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudElt
cGwuY3BwCmluZGV4IDY2NTI1ZTM0ZTliNTlmMzc5NmJkZGIyZmFmOGIzMDA4NDM3ZTQ1ZGIuLjlj
NTliYWUxMzEyOTU5ZDE3OTY5OWNiNDE3OGY4ZmNkZjEzZDMzYTEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTUxLDQxICs1MSw0NSBAQCBT
cGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJbnB1dENsaWVudEltcGwoKQogewogfQogCi1i
b29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihXZWJDb3JlOjpTcGVl
Y2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpz
ZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAg
ICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3RhcnRS
ZWNvZ25pdGlvbigpOwogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29y
ZGluZygpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkKQogewogICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2NvbnRyb2xsZXIt
PnN0b3BSZWNvcmRpbmcoKTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0
aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjYW5jZWxS
ZWNvZ25pdGlvbigpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhp
bnQgcmVxdWVzdElkKQogewogICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2NvbnRyb2xs
ZXItPmNhbmNlbFJlY29nbml0aW9uKCk7CisgICAgbV9jb250cm9sbGVyLT5zdG9wUmVjb3JkaW5n
KHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0
ZVJlY29yZGluZygpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y2FuY2VsUmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgbV9saXN0
ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKKyAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFJl
Y29nbml0aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpk
aWRDb21wbGV0ZVJlY29nbml0aW9uKCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRD
b21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKQogewogICAgIEFTU0VSVChtX2xpc3RlbmVy
KTsKLSAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKCk7Ci0gICAgbV9saXN0
ZW5lciA9IDA7CisgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcocmVxdWVzdElk
KTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0
KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQordm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OmRp
ZENvbXBsZXRlUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKIHsKICAgICBBU1NFUlQobV9saXN0
ZW5lcik7Ci0gICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAg
ICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKHJlcXVlc3RJZCk7Cit9CisKK3Zv
aWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVz
dElkLCBjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5lcik7
CisgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCByZXN1bHQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVj
aElucHV0Q2xpZW50SW1wbC5oCmluZGV4IDU3NjJkYTg3ZTlmMGFlOWZhNjExYTIyZDRmNmFlMDE3
ZGFiNTcyYmIuLjBhYjU0YzFjYWM2YTYyY2Q0OWY4Y2JmN2FkYzI1NTIzNTBjMDZiZjkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAtNTMsMTggKzUz
LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwoKTsKIAog
ICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICB2b2lkIHN0b3BSZWNvcmRp
bmcoKTsKLSAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBzZXRMaXN0ZW5l
cihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKik7CisgICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKGludCk7CisgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CisgICAgdm9pZCBjYW5jZWxS
ZWNvZ25pdGlvbihpbnQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2Rz
LgotICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKLSAgICB2b2lkIHNldFJlY29nbml0
aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYpOwotICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25p
dGlvbigpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50KTsKKyAgICB2b2lkIHNl
dFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgV2ViU3RyaW5nJik7CisgICAgdm9pZCBkaWRD
b21wbGV0ZVJlY29nbml0aW9uKGludCk7CiAKIHByaXZhdGU6CiAgICAgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCi0g
ICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsgLy8gVmFsaWQgd2hl
biByZWNvZ25pdGlvbiBpcyBpbiBwcm9ncmVzcy4KKyAgICBXZWJDb3JlOjpTcGVlY2hJbnB1dExp
c3RlbmVyKiBtX2xpc3RlbmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGwuY3BwCmluZGV4IDZiMDQzMjA1ZWJmY2YxMjYwZjQwYzhhNDg4MDVhMmNlMzE4YjZmMmUuLjU3
ZTM2MzUzZTcwZGNjNDkwYmMxMGQ5OGVlYmRlYjRiMmJiNjE5ZGEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3Bw
CkBAIC00Niw2ICs0NiwxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoCiAgICAgOiBtX3dlYmNvcmVNb2NrKG5ldyBX
ZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2soKSkKICAgICAsIG1fbGlzdGVuZXIobGlzdGVu
ZXIpCiB7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0TGlzdGVuZXIodGhpcyk7Cit9CisKK1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjp+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwoKQoreworICAgIG1fd2ViY29yZU1vY2stPnNldExpc3RlbmVyKDApOwogfQogCiB2b2lk
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1
bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCkBAIC01MywzNCArNTksMzQgQEAgdm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFdlYlN0cmluZyYKICAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChy
ZXN1bHQpOwogfQogCi12b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRD
b21wbGV0ZVJlY29yZGluZygpCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
OjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKQogewotICAgIG1fbGlzdGVuZXIt
PmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNv
cmRpbmcocmVxdWVzdElkKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiB7Ci0g
ICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOworICAgIG1fbGlzdGVuZXIt
PmRpZENvbXBsZXRlUmVjb2duaXRpb24ocmVxdWVzdElkKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV1RGOjpT
dHJpbmcmIHJlc3VsdCkKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiByZXN1
bHQpCiB7Ci0gICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAg
ICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9
CiAKLWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRp
b24oKQorYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25p
dGlvbihpbnQgcmVxdWVzdElkKQogewotICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJl
Y29nbml0aW9uKHRoaXMpOworICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0
aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGw6OmNhbmNlbFJlY29nbml0aW9uKCkKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiB7Ci0gICAgbV93ZWJjb3Jl
TW9jay0+Y2FuY2VsUmVjb2duaXRpb24oKTsKKyAgICBtX3dlYmNvcmVNb2NrLT5jYW5jZWxSZWNv
Z25pdGlvbihyZXF1ZXN0SWQpOwogfQogCi12b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsOjpzdG9wUmVjb3JkaW5nKCkKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGw6OnN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKIHsKLSAgICBtX3dlYmNvcmVNb2Nr
LT5zdG9wUmVjb3JkaW5nKCk7CisgICAgbV93ZWJjb3JlTW9jay0+c3RvcFJlY29yZGluZyhyZXF1
ZXN0SWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaAppbmRleCAwNDZh
YmYzZTFmODM4ZDM2ZWNmYmFkZDBlZmE4Y2ExOWVhMGU1ZDU4Li4zOGExNWRmZTdiM2ZkZmU5ODNm
NDliNWFhYjI2MGYzN2U5YmQ4NTk4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCkBAIC00NywxNiArNDcsMTcgQEAg
Y2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwgOiBwdWJsaWMgV2ViQ29yZTo6
U3BlZWNoSW5wdXRMaXN0ZW5lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLCBwdWJsaWMgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayB7CiBwdWJsaWM6CiAgICAg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciop
OworICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKCk7CiAKICAg
ICAvLyBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCi0gICAgdm9pZCBkaWRD
b21wbGV0ZVJlY29yZGluZygpOwotICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwot
ICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7
CisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKKyAgICB2b2lk
IGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7CisgICAgdm9pZCBzZXRSZWNv
Z25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsK
IAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciBtZXRob2RzLgotICAgIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbigpOwotICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oKTsKLSAgICB2b2lk
IHN0b3BSZWNvcmRpbmcoKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCk7CisgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKTsKKyAgICB2b2lk
IHN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrIG1ldGhvZHMuCiAgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64339</attachid>
            <date>2010-08-13 08:06:43 -0700</date>
            <delta_ts>2010-08-13 08:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43922-20100813160641.patch</filename>
            <type>text/plain</type>
            <size>31158</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzFiMDMwZTg4MDk5NDBiNjcxZmMwNmI5NDQ1YjBiZTc5NjgzY2M1Mi4uYjAyOWE4YTM3MDYxZThh
ZWMwMDdjZjAxMTMwODQ2Mzc3NTBhYmRiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0wOC0xMiAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIHNwZWVjaCBl
bmFibGVkIGVsZW1lbnRzIGluIHNhbWUgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTIyCisKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0
LmNwcDogR2VuZXJhdGVzIHJlcXVlc3QgaWRzIGFzIG5lY2Vzc2FyeSB3aGVuIGVhY2ggc3BlZWNo
IGVuYWJsZWQgaW5wdXQgZWxlbWVudCBnZXRzCisgICAgICAgIGNyZWF0ZWQvZGVzdHJveWVkIGFu
ZCBtdWx0aXBsZXhlcyB0aGUgbGlzdGVuZXIgY2FsbGJhY2tzIHRvIHRoZSBhcHByb3ByaWF0ZSBp
bnB1dCBlbGVtZW50IGJhc2VkIG9uIHRoZSByZXF1ZXN0IGlkLgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoSW5wdXQ6OlNwZWVjaElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Ojp+U3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnJlZ2lzdGVy
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnVucmVnaXN0ZXJMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvcmRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OmRpZENvbXBsZXRlUmVjb2duaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaElucHV0OjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgICogcGFnZS9T
cGVlY2hJbnB1dC5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaDogTm93IHJl
cXVpcmVzIGEgb25lIHRpbWUgc2V0IGZvciB0aGUgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5l
ciBhbmQKKyAgICAgICAgdGFrZXMgaW4gYSAncmVxdWVzdElkJyBmb3IgYWxsIGNhbGxzLgorICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oOiBOb3cgcmV0dXJucyB0aGUgYWJvdmUg
bWVudGlvbmVkIHJlcXVlc3RJZCBpbiBhbGwgdGhlIGxpc3RlbmVyIGNhbGxiYWNrcyBmb3IKKyAg
ICAgICAgaWRlbnRpZnlpbmcgd2hpY2ggaW5wdXQgZWxlbWVudCB0aGUgZXZlbnQgZ29lcyB0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OlNwZWVjaElucHV0Q2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0b3BSZWNv
cmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpjYW5jZWxS
ZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6SW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6On5JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
c3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJl
c3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgor
CiAyMDEwLTA4LTEyICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXgg
NGYzNzk4ODk2MTlhZTNjM2VlOTBlMDYwMjBiYTRhNWIyMjg4MDBlNS4uZTY1YTY2MWI1OWRiNWQw
NGMzNDFjNmVjMTYyZGQ3MDJjYTY1ODNmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCkBAIC00MSw0NiAr
NDEsNzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTcGVlY2hJbnB1dDo6U3BlZWNoSW5wdXQo
U3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAs
IG1fbGlzdGVuZXIoMCkKKyAgICAsIG1fbmV4dExpc3RlbmVySWQoMSkKIHsKKyAgICBtX2NsaWVu
dC0+c2V0TGlzdGVuZXIodGhpcyk7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXQ6OmRpZENvbXBsZXRl
UmVjb3JkaW5nKCkKK1NwZWVjaElucHV0Ojp+U3BlZWNoSW5wdXQoKQogewotICAgIEFTU0VSVCht
X2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZygpOworICAg
IG1fY2xpZW50LT5zZXRMaXN0ZW5lcigwKTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29t
cGxldGVSZWNvZ25pdGlvbigpCitpbnQgU3BlZWNoSW5wdXQ6OnJlZ2lzdGVyTGlzdGVuZXIoU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiB7Ci0gICAgQVNTRVJUKG1fbGlzdGVuZXIpOwot
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsKLSAgICBtX2xpc3RlbmVy
ID0gMDsKKyAgICAvLyBDaGVjayBpZiBhbHJlYWR5IHByZXNlbnQgYmVmb3JlIGNyZWF0aW5nIGEg
bmV3IGVudHJ5LgorICAgIGZvciAoSGFzaE1hcDxpbnQsIFNwZWVjaElucHV0TGlzdGVuZXIqPjo6
aXRlcmF0b3IgaXQgPSBtX2xpc3RlbmVycy5iZWdpbigpOworICAgICAgICBpdCAhPSBtX2xpc3Rl
bmVycy5lbmQoKTsgKytpdCkgeworICAgICAgaWYgKGl0LT5zZWNvbmQgPT0gbGlzdGVuZXIpCisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIG1fbGlzdGVuZXJzLmFk
ZChtX25leHRMaXN0ZW5lcklkLCBsaXN0ZW5lcik7CisgICAgcmV0dXJuIG1fbmV4dExpc3RlbmVy
SWQrKzsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
U3RyaW5nJiByZXN1bHQpCit2b2lkIFNwZWVjaElucHV0Ojp1bnJlZ2lzdGVyTGlzdGVuZXIoaW50
IGxpc3RlbmVySWQpCiB7Ci0gICAgQVNTRVJUKG1fbGlzdGVuZXIpOwotICAgIG1fbGlzdGVuZXIt
PnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7CisgICAgaWYgKG1fbGlzdGVuZXJzLmNvbnRh
aW5zKGxpc3RlbmVySWQpKQorICAgICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXJJZCk7
CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oU3BlZWNoSW5wdXRMaXN0
ZW5lciogbGlzdGVuZXIpCit2b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJlY29yZGluZyhp
bnQgbGlzdGVuZXJJZCkKIHsKLSAgICAvLyBDYW5jZWwgYW55IG9uZ29pbmcgcmVjb2duaXRpb24g
Zmlyc3QuCi0gICAgaWYgKG1fbGlzdGVuZXIpIHsKLSAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29t
cGxldGVSZWNvZ25pdGlvbigpOwotICAgICAgICBtX2xpc3RlbmVyID0gMDsKLSAgICAgICAgbV9j
bGllbnQtPmNhbmNlbFJlY29nbml0aW9uKCk7Ci0gICAgfQorICAgIC8vIERvbid0IGFzc2VydCBp
ZiBub3QgcHJlc2VudCBhcyB0aGUgZWxlbWVudCBtaWdodCBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0
aGUgcGFnZSB3aGlsZQorICAgIC8vIHRoaXMgZXZlbnQgd2FzIG9uIHRoZSB3YXkuCisgICAgaWYg
KG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3RlbmVySWQpKQorICAgICAgICBtX2xpc3RlbmVycy5n
ZXQobGlzdGVuZXJJZCktPmRpZENvbXBsZXRlUmVjb3JkaW5nKGxpc3RlbmVySWQpOworfQorCit2
b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkKQor
eworICAgIC8vIERvbid0IGFzc2VydCBpZiBub3QgcHJlc2VudCBhcyB0aGUgZWxlbWVudCBtaWdo
dCBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgcGFnZSB3aGlsZQorICAgIC8vIHRoaXMgZXZlbnQg
d2FzIG9uIHRoZSB3YXkuCisgICAgaWYgKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3RlbmVySWQp
KQorICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCktPmRpZENvbXBsZXRlUmVjb2du
aXRpb24obGlzdGVuZXJJZCk7Cit9CiAKLSAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAg
cmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKHRoaXMpOwordm9pZCBTcGVlY2hJbnB1
dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IGxpc3RlbmVySWQsIGNvbnN0IFN0cmluZyYgcmVz
dWx0KQoreworICAgIC8vIERvbid0IGFzc2VydCBpZiBub3QgcHJlc2VudCBhcyB0aGUgZWxlbWVu
dCBtaWdodCBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgcGFnZSB3aGlsZQorICAgIC8vIHRoaXMg
ZXZlbnQgd2FzIG9uIHRoZSB3YXkuCisgICAgaWYgKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3Rl
bmVySWQpKQorICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCktPnNldFJlY29nbml0
aW9uUmVzdWx0KGxpc3RlbmVySWQsIHJlc3VsdCk7Cit9CisKK2Jvb2wgU3BlZWNoSW5wdXQ6OnN0
YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQpCit7CisgICAgQVNTRVJUKG1fbGlzdGVuZXJz
LmNvbnRhaW5zKGxpc3RlbmVySWQpKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2du
aXRpb24obGlzdGVuZXJJZCk7Cit9CisKK3ZvaWQgU3BlZWNoSW5wdXQ6OnN0b3BSZWNvcmRpbmco
aW50IGxpc3RlbmVySWQpCit7CisgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3Rl
bmVySWQpKTsKKyAgICBtX2NsaWVudC0+c3RvcFJlY29yZGluZyhsaXN0ZW5lcklkKTsKIH0KIAot
dm9pZCBTcGVlY2hJbnB1dDo6c3RvcFJlY29yZGluZygpCit2b2lkIFNwZWVjaElucHV0OjpjYW5j
ZWxSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCkKIHsKLSAgICBBU1NFUlQobV9saXN0ZW5lcik7
Ci0gICAgbV9jbGllbnQtPnN0b3BSZWNvcmRpbmcoKTsKKyAgICBBU1NFUlQobV9saXN0ZW5lcnMu
Y29udGFpbnMobGlzdGVuZXJJZCkpOworICAgIG1fY2xpZW50LT5jYW5jZWxSZWNvZ25pdGlvbihs
aXN0ZW5lcklkKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAppbmRl
eCA1OGY0ZWZlZGMxNTJiZGMxNDA2Njc0NTQ5MjY4MmJlMDc4YWQ1YmM3Li5mMzYxOTRjYTNjN2Fj
YzFhZWNmMTY5ODhlYmQzNGI1Y2FiYTdmODAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXQuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtMzUsNiArMzUs
NyBAQAogCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMjAgKzQ5LDMwIEBAIGNsYXNz
IFNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBTcGVlY2hJbnB1dCA6IHB1YmxpYyBOb25jb3B5
YWJsZSwgcHVibGljIFNwZWVjaElucHV0TGlzdGVuZXIgewogcHVibGljOgogICAgIFNwZWVjaElu
cHV0KFNwZWVjaElucHV0Q2xpZW50Kik7Ci0gICAgdmlydHVhbCB+U3BlZWNoSW5wdXQoKSB7IH0K
KyAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dCgpOworCisgICAgLy8gR2VuZXJhdGVzIGEgdW5pcXVl
IElEIGZvciB0aGUgZ2l2ZW4gbGlzdGVuZXIgdG8gYmUgdXNlZCBmb3Igc3BlZWNoIHJlcXVlc3Rz
LgorICAgIC8vIFRoaXMgc2hvdWxkIGJlIHRoZSBmaXJzdCBjYWxsIG1hZGUgYnkgbGlzdGVuZXJz
IGJlZm9yZSBhbnl0aGluZyBlbHNlLgorICAgIGludCByZWdpc3Rlckxpc3RlbmVyKFNwZWVjaElu
cHV0TGlzdGVuZXIqKTsKKworICAgIC8vIEludm9rZWQgd2hlbiB0aGUgbGlzdGVuZXIgaXMgZG9u
ZSB3aXRoIHJlY29yZGluZyBvciBnZXR0aW5nIGRlc3Ryb3llZC4KKyAgICAvLyBGYWlsdXJlIHRv
IHVucmVnaXN0ZXIgbWF5IHJlc3VsdCBpbiBjcmFzaGVzIGlmIHRoZXJlIHdlcmUgYW55IHBlbmRp
bmcgc3BlZWNoIGV2ZW50cy4KKyAgICB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihpbnQpOwogCiAg
ICAgLy8gTWV0aG9kcyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50cy4KLSAgICBib29sIHN0
YXJ0UmVjb2duaXRpb24oU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpOwotICAgIHZvaWQg
c3RvcFJlY29yZGluZygpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQpOworICAgIHZv
aWQgc3RvcFJlY29yZGluZyhpbnQpOworICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsK
IAogICAgIC8vIFNwZWVjaElucHV0TGlzdGVuZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNv
Z25pdGlvbigpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRl
OgogICAgIFNwZWVjaElucHV0Q2xpZW50KiBtX2NsaWVudDsKLSAgICBTcGVlY2hJbnB1dExpc3Rl
bmVyKiBtX2xpc3RlbmVyOworICAgIEhhc2hNYXA8aW50LCBTcGVlY2hJbnB1dExpc3RlbmVyKj4g
bV9saXN0ZW5lcnM7CisgICAgaW50IG1fbmV4dExpc3RlbmVySWQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQu
aCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCmluZGV4IGY2YzYxY2Y0MGIwMjkw
MGZkZjRiMzFjZTU2NzMyYzAxZDU4NDJiODAuLjg3ZmY3YjkzOTRjYmVkNGIxZTQ0NDE3YTEwYzJm
ODgyNDlmOTAwMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5o
CisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCkBAIC00MCwxNSArNDAsMjIg
QEAgY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSBm
b3IgU3BlZWNoSW5wdXQgdG8gY2FsbCBpbnRvIHRoZSBlbWJlZGRlci4KIGNsYXNzIFNwZWVjaElu
cHV0Q2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihT
cGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikgPSAwOworICAgIC8vIFRoaXMgaXMgdGhlIGZp
cnN0IGNhbGwgbWFkZSBieSBhIGxpc3RlbmVyLCByZWdpc3RlcmluZyBpdHNlbGYgZm9yIGZ1dHVy
ZSBjYWxsYmFja3MuCisgICAgLy8gV2hlbiB0aGUgbGlzdGVuZXIgbm8gbG9uZ2VyIG5lZWRzIHNw
ZWVjaCBpbnB1dCAoZm9yIGUuZy4gd2hlbiBpdCBnZXRzIGRlc3Ryb3llZCksCisgICAgLy8gaXQg
c2hvdWxkIHNldCBhIG51bGwgbGlzdGVuZXIgdG8gc3RvcCByZWNlaXZpbmcgY2FsbGJhY2tzLgor
ICAgIC8vIFRoZSBjbGllbnQgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZXIu
CisgICAgdmlydHVhbCB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKSA9IDA7
CisKKyAgICAvLyBTdGFydHMgc3BlZWNoIHJlY29nbml0aW9uIGFuZCBhdWRpbyByZWNvcmRpbmcu
CisgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkgPSAwOwog
CiAgICAgLy8gU3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3
aXRoIHRoZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBub3cKICAgICAvLyAoZG9lcyBub3QgZGlzY2Fy
ZCBhdWRpbykuCi0gICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkgPSAwOwogCiAgICAgLy8gQ2Fu
Y2VscyBhbiBvbmdvaW5nIHJlY29nbml0aW9uIGFuZCBkaXNjYXJkcyBhbnkgYXVkaW8gcmVjb3Jk
ZWQgc28gZmFyLiBObyBwYXJ0aWFsCiAgICAgLy8gcmVjb2duaXRpb24gcmVzdWx0cyBhcmUgcmV0
dXJuZWQgdG8gdGhlIGxpc3RlbmVyLgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlv
bigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRDbGllbnQoKSB7
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmggYi9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmluZGV4IDE0Mzk4NGRjNzVhNzVlNTZjMTQ3
NTQ0MDRiMTQ1ZTJhZGMyZGM2ODYuLjM2MDYwZmNkZWZiZGUyOWFjOTczYTE4ZTUwMTllZmI5ZDY0
YTJmYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaApAQCAtNDEsMTkgKzQxLDE5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0TGlzdGVuZXIgewogcHVibGlj
OgogICAgIC8vIEluZm9ybXMgdGhhdCBhdWRpbyByZWNvcmRpbmcgaGFzIGNvbXBsZXRlZCBhbmQg
cmVjb2duaXRpb24gaXMgdW5kZXJ3YXkuCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVj
b3JkaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQg
cmVxdWVzdElkKSA9IDA7CiAKICAgICAvLyBJbmZvcm1zIHRoYXQgc3BlZWNoIHJlY29nbml0aW9u
IGhhcyBjb21wbGV0ZWQuIFRoaXMgZ2V0cyBpbnZva2VkIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVy
CiAgICAgLy8gcmVjb2duaXRpb24gd2FzIHN1Y2Nlc2Z1bCBvciBub3QsIHdoZXRoZXIgc2V0UmVj
b2duaXRpb25SZXN1bHQoKSB3YXMgaW52b2tlZCBvciBub3QuIFRoZQogICAgIC8vIGhhbmRsZXIg
dHlwaWNhbGx5IGZyZWVzIHVwIGFueSB0ZW1wb3JhcnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBhbmQg
d2FpdHMgZm9yIHRoZSBuZXh0IHNwZWVjaAogICAgIC8vIHJlY29nbml0aW9uIHJlcXVlc3QuCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkgPSAwOwogCiAgICAg
Ly8gR2l2ZXMgcmVzdWx0cyBmcm9tIHNwZWVjaCByZWNvZ25pdGlvbiwgZWl0aGVyIHBhcnRpYWwg
b3IgdGhlIGZpbmFsIHJlc3VsdHMuCiAgICAgLy8gVGhpcyBtZXRob2QgY2FuIHBvdGVudGlhbGx5
IGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUgYXJlIHBhcnRpYWwgcmVzdWx0cwog
ICAgIC8vIGF2YWlsYWJsZSBhcyB0aGUgdXNlciBrZWVwcyBzcGVha2luZy4gSWYgdGhlIHNwZWVj
aCBjb3VsZCBub3QgYmUgcmVjb2duaXplZCBwcm9wZXJseQogICAgIC8vIG9yIGlmIHRoZXJlIHdh
cyBhbnkgb3RoZXIgZXJyb3JzIGluIHRoZSBwcm9jZXNzLCB0aGlzIG1ldGhvZCBtYXkgbmV2ZXIg
YmUgY2FsbGVkLgotICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBT
dHJpbmcmIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3Vs
dChpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgPSAwOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRMaXN0ZW5lcigpIHsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAppbmRleCA3NGEzMTUxY2I2NDIy
MWY5YTg5ZDY4MTFiYmQzZTMwZjY0MjE4NzM4Li5jM2Q3NGQxOTI4ZjVlNzIzYjAyMDhkZGFmMzAy
ZWZkZTY5ZTgwNmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcApAQCAtNDEsMzQgKzQxLDQyIEBAIFNwZWVjaElucHV0Q2xpZW50TW9jazo6
U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKICAgICA6IG1fcmVjb3JkaW5nKGZhbHNlKQogICAgICwg
bV90aW1lcih0aGlzLCAmU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKQogICAgICwg
bV9saXN0ZW5lcigwKQorICAgICwgbV9yZXF1ZXN0SWQoMCkKIHsKIH0KIAotYm9vbCBTcGVlY2hJ
bnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlz
dGVuZXIpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0TGlzdGVuZXIoU3BlZWNoSW5w
dXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOworfQor
Citib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVz
dElkKQogewogICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgbV9yZXF1ZXN0SWQgPSByZXF1ZXN0
SWQ7CiAgICAgbV9yZWNvcmRpbmcgPSB0cnVlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDAp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3Rv
cFJlY29yZGluZygpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RvcFJlY29yZGluZyhp
bnQgcmVxdWVzdElkKQogeworICAgIEFTU0VSVChyZXF1ZXN0SWQgPT0gbV9yZXF1ZXN0SWQpOwog
ICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkgJiYgbV9yZWNvcmRpbmcpIHsKICAgICAgICAgbV90
aW1lci5zdG9wKCk7CiAgICAgICAgIHRpbWVyRmlyZWQoJm1fdGltZXIpOwogICAgIH0KIH0KIAot
dm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJlY29nbml0aW9uKCkKK3ZvaWQgU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogewor
ICAgIEFTU0VSVChyZXF1ZXN0SWQgPT0gbV9yZXF1ZXN0SWQpOwogICAgIGlmIChtX3RpbWVyLmlz
QWN0aXZlKCkpIHsKICAgICAgICAgbV90aW1lci5zdG9wKCk7CiAgICAgICAgIG1fcmVjb3JkaW5n
ID0gZmFsc2U7Ci0gICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsK
LSAgICAgICAgbV9saXN0ZW5lciA9IDA7CisgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRl
UmVjb2duaXRpb24obV9yZXF1ZXN0SWQpOworICAgICAgICBtX3JlcXVlc3RJZCA9IDA7CiAgICAg
fQogfQogCkBAIC04MSwxMiArODksMTIgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRp
bWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCiB7CiAgICAg
aWYgKG1fcmVjb3JkaW5nKSB7CiAgICAgICAgIG1fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgICAg
IG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgICAgIG1fbGlzdGVuZXIt
PmRpZENvbXBsZXRlUmVjb3JkaW5nKG1fcmVxdWVzdElkKTsKICAgICAgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2du
aXRpb25SZXN1bHQobV9yZWNvZ25pdGlvblJlc3VsdCk7Ci0gICAgICAgIG1fbGlzdGVuZXItPmRp
ZENvbXBsZXRlUmVjb2duaXRpb24oKTsKLSAgICAgICAgbV9saXN0ZW5lciA9IDA7CisgICAgICAg
IG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBtX3JlY29nbml0
aW9uUmVzdWx0KTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbiht
X3JlcXVlc3RJZCk7CisgICAgICAgIG1fcmVxdWVzdElkID0gMDsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAppbmRleCBmYWNhNDQ0
MDM3YjgyNDhlNDkzYzNlYjhjZTg2NzM3MjIwOWQ1ZGJlLi43ZDVmZGEyYzI0YzQ5N2UzMmI3NzJm
MjI3ZDNlYTYyYmEyNzEzYzMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElu
cHV0Q2xpZW50TW9jay5oCkBAIC00OSw5ICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAKICAgICAvLyBTcGVlY2hJ
bnB1dENsaWVudCBtZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihTcGVlY2hJbnB1
dExpc3RlbmVyKik7Ci0gICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7Ci0gICAgdm9pZCBjYW5jZWxS
ZWNvZ25pdGlvbigpOworICAgIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciop
OworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQpOworICAgIHZvaWQgc3RvcFJlY29yZGlu
ZyhpbnQpOworICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopOwpAQCAtNTks
NiArNjAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZWNvcmRpbmc7CiAgICAgVGltZXI8U3Bl
ZWNoSW5wdXRDbGllbnRNb2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElucHV0TGlzdGVuZXIqIG1f
bGlzdGVuZXI7CisgICAgaW50IG1fcmVxdWVzdElkOwogICAgIFN0cmluZyBtX3JlY29nbml0aW9u
UmVzdWx0OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKaW5kZXggZjUzMjEwMTI5OTk1MmY0NGQ5MzYyODc1MDhmZmZkZjA2NDdkMGFmNS4u
OTg1MmFhNmQ2MWRhMDdjMzYwZjJlYjVhMmJjMTAyNDRhODRkMGMwZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0zNDYsOSArMzQ2LDIw
IEBAIGlubGluZSBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQoTm9kZSogc2hhZG93CiAgICAgOiBUZXh0Q29udHJvbElubmVyRWxlbWVu
dChzaGFkb3dQYXJlbnQtPmRvY3VtZW50KCksIHNoYWRvd1BhcmVudCkKICAgICAsIG1fY2FwdHVy
aW5nKGZhbHNlKQogICAgICwgbV9zdGF0ZShJZGxlKQorICAgICwgbV9saXN0ZW5lcklkKGRvY3Vt
ZW50KCktPnBhZ2UoKS0+c3BlZWNoSW5wdXQoKS0+cmVnaXN0ZXJMaXN0ZW5lcih0aGlzKSkKIHsK
IH0KIAorSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6On5JbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudCgpCit7CisgICAgU3BlZWNoSW5wdXQqIHNwZWVjaCA9IHNwZWVjaElucHV0KCk7
CisgICAgaWYgKHNwZWVjaCkgIHsgLy8gQ291bGQgYmUgbnVsbCB3aGVuIHBhZ2UgaXMgdW5sb2Fk
aW5nLgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQorICAgICAgICAgICAgc3BlZWNoLT5j
YW5jZWxSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQpOworICAgICAgICBzcGVlY2gtPnVucmVnaXN0
ZXJMaXN0ZW5lcihtX2xpc3RlbmVySWQpOworICAgIH0KK30KKwogUGFzc1JlZlB0cjxJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudD4gSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChzaGFkb3dQYXJlbnQpKTsKQEAgLTM4NiwxMSArMzk3
LDExIEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50KSB7CiAgICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNl
IElkbGU6Ci0gICAgICAgICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbih0
aGlzKSkKKyAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1f
bGlzdGVuZXJJZCkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlY29yZGluZzoKLSAgICAgICAgICAgIHNwZWVj
aElucHV0KCktPnN0b3BSZWNvcmRpbmcoKTsKKyAgICAgICAgICAgIHNwZWVjaElucHV0KCktPnN0
b3BSZWNvcmRpbmcobV9saXN0ZW5lcklkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFJlY29nbml6aW5nOgogICAgICAgICAgICAgLy8gTm90aGluZyB0byBkbyBoZXJlLCB3ZSB3
aWxsIGNvbnRpbnVlIHRvIHdhaXQgZm9yIHJlc3VsdHMuCkBAIC00MTMsMjAgKzQyNCwyMCBAQCB2
b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRTdGF0ZShTcGVlY2hJbnB1dFN0
YXRlIHN0YXRlKQogCiBTcGVlY2hJbnB1dCogSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnNwZWVjaElucHV0KCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+cGFnZSgpLT5zcGVlY2hJ
bnB1dCgpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdl
KCktPnNwZWVjaElucHV0KCkgOiAwOwogfQogCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25F
bGVtZW50OjpkaWRDb21wbGV0ZVJlY29yZGluZygpCit2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0
b25FbGVtZW50OjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQpCiB7CiAgICAgc2V0U3RhdGUoUmVj
b2duaXppbmcpOwogfQogCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRD
b21wbGV0ZVJlY29nbml0aW9uKCkKK3ZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OmRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KQogewogICAgIHNldFN0YXRlKElkbGUpOwogfQog
Ci12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJlc3Vs
dChjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1l
bnQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAg
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50
Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAgIC8vIFRoZSBjYWxsIHRvIHNldFZhbHVlKCkg
YmVsb3cgZGlzcGF0Y2hlcyBhbiBldmVudCwgYW5kIGFuIGV2ZW50IGhhbmRsZXIgaW4gdGhlIHBh
Z2UgbWlnaHQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
aW5kZXggZTdlZTk4ZjUxNWJhZDllNmFiYTM2NjJiMzY5YWI5MmEwMzZmNjVjYy4uM2ZiYzljOGY5
Yzg3ZDIzODQyMWQxYjU4NjMyZjdkYjZkYTJlNTYwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTEyNiwxNSArMTI2LDE2IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShOb2RlKik7CisgICAgdmlydHVhbCB+SW5wdXRGaWVsZFNwZWVjaEJ1dHRv
bkVsZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIFNwZWVjaElucHV0U3RhdGUgc3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICAgICAvLyBTcGVlY2hJbnB1dExpc3Rl
bmVyIG1ldGhvZHMuCi0gICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpOwotICAgIHZvaWQg
ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50
KTsKKyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKKyAgICB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgU3RyaW5nJiByZXN1bHQpOwogCiBwcml2YXRlOgog
ICAgIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KE5vZGUqKTsKQEAgLTE0Myw2ICsxNDQs
NyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NhcHR1cmluZzsKICAgICBTcGVlY2hJbnB1dFN0
YXRlIG1fc3RhdGU7CisgICAgaW50IG1fbGlzdGVuZXJJZDsKIH07CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMmFkMTM2YjFmMThhNWY3YTI3ZDI4Yzdl
OGI4MDVkMDgwZWE1YTRmZC4uNzI3NzE5ZDRlMTZmYzlmNDA0MGUxZDBhZGI4MjM2MzIyOTQwYzFi
NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTAtMDgtMTIgIFNhdGlzaCBTYW1w
YXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBzcGVlY2ggZW5hYmxlZCBl
bGVtZW50cyBpbiBzYW1lIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MzkyMgorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlci5oOiBCdWJibGVzIHVwIHRoZSByZXF1ZXN0SWQgZ2l2ZW4gYnkgd2ViY29yZSB0byB0
aGUgZW1iZWRkZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJv
bGxlcjo6Y2FuY2VsUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJ
bnB1dExpc3RlbmVyLmg6IFBhc3NlcyBkb3duIHRoZSByZXF1ZXN0SWQgZ2l2ZW4gYnkgZW1iZWRk
ZXIgdG8gd2ViY29yZS4KKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjo6
ZGlkQ29tcGxldGVSZWNvcmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExp
c3RlbmVyOjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aElucHV0TGlzdGVuZXI6OmRpZENvbXBsZXRlUmVjb2duaXRpb24pOgorICAgICAgICAqIHNyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENs
aWVudEltcGw6OnNldExpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGll
bnRJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRD
bGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRD
bGllbnRJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAg
ICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
On5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21w
bGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1w
bDo6c3RvcFJlY29yZGluZyk6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsLmg6CisKIDIwMTAtMDgtMTIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCmluZGV4IDNk
YmE1ZmI2YmIxZTJkZDFkNGFiMDkzZDE5M2VlMWNkYWQ2ZGQ4MTMuLmI4NWZkZTY3ZmNiZmI3NDU2
NTY1NTNmMGFjMjFkYjk5YmRjZmYyMGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaApAQCAtNDEsMTQgKzQxLDIxIEBAIHB1YmxpYzoK
ICAgICAvLyBTdGFydHMgc3BlZWNoIHJlY29nbml0aW9uLiBTcGVlY2ggd2lsbCBnZXQgcmVjb3Jk
ZWQgdW50aWwgdGhlIGVuZHBvaW50ZXIgZGV0ZWN0cyBzaWxlbmNlLAogICAgIC8vIHJ1bnMgdG8g
dGhlIGxpbWl0IG9yIHN0b3BSZWNvcmRpbmcgaXMgY2FsbGVkLiBQcm9ncmVzcyBpbmRpY2F0aW9u
cyBhbmQgdGhlIHJlY29nbml6ZWQKICAgICAvLyB0ZXh0IGFyZSByZXR1cm5lZCB2aWEgdGhlIGxp
c3RlbmVyIGludGVyZmFjZS4KKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQp
CisgICAgeworICAgICAgICByZXR1cm4gc3RhcnRSZWNvZ25pdGlvbigpOworICAgIH0KKyAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBjaHJvbWl1bSBoYXMgcGlja2VkIHVwIHRoaXMgY2hh
bmdlLgogICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKCkKICAgICB7Ci0gICAgICAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIC8vIENhbmNlbHMgYW4gb25nb2luZyByZWNvZ25pdGlvbiBhbmQgZGlz
Y2FyZHMgYW55IGF1ZGlvIHJlY29yZGVkIHNvIGZhci4gTm8gcGFydGlhbAogICAgIC8vIHJlY29n
bml0aW9uIHJlc3VsdHMgYXJlIHJldHVybmVkIHRvIHRoZSBsaXN0ZW5lci4KKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KSB7IGNhbmNlbFJlY29nbml0aW9uKCk7IH0KKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBjaHJvbWl1bSBoYXMgcGlja2VkIHVwIHRoaXMg
Y2hhbmdlLgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbigpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5k
IHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwpA
QCAtNTYsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgLy8gd2FudHMgdG8gc3RvcCByZWNvcmRpbmcg
YXVkaW8gYXMgc29vbiBhcyB0aGV5IGZpbmlzaGVkIHNwZWFraW5nLiBPdGhlcndpc2UsIHRoZSBz
cGVlY2gKICAgICAvLyByZWNvcmRpbmcgJ2VuZHBvaW50ZXInIHNob3VsZCBkZXRlY3Qgc2lsZW5j
ZSBpbiB0aGUgaW5wdXQgYW5kIHN0b3AgcmVjb3JkaW5nIGF1dG9tYXRpY2FsbHkuCiAgICAgLy8g
Q2FsbCBzdGFydFJlY29nbml0aW9uKCkgdG8gcmVjb3JkIGF1ZGlvIGFuZCByZWNvZ25pemUgc3Bl
ZWNoIGFnYWluLgorICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVjb3JkaW5nKGludCkgeyBzdG9wUmVj
b3JkaW5nKCk7IH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBjaHJvbWl1bSBoYXMg
cGlja2VkIHVwIHRoaXMgY2hhbmdlLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVjb3JkaW5nKCkg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0TGlzdGVuZXIuaAppbmRleCBmMTc1NmFm
MWU5OTk0MDA3ZWFmODFkZmU0MjkzZjY0ZWEyZWNkZTA2Li5lNzc5YzNhNzlkMzFhYmUwMWRiMDAw
MzAyMzA3ZGZlMzU4ZDE1ODE1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaElucHV0TGlzdGVuZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNw
ZWVjaElucHV0TGlzdGVuZXIuaApAQCAtNDcsMTkgKzQ3LDM0IEBAIHB1YmxpYzoKICAgICAvLyBX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0b3BSZWNvcmRpbmcoKSB3YXMgY2FsbGVkLgogICAg
IC8vIFR5cGljYWxseSBhZnRlciB0aGlzIGNhbGwgdGhlIGxpc3RlbmVyIHdvdWxkIHVwZGF0ZSB0
aGUgVUkgdG8gcmVmbGVjdCB0aGF0IHJlY29nbml0aW9uIGlzCiAgICAgLy8gaW4gcHJvZ3Jlc3Mu
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQpID0gMDsKKyAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgb25jZSBjaHJvbWl1bSBoYXMgcGlja2VkIHVwIHRoaXMgY2hhbmdlLgorICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpCisgICAgeworICAgICAgICBkaWRDb21w
bGV0ZVJlY29yZGluZygxKTsKKyAgICB9CiAKICAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3Bl
ZWNoIHJlY29nbml0aW9uLCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KICAg
ICAvLyBUaGlzIG1ldGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1l
cyBpZiB0aGVyZSBhcmUgcGFydGlhbCByZXN1bHRzCiAgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1
c2VyIGtlZXBzIHNwZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVk
IHByb3Blcmx5CiAgICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhl
IHByb2Nlc3MsIHRoaXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCi0gICAgdmlydHVhbCB2
b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBXZWJTdHJpbmcmKSA9IDA7
CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgY2hyb21pdW0gaGFzIHBpY2tlZCB1cCB0
aGlzIGNoYW5nZS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
V2ViU3RyaW5nJiByZXN1bHQpCisgICAgeworICAgICAgICBzZXRSZWNvZ25pdGlvblJlc3VsdCgx
LCByZXN1bHQpOworICAgIH0KIAogICAgIC8vIEluZm9ybXMgdGhhdCBzcGVlY2ggcmVjb2duaXRp
b24gaGFzIGNvbXBsZXRlZC4gVGhpcyBnZXRzIGludm9rZWQgaXJyZXNwZWN0aXZlIG9mIHdoZXRo
ZXIKICAgICAvLyByZWNvZ25pdGlvbiB3YXMgc3VjY2VzZnVsIG9yIG5vdCwgd2hldGhlciBzZXRS
ZWNvZ25pdGlvblJlc3VsdCgpIHdhcyBpbnZva2VkIG9yIG5vdC4gVGhlCiAgICAgLy8gaGFuZGxl
ciB0eXBpY2FsbHkgZnJlZXMgdXAgYW55IHRlbXBvcmFyeSByZXNvdXJjZXMgYWxsb2NhdGVkIGFu
ZCB3YWl0cyBmb3IgdGhlIG5leHQgc3BlZWNoCiAgICAgLy8gcmVjb2duaXRpb24gcmVxdWVzdC4K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpID0gMDsKKyAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgb25jZSBjaHJvbWl1bSBoYXMgcGlja2VkIHVwIHRoaXMgY2hhbmdlLgorICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCkKKyAgICB7CisgICAgICAgIGRp
ZENvbXBsZXRlUmVjb2duaXRpb24oMSk7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNw
ZWVjaElucHV0TGlzdGVuZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
U3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5w
dXRDbGllbnRJbXBsLmNwcAppbmRleCA2NjUyNWUzNGU5YjU5ZjM3OTZiZGRiMmZhZjhiMzAwODQz
N2U0NWRiLi45YzU5YmFlMTMxMjk1OWQxNzk2OTljYjQxNzhmOGZjZGYxM2QzM2ExIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCkBAIC01MSw0MSAr
NTEsNDUgQEAgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjp+U3BlZWNoSW5wdXRDbGllbnRJbXBsKCkK
IHsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oV2Vi
Q29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCit2b2lkIFNwZWVjaElucHV0Q2xp
ZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVu
ZXIpCiB7CiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwotICAgIHJldHVybiBtX2NvbnRyb2xs
ZXItPnN0YXJ0UmVjb2duaXRpb24oKTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6
OnN0b3BSZWNvcmRpbmcoKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2du
aXRpb24oaW50IHJlcXVlc3RJZCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgbV9j
b250cm9sbGVyLT5zdG9wUmVjb3JkaW5nKCk7CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3Rh
cnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQpOwogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50SW1w
bDo6Y2FuY2VsUmVjb2duaXRpb24oKQordm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0b3BS
ZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAg
bV9jb250cm9sbGVyLT5jYW5jZWxSZWNvZ25pdGlvbigpOworICAgIG1fY29udHJvbGxlci0+c3Rv
cFJlY29yZGluZyhyZXF1ZXN0SWQpOwogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6
ZGlkQ29tcGxldGVSZWNvcmRpbmcoKQordm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OmNhbmNl
bFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiB7CiAgICAgQVNTRVJUKG1fbGlzdGVuZXIpOwot
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgbV9jb250cm9sbGVy
LT5jYW5jZWxSZWNvZ25pdGlvbihyZXF1ZXN0SWQpOwogfQogCi12b2lkIFNwZWVjaElucHV0Q2xp
ZW50SW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50
SW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKIHsKICAgICBBU1NFUlQo
bV9saXN0ZW5lcik7Ci0gICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwot
ICAgIG1fbGlzdGVuZXIgPSAwOworICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5n
KHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRSZWNvZ25p
dGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGll
bnRJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiB7CiAgICAgQVNT
RVJUKG1fbGlzdGVuZXIpOwotICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJl
c3VsdCk7CisgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihyZXF1ZXN0SWQp
OworfQorCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQo
aW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCit7CisgICAgQVNTRVJUKG1f
bGlzdGVuZXIpOworICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJlcXVlc3RJ
ZCwgcmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAppbmRleCA1NzYyZGE4N2U5ZjBhZTlmYTYxMWEy
MmQ0ZjZhZTAxN2RhYjU3MmJiLi4wYWI1NGMxY2FjNmE2MmNkNDlmOGNiZjdhZGMyNTUyMzUwYzA2
YmY5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKQEAg
LTUzLDE4ICs1MywxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRDbGllbnRJ
bXBsKCk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgotICAgIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKik7Ci0gICAgdm9pZCBz
dG9wUmVjb3JkaW5nKCk7Ci0gICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbigpOworICAgIHZvaWQg
c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciopOworICAgIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbihpbnQpOworICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOworICAgIHZv
aWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0TGlzdGVu
ZXIgbWV0aG9kcy4KLSAgICB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKCk7Ci0gICAgdm9pZCBz
ZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmKTsKLSAgICB2b2lkIGRpZENvbXBs
ZXRlUmVjb2duaXRpb24oKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKGludCk7Cisg
ICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFdlYlN0cmluZyYpOworICAg
IHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwogCiBwcml2YXRlOgogICAgIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlciogbV9jb250cm9sbGVyOyAvLyBUbyBjYWxsIGludG8gdGhlIGVt
YmVkZGVyLgotICAgIFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7IC8v
IFZhbGlkIHdoZW4gcmVjb2duaXRpb24gaXMgaW4gcHJvZ3Jlc3MuCisgICAgV2ViQ29yZTo6U3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcAppbmRleCA2YjA0MzIwNWViZmNmMTI2MGY0MGM4YTQ4ODA1YTJjZTMx
OGI2ZjJlLi41N2UzNjM1M2U3MGRjYzQ5MGJjMTBkOThlZWJkZWI0YjJiYjYxOWRhIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsLmNwcApAQCAtNDYsNiArNDYsMTIgQEAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKAogICAgIDogbV93ZWJjb3Jl
TW9jayhuZXcgV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkpCiAgICAgLCBtX2xpc3Rl
bmVyKGxpc3RlbmVyKQogeworICAgIG1fd2ViY29yZU1vY2stPnNldExpc3RlbmVyKHRoaXMpOwor
fQorCitXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsKCkKK3sKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRMaXN0ZW5lcigwKTsK
IH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQpAQCAtNTMsMzQgKzU5LDM0IEBA
IHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBXZWJTdHJpbmcmCiAgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRp
b25SZXN1bHQocmVzdWx0KTsKIH0KIAotdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoKQordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKIHsKLSAgICBt
X2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZygpOworICAgIG1fbGlzdGVuZXItPmRpZENv
bXBsZXRlUmVjb3JkaW5nKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oKQordm9pZCBXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQgcmVxdWVz
dElkKQogewotICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsKKyAgICBt
X2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFdURjo6U3RyaW5nJiByZXN1bHQpCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0
cmluZyYgcmVzdWx0KQogewotICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJl
c3VsdCk7CisgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBy
ZXN1bHQpOwogfQogCi1ib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFy
dFJlY29nbml0aW9uKCkKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0
YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKIHsKLSAgICByZXR1cm4gbV93ZWJjb3JlTW9j
ay0+c3RhcnRSZWNvZ25pdGlvbih0aGlzKTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3Rh
cnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQpOwogfQogCi12b2lkIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbigpCit2b2lkIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogewotICAg
IG1fd2ViY29yZU1vY2stPmNhbmNlbFJlY29nbml0aW9uKCk7CisgICAgbV93ZWJjb3JlTW9jay0+
Y2FuY2VsUmVjb2duaXRpb24ocmVxdWVzdElkKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbDo6c3RvcFJlY29yZGluZygpCit2b2lkIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpCiB7Ci0gICAgbV93
ZWJjb3JlTW9jay0+c3RvcFJlY29yZGluZygpOworICAgIG1fd2ViY29yZU1vY2stPnN0b3BSZWNv
cmRpbmcocmVxdWVzdElkKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgK
aW5kZXggMDQ2YWJmM2UxZjgzOGQzNmVjZmJhZGQwZWZhOGNhMTllYTBlNWQ1OC4uMzhhMTVkZmU3
YjNmZGZlOTgzZjQ5YjVhYWIyNjBmMzdlOWJkODU5OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtNDcsMTYg
KzQ3LDE3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsIDogcHVibGlj
IFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwgcHVibGljIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgewogcHVi
bGljOgogICAgIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKFdlYlNwZWVjaElucHV0
TGlzdGVuZXIqKTsKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1w
bCgpOwogCiAgICAgLy8gV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgotICAg
IHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2du
aXRpb24oKTsKLSAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdURjo6U3RyaW5n
JiByZXN1bHQpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCk7
CisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpOworICAgIHZv
aWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcm
IHJlc3VsdCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0aG9kcy4KLSAg
ICBib29sIHN0YXJ0UmVjb2duaXRpb24oKTsKLSAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCk7
Ci0gICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQpOworICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7
CisgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpOwogCiAgICAgLy8gV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jayBtZXRob2RzLgogICAgIHZvaWQgc2V0TW9ja1JlY29nbml0
aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64344</attachid>
            <date>2010-08-13 08:30:23 -0700</date>
            <delta_ts>2010-08-13 08:35:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43922-20100813163020.patch</filename>
            <type>text/plain</type>
            <size>31124</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzFiMDMwZTg4MDk5NDBiNjcxZmMwNmI5NDQ1YjBiZTc5NjgzY2M1Mi4uYjAyOWE4YTM3MDYxZThh
ZWMwMDdjZjAxMTMwODQ2Mzc3NTBhYmRiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0wOC0xMiAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIHNwZWVjaCBl
bmFibGVkIGVsZW1lbnRzIGluIHNhbWUgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTIyCisKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0
LmNwcDogR2VuZXJhdGVzIHJlcXVlc3QgaWRzIGFzIG5lY2Vzc2FyeSB3aGVuIGVhY2ggc3BlZWNo
IGVuYWJsZWQgaW5wdXQgZWxlbWVudCBnZXRzCisgICAgICAgIGNyZWF0ZWQvZGVzdHJveWVkIGFu
ZCBtdWx0aXBsZXhlcyB0aGUgbGlzdGVuZXIgY2FsbGJhY2tzIHRvIHRoZSBhcHByb3ByaWF0ZSBp
bnB1dCBlbGVtZW50IGJhc2VkIG9uIHRoZSByZXF1ZXN0IGlkLgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoSW5wdXQ6OlNwZWVjaElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Ojp+U3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnJlZ2lzdGVy
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnVucmVnaXN0ZXJMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvcmRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OmRpZENvbXBsZXRlUmVjb2duaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaElucHV0OjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgICogcGFnZS9T
cGVlY2hJbnB1dC5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaDogTm93IHJl
cXVpcmVzIGEgb25lIHRpbWUgc2V0IGZvciB0aGUgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5l
ciBhbmQKKyAgICAgICAgdGFrZXMgaW4gYSAncmVxdWVzdElkJyBmb3IgYWxsIGNhbGxzLgorICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oOiBOb3cgcmV0dXJucyB0aGUgYWJvdmUg
bWVudGlvbmVkIHJlcXVlc3RJZCBpbiBhbGwgdGhlIGxpc3RlbmVyIGNhbGxiYWNrcyBmb3IKKyAg
ICAgICAgaWRlbnRpZnlpbmcgd2hpY2ggaW5wdXQgZWxlbWVudCB0aGUgZXZlbnQgZ29lcyB0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OlNwZWVjaElucHV0Q2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0b3BSZWNv
cmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpjYW5jZWxS
ZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6SW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6On5JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
c3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJl
c3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgor
CiAyMDEwLTA4LTEyICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXgg
NGYzNzk4ODk2MTlhZTNjM2VlOTBlMDYwMjBiYTRhNWIyMjg4MDBlNS4uNzNkMmFjYjY4OGVmNjM0
MDc2ZjFjYWMyMDE4NGI1N2M2ODBlM2UyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCkBAIC00MSw0NiAr
NDEsNzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTcGVlY2hJbnB1dDo6U3BlZWNoSW5wdXQo
U3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAs
IG1fbGlzdGVuZXIoMCkKKyAgICAsIG1fbmV4dExpc3RlbmVySWQoMSkKIHsKKyAgICBtX2NsaWVu
dC0+c2V0TGlzdGVuZXIodGhpcyk7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXQ6OmRpZENvbXBsZXRl
UmVjb3JkaW5nKCkKK1NwZWVjaElucHV0Ojp+U3BlZWNoSW5wdXQoKQogewotICAgIEFTU0VSVCht
X2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZygpOworICAg
IG1fY2xpZW50LT5zZXRMaXN0ZW5lcigwKTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29t
cGxldGVSZWNvZ25pdGlvbigpCitpbnQgU3BlZWNoSW5wdXQ6OnJlZ2lzdGVyTGlzdGVuZXIoU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiB7Ci0gICAgQVNTRVJUKG1fbGlzdGVuZXIpOwot
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsKLSAgICBtX2xpc3RlbmVy
ID0gMDsKKyNpZiBkZWZpbmVkKERFQlVHKQorICAgIC8vIENoZWNrIGlmIGFscmVhZHkgcHJlc2Vu
dC4KKyAgICBmb3IgKEhhc2hNYXA8aW50LCBTcGVlY2hJbnB1dExpc3RlbmVyKj46Oml0ZXJhdG9y
IGl0ID0gbV9saXN0ZW5lcnMuYmVnaW4oKTsKKyAgICAgICAgaXQgIT0gbV9saXN0ZW5lcnMuZW5k
KCk7ICsraXQpCisgICAgICBBU1NFUlQoaXQtPnNlY29uZCAhPSBsaXN0ZW5lcik7CisjZW5kaWYK
KworICAgIG1fbGlzdGVuZXJzLmFkZChtX25leHRMaXN0ZW5lcklkLCBsaXN0ZW5lcik7CisgICAg
cmV0dXJuIG1fbmV4dExpc3RlbmVySWQrKzsKK30KKwordm9pZCBTcGVlY2hJbnB1dDo6dW5yZWdp
c3Rlckxpc3RlbmVyKGludCBsaXN0ZW5lcklkKQoreworICAgIGlmIChtX2xpc3RlbmVycy5jb250
YWlucyhsaXN0ZW5lcklkKSkKKyAgICAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySWQp
OworfQorCit2b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgbGlzdGVu
ZXJJZCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1l
bnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKKyAgICAvLyB0aGlz
IGV2ZW50IHdhcyBvbiB0aGUgd2F5LgorICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0
ZW5lcklkKSkKKyAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5kaWRDb21wbGV0
ZVJlY29yZGluZyhsaXN0ZW5lcklkKTsKK30KKwordm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29tcGxl
dGVSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgaWYg
bm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhl
IHBhZ2Ugd2hpbGUKKyAgICAvLyB0aGlzIGV2ZW50IHdhcyBvbiB0aGUgd2F5LgorICAgIGlmICht
X2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSkKKyAgICAgICAgbV9saXN0ZW5lcnMuZ2V0
KGxpc3RlbmVySWQpLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKGxpc3RlbmVySWQpOworfQorCit2
b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29u
c3QgU3RyaW5nJiByZXN1bHQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IGlmIG5vdCBwcmVzZW50
IGFzIHRoZSBlbGVtZW50IG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSBwYWdlIHdoaWxl
CisgICAgLy8gdGhpcyBldmVudCB3YXMgb24gdGhlIHdheS4KKyAgICBpZiAobV9saXN0ZW5lcnMu
Y29udGFpbnMobGlzdGVuZXJJZCkpCisgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0ZW5lcklk
KS0+c2V0UmVjb2duaXRpb25SZXN1bHQobGlzdGVuZXJJZCwgcmVzdWx0KTsKIH0KIAotdm9pZCBT
cGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiti
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkKQogewotICAg
IEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3Vs
dChyZXN1bHQpOworICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7
CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQpOwogfQog
Ci1ib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKFNwZWVjaElucHV0TGlzdGVuZXIq
IGxpc3RlbmVyKQordm9pZCBTcGVlY2hJbnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVuZXJJ
ZCkKIHsKLSAgICAvLyBDYW5jZWwgYW55IG9uZ29pbmcgcmVjb2duaXRpb24gZmlyc3QuCi0gICAg
aWYgKG1fbGlzdGVuZXIpIHsKLSAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25p
dGlvbigpOwotICAgICAgICBtX2xpc3RlbmVyID0gMDsKLSAgICAgICAgbV9jbGllbnQtPmNhbmNl
bFJlY29nbml0aW9uKCk7Ci0gICAgfQotCi0gICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwotICAg
IHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbih0aGlzKTsKKyAgICBBU1NFUlQobV9s
aXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpOworICAgIG1fY2xpZW50LT5zdG9wUmVjb3Jk
aW5nKGxpc3RlbmVySWQpOwogfQogCi12b2lkIFNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKCkK
K3ZvaWQgU3BlZWNoSW5wdXQ6OmNhbmNlbFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkKQogewot
ICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2NsaWVudC0+c3RvcFJlY29yZGluZygpOwor
ICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7CisgICAgbV9jbGll
bnQtPmNhbmNlbFJlY29nbml0aW9uKGxpc3RlbmVySWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dC5oCmluZGV4IDU4ZjRlZmVkYzE1MmJkYzE0MDY2NzQ1NDkyNjgyYmUw
NzhhZDViYzcuLmYzNjE5NGNhM2M3YWNjMWFlY2YxNjk4OGViZDM0YjVjYWJhN2Y4MDIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dC5oCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3Rl
bmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00OCwyMCArNDksMzAgQEAgY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFNwZWVj
aElucHV0IDogcHVibGljIE5vbmNvcHlhYmxlLCBwdWJsaWMgU3BlZWNoSW5wdXRMaXN0ZW5lciB7
CiBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXQoU3BlZWNoSW5wdXRDbGllbnQqKTsKLSAgICB2aXJ0
dWFsIH5TcGVlY2hJbnB1dCgpIHsgfQorICAgIHZpcnR1YWwgflNwZWVjaElucHV0KCk7CisKKyAg
ICAvLyBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQgZm9yIHRoZSBnaXZlbiBsaXN0ZW5lciB0byBiZSB1
c2VkIGZvciBzcGVlY2ggcmVxdWVzdHMuCisgICAgLy8gVGhpcyBzaG91bGQgYmUgdGhlIGZpcnN0
IGNhbGwgbWFkZSBieSBsaXN0ZW5lcnMgYmVmb3JlIGFueXRoaW5nIGVsc2UuCisgICAgaW50IHJl
Z2lzdGVyTGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopOworCisgICAgLy8gSW52b2tlZCB3
aGVuIHRoZSBsaXN0ZW5lciBpcyBkb25lIHdpdGggcmVjb3JkaW5nIG9yIGdldHRpbmcgZGVzdHJv
eWVkLgorICAgIC8vIEZhaWx1cmUgdG8gdW5yZWdpc3RlciBtYXkgcmVzdWx0IGluIGNyYXNoZXMg
aWYgdGhlcmUgd2VyZSBhbnkgcGVuZGluZyBzcGVlY2ggZXZlbnRzLgorICAgIHZvaWQgdW5yZWdp
c3Rlckxpc3RlbmVyKGludCk7CiAKICAgICAvLyBNZXRob2RzIGludm9rZWQgYnkgdGhlIGlucHV0
IGVsZW1lbnRzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihTcGVlY2hJbnB1dExpc3RlbmVy
KiBsaXN0ZW5lcik7Ci0gICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CisgICAgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCk7CisgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CisgICAgdm9pZCBj
YW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRo
b2RzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVJlY29yZGluZyhpbnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0
aW9uKGludCk7CisgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29u
c3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fY2xpZW50
OwotICAgIFNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CisgICAgSGFzaE1hcDxpbnQs
IFNwZWVjaElucHV0TGlzdGVuZXIqPiBtX2xpc3RlbmVyczsKKyAgICBpbnQgbV9uZXh0TGlzdGVu
ZXJJZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50
LmgKaW5kZXggZjZjNjFjZjQwYjAyOTAwZmRmNGIzMWNlNTY3MzJjMDFkNTg0MmI4MC4uODdmZjdi
OTM5NGNiZWQ0YjFlNDQ0MTdhMTBjMmY4ODI0OWY5MDAwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xp
ZW50LmgKQEAgLTQwLDE1ICs0MCwyMiBAQCBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwogLy8g
UHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBTcGVlY2hJbnB1dCB0byBjYWxsIGludG8gdGhlIGVt
YmVkZGVyLgogY2xhc3MgU3BlZWNoSW5wdXRDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwg
Ym9vbCBzdGFydFJlY29nbml0aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKSA9IDA7
CisgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgY2FsbCBtYWRlIGJ5IGEgbGlzdGVuZXIsIHJlZ2lz
dGVyaW5nIGl0c2VsZiBmb3IgZnV0dXJlIGNhbGxiYWNrcy4KKyAgICAvLyBXaGVuIHRoZSBsaXN0
ZW5lciBubyBsb25nZXIgbmVlZHMgc3BlZWNoIGlucHV0IChmb3IgZS5nLiB3aGVuIGl0IGdldHMg
ZGVzdHJveWVkKSwKKyAgICAvLyBpdCBzaG91bGQgc2V0IGEgbnVsbCBsaXN0ZW5lciB0byBzdG9w
IHJlY2VpdmluZyBjYWxsYmFja3MuCisgICAgLy8gVGhlIGNsaWVudCBkb2VzIG5vdCB0YWtlIG93
bmVyc2hpcCBvZiB0aGUgcG9pbnRlci4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoU3Bl
ZWNoSW5wdXRMaXN0ZW5lciopID0gMDsKKworICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRp
b24gYW5kIGF1ZGlvIHJlY29yZGluZy4KKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlv
bihpbnQgcmVxdWVzdElkKSA9IDA7CiAKICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5k
IHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwog
ICAgIC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFJl
Y29yZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVz
dElkKSA9IDA7CiAKICAgICAvLyBDYW5jZWxzIGFuIG9uZ29pbmcgcmVjb2duaXRpb24gYW5kIGRp
c2NhcmRzIGFueSBhdWRpbyByZWNvcmRlZCBzbyBmYXIuIE5vIHBhcnRpYWwKICAgICAvLyByZWNv
Z25pdGlvbiByZXN1bHRzIGFyZSByZXR1cm5lZCB0byB0aGUgbGlzdGVuZXIuCi0gICAgdmlydHVh
bCB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IH5TcGVlY2hJbnB1dENsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0TGlzdGVuZXIuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgKaW5k
ZXggMTQzOTg0ZGM3NWE3NWU1NmMxNDc1NDQwNGIxNDVlMmFkYzJkYzY4Ni4uMzYwNjBmY2RlZmJk
ZTI5YWM5NzNhMThlNTAxOWVmYjlkNjRhMmZjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1Nw
ZWVjaElucHV0TGlzdGVuZXIuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5l
ci5oCkBAIC00MSwxOSArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3BlZWNo
SW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6CiAgICAgLy8gSW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29y
ZGluZyBoYXMgY29tcGxldGVkIGFuZCByZWNvZ25pdGlvbiBpcyB1bmRlcndheS4KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENvbXBsZXRlUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpID0gMDsKIAogICAgIC8vIEluZm9ybXMg
dGhhdCBzcGVlY2ggcmVjb2duaXRpb24gaGFzIGNvbXBsZXRlZC4gVGhpcyBnZXRzIGludm9rZWQg
aXJyZXNwZWN0aXZlIG9mIHdoZXRoZXIKICAgICAvLyByZWNvZ25pdGlvbiB3YXMgc3VjY2VzZnVs
IG9yIG5vdCwgd2hldGhlciBzZXRSZWNvZ25pdGlvblJlc3VsdCgpIHdhcyBpbnZva2VkIG9yIG5v
dC4gVGhlCiAgICAgLy8gaGFuZGxlciB0eXBpY2FsbHkgZnJlZXMgdXAgYW55IHRlbXBvcmFyeSBy
ZXNvdXJjZXMgYWxsb2NhdGVkIGFuZCB3YWl0cyBmb3IgdGhlIG5leHQgc3BlZWNoCiAgICAgLy8g
cmVjb2duaXRpb24gcmVxdWVzdC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25p
dGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkKSA9IDA7CiAKICAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29n
bml0aW9uLCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KICAgICAvLyBUaGlz
IG1ldGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVy
ZSBhcmUgcGFydGlhbCByZXN1bHRzCiAgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBz
IHNwZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5
CiAgICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3Ms
IHRoaXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcmVz
dWx0KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dExpc3RlbmVy
KCkgeyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGll
bnRNb2NrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2su
Y3BwCmluZGV4IDc0YTMxNTFjYjY0MjIxZjlhODlkNjgxMWJiZDNlMzBmNjQyMTg3MzguLmMzZDc0
ZDE5MjhmNWU3MjNiMDIwOGRkYWYzMDJlZmRlNjllODA2YmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCkBAIC00MSwzNCArNDEsNDIgQEAg
U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpTcGVlY2hJbnB1dENsaWVudE1vY2soKQogICAgIDogbV9y
ZWNvcmRpbmcoZmFsc2UpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZTcGVlY2hJbnB1dENsaWVudE1v
Y2s6OnRpbWVyRmlyZWQpCiAgICAgLCBtX2xpc3RlbmVyKDApCisgICAgLCBtX3JlcXVlc3RJZCgw
KQogewogfQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihT
cGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBtX2xp
c3RlbmVyID0gbGlzdGVuZXI7Cit9CisKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFy
dFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiB7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAg
ICBtX3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7CiAgICAg
bV90aW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrOjpzdG9wUmVjb3JkaW5nKCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGll
bnRNb2NrOjpzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpCiB7CisgICAgQVNTRVJUKHJlcXVl
c3RJZCA9PSBtX3JlcXVlc3RJZCk7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSAmJiBtX3Jl
Y29yZGluZykgewogICAgICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICAgICAgdGltZXJGaXJlZCgm
bV90aW1lcik7CiAgICAgfQogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2Vs
UmVjb2duaXRpb24oKQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpCiB7CisgICAgQVNTRVJUKHJlcXVlc3RJZCA9PSBtX3JlcXVlc3RJ
ZCk7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICBtX3RpbWVyLnN0b3Ao
KTsKICAgICAgICAgbV9yZWNvcmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9saXN0ZW5lci0+ZGlk
Q29tcGxldGVSZWNvZ25pdGlvbigpOwotICAgICAgICBtX2xpc3RlbmVyID0gMDsKKyAgICAgICAg
bV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJZCk7CisgICAgICAg
IG1fcmVxdWVzdElkID0gMDsKICAgICB9CiB9CiAKQEAgLTgxLDEyICs4OSwxMiBAQCB2b2lkIFNw
ZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxTcGVlY2hJbnB1
dENsaWVudE1vY2s+KikKIHsKICAgICBpZiAobV9yZWNvcmRpbmcpIHsKICAgICAgICAgbV9yZWNv
cmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmco
KTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcobV9yZXF1ZXN0SWQp
OwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlY29nbml0aW9uUmVzdWx0KTsK
LSAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwotICAgICAgICBt
X2xpc3RlbmVyID0gMDsKKyAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQo
bV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQpOworICAgICAgICBtX2xpc3RlbmVyLT5k
aWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElkKTsKKyAgICAgICAgbV9yZXF1ZXN0SWQg
PSAwOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVj
aElucHV0Q2xpZW50TW9jay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xp
ZW50TW9jay5oCmluZGV4IGZhY2E0NDQwMzdiODI0OGU0OTNjM2ViOGNlODY3MzcyMjA5ZDVkYmUu
LjdkNWZkYTJjMjRjNDk3ZTMyYjc3MmYyMjdkM2VhNjJiYTI3MTNjMzMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKQEAgLTQ5LDkgKzQ5LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0KTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCi0gICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICB2b2lkIHN0b3BSZWNvcmRp
bmcoKTsKLSAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBzZXRMaXN0ZW5l
cihTcGVlY2hJbnB1dExpc3RlbmVyKik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCk7
CisgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CisgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlv
bihpbnQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxTcGVlY2hJbnB1
dENsaWVudE1vY2s+Kik7CkBAIC01OSw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jl
Y29yZGluZzsKICAgICBUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+IG1fdGltZXI7CiAgICAg
U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CiAg
ICAgU3RyaW5nIG1fcmVjb2duaXRpb25SZXN1bHQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBmNTMyMTAxMjk5OTUyZjQ0ZDkz
NjI4NzUwOGZmZmRmMDY0N2QwYWY1Li45ODUyYWE2ZDYxZGEwN2MzNjBmMmViNWEyYmMxMDI0NGE4
NGQwYzBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKQEAgLTM0Niw5ICszNDYsMjAgQEAgaW5saW5lIElucHV0RmllbGRTcGVlY2hCdXR0b25F
bGVtZW50OjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChOb2RlKiBzaGFkb3cKICAgICA6
IFRleHRDb250cm9sSW5uZXJFbGVtZW50KHNoYWRvd1BhcmVudC0+ZG9jdW1lbnQoKSwgc2hhZG93
UGFyZW50KQogICAgICwgbV9jYXB0dXJpbmcoZmFsc2UpCiAgICAgLCBtX3N0YXRlKElkbGUpCisg
ICAgLCBtX2xpc3RlbmVySWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5zcGVlY2hJbnB1dCgpLT5yZWdp
c3Rlckxpc3RlbmVyKHRoaXMpKQogewogfQogCitJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVu
dDo6fklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KCkKK3sKKyAgICBTcGVlY2hJbnB1dCog
c3BlZWNoID0gc3BlZWNoSW5wdXQoKTsKKyAgICBpZiAoc3BlZWNoKSAgeyAvLyBDb3VsZCBiZSBu
dWxsIHdoZW4gcGFnZSBpcyB1bmxvYWRpbmcuCisgICAgICAgIGlmIChtX3N0YXRlICE9IElkbGUp
CisgICAgICAgICAgICBzcGVlY2gtPmNhbmNlbFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCk7Cisg
ICAgICAgIHNwZWVjaC0+dW5yZWdpc3Rlckxpc3RlbmVyKG1fbGlzdGVuZXJJZCk7CisgICAgfQor
fQorCiBQYXNzUmVmUHRyPElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50PiBJbnB1dEZpZWxk
U3BlZWNoQnV0dG9uRWxlbWVudDo6Y3JlYXRlKE5vZGUqIHNoYWRvd1BhcmVudCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KHNoYWRvd1Bh
cmVudCkpOwpAQCAtMzg2LDExICszOTcsMTEgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgc3dpdGNoICht
X3N0YXRlKSB7CiAgICAgICAgIGNhc2UgSWRsZToKLSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1
dCgpLT5zdGFydFJlY29nbml0aW9uKHRoaXMpKQorICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0
KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkKSkKICAgICAgICAgICAgICAgICBzZXRT
dGF0ZShSZWNvcmRpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjb3Jk
aW5nOgotICAgICAgICAgICAgc3BlZWNoSW5wdXQoKS0+c3RvcFJlY29yZGluZygpOworICAgICAg
ICAgICAgc3BlZWNoSW5wdXQoKS0+c3RvcFJlY29yZGluZyhtX2xpc3RlbmVySWQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjb2duaXppbmc6CiAgICAgICAgICAgICAvLyBO
b3RoaW5nIHRvIGRvIGhlcmUsIHdlIHdpbGwgY29udGludWUgdG8gd2FpdCBmb3IgcmVzdWx0cy4K
QEAgLTQxMywyMCArNDI0LDIwIEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnNldFN0YXRlKFNwZWVjaElucHV0U3RhdGUgc3RhdGUpCiAKIFNwZWVjaElucHV0KiBJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3BlZWNoSW5wdXQoKQogewotICAgIHJldHVybiBkb2N1
bWVudCgpLT5wYWdlKCktPnNwZWVjaElucHV0KCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPnBh
Z2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+c3BlZWNoSW5wdXQoKSA6IDA7CiB9CiAKLXZvaWQg
SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKCkKK3Zv
aWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKGlu
dCkKIHsKICAgICBzZXRTdGF0ZShSZWNvZ25pemluZyk7CiB9CiAKLXZvaWQgSW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oKQordm9pZCBJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpCiB7CiAg
ICAgc2V0U3RhdGUoSWRsZSk7CiB9CiAKLXZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1l
bnQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQordm9pZCBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25z
dCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgLy8g
VGhlIGNhbGwgdG8gc2V0VmFsdWUoKSBiZWxvdyBkaXNwYXRjaGVzIGFuIGV2ZW50LCBhbmQgYW4g
ZXZlbnQgaGFuZGxlciBpbiB0aGUgcGFnZSBtaWdodApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCBlN2VlOThmNTE1YmFkOWU2YWJhMzY2MmIzNjlh
YjkyYTAzNmY2NWNjLi4zZmJjOWM4ZjljODdkMjM4NDIxZDFiNTg2MzJmN2RiNmRhMmU1NjAyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtMTI2
LDE1ICsxMjYsMTYgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudD4gY3JlYXRlKE5vZGUqKTsKKyAgICB2aXJ0dWFs
IH5JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRl
dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAg
ICAgU3BlZWNoSW5wdXRTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAog
ICAgIC8vIFNwZWVjaElucHV0TGlzdGVuZXIgbWV0aG9kcy4KLSAgICB2b2lkIGRpZENvbXBsZXRl
UmVjb3JkaW5nKCk7Ci0gICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCk7Ci0gICAgdm9p
ZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBk
aWRDb21wbGV0ZVJlY29yZGluZyhpbnQpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlv
bihpbnQpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBTdHJpbmcm
IHJlc3VsdCk7CiAKIHByaXZhdGU6CiAgICAgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQo
Tm9kZSopOwpAQCAtMTQzLDYgKzE0NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY2FwdHVy
aW5nOwogICAgIFNwZWVjaElucHV0U3RhdGUgbV9zdGF0ZTsKKyAgICBpbnQgbV9saXN0ZW5lcklk
OwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAy
YWQxMzZiMWYxOGE1ZjdhMjdkMjhjN2U4YjgwNWQwODBlYTVhNGZkLi43Mjc3MTlkNGUxNmZjOWY0
MDQwZTFkMGFkYjgyMzYzMjI5NDBjMWI0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAxMC0wOC0xMiAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11
bHRpcGxlIHNwZWVjaCBlbmFibGVkIGVsZW1lbnRzIGluIHNhbWUgcGFnZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTIyCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmg6IEJ1YmJsZXMgdXAgdGhlIHJlcXVlc3RJ
ZCBnaXZlbiBieSB3ZWJjb3JlIHRvIHRoZSBlbWJlZGRlci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RvcFJlY29yZGluZyk6CisgICAg
ICAgICogcHVibGljL1dlYlNwZWVjaElucHV0TGlzdGVuZXIuaDogUGFzc2VzIGRvd24gdGhlIHJl
cXVlc3RJZCBnaXZlbiBieSBlbWJlZGRlciB0byB3ZWJjb3JlLgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hJbnB1dExpc3RlbmVyOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXI6OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjo6ZGlkQ29tcGxldGVSZWNvZ25p
dGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0b3BSZWNvcmRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmNhbmNlbFJlY29nbml0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6ZGlkQ29tcGxldGVS
ZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1dENsaWVudEltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRp
ZENvbXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3Rh
cnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKiBzcmMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKwogMjAxMC0wOC0xMiAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyLmgKaW5kZXggM2RiYTVmYjZiYjFlMmRkMWQ0YWIwOTNkMTkzZWUxY2RhZDZk
ZDgxMy4uYjg1ZmRlNjdmY2JmYjc0NTY1NjU1M2YwYWMyMWRiOTliZGNmZjIwYyAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC00
MSwxNCArNDEsMjEgQEAgcHVibGljOgogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24u
IFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNp
bGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUgbGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBjYWxs
ZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFuZCB0aGUgcmVjb2duaXplZAogICAgIC8vIHRleHQg
YXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgYm9v
bCBzdGFydFJlY29nbml0aW9uKGludCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGFydFJlY29n
bml0aW9uKCk7CisgICAgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVt
IGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCiAgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2du
aXRpb24oKQogICAgIHsKLSAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQ2FuY2VscyBhbiBvbmdv
aW5nIHJlY29nbml0aW9uIGFuZCBkaXNjYXJkcyBhbnkgYXVkaW8gcmVjb3JkZWQgc28gZmFyLiBO
byBwYXJ0aWFsCiAgICAgLy8gcmVjb2duaXRpb24gcmVzdWx0cyBhcmUgcmV0dXJuZWQgdG8gdGhl
IGxpc3RlbmVyLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpIHsgY2Fu
Y2VsUmVjb2duaXRpb24oKTsgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9t
aXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJl
Y29nbml0aW9uKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFN0
b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVk
aW8gcmVjb3JkZWQgdW50aWwgbm93CkBAIC01Niw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICAvLyB3
YW50cyB0byBzdG9wIHJlY29yZGluZyBhdWRpbyBhcyBzb29uIGFzIHRoZXkgZmluaXNoZWQgc3Bl
YWtpbmcuIE90aGVyd2lzZSwgdGhlIHNwZWVjaAogICAgIC8vIHJlY29yZGluZyAnZW5kcG9pbnRl
cicgc2hvdWxkIGRldGVjdCBzaWxlbmNlIGluIHRoZSBpbnB1dCBhbmQgc3RvcCByZWNvcmRpbmcg
YXV0b21hdGljYWxseS4KICAgICAvLyBDYWxsIHN0YXJ0UmVjb2duaXRpb24oKSB0byByZWNvcmQg
YXVkaW8gYW5kIHJlY29nbml6ZSBzcGVlY2ggYWdhaW4uCisgICAgdmlydHVhbCB2b2lkIHN0b3BS
ZWNvcmRpbmcoaW50KSB7IHN0b3BSZWNvcmRpbmcoKTsgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCiAgICAgdmlydHVh
bCB2b2lkIHN0b3BSZWNvcmRpbmcoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aElucHV0TGlzdGVuZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lci5oCmluZGV4IGYxNzU2YWYxZTk5OTQwMDdlYWY4MWRmZTQyOTNmNjRlYTJlY2RlMDYu
LmU3NzljM2E3OWQzMWFiZTAxZGIwMDAzMDIzMDdkZmUzNThkMTU4MTUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oCkBAIC00NywxOSArNDcs
MzQgQEAgcHVibGljOgogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RvcFJlY29y
ZGluZygpIHdhcyBjYWxsZWQuCiAgICAgLy8gVHlwaWNhbGx5IGFmdGVyIHRoaXMgY2FsbCB0aGUg
bGlzdGVuZXIgd291bGQgdXBkYXRlIHRoZSBVSSB0byByZWZsZWN0IHRoYXQgcmVjb2duaXRpb24g
aXMKICAgICAvLyBpbiBwcm9ncmVzcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNv
cmRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKGludCkg
PSAwOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQg
dXAgdGhpcyBjaGFuZ2UuCisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKCkK
KyAgICB7CisgICAgICAgIGRpZENvbXBsZXRlUmVjb3JkaW5nKDEpOworICAgIH0KIAogICAgIC8v
IEdpdmVzIHJlc3VsdHMgZnJvbSBzcGVlY2ggcmVjb2duaXRpb24sIGVpdGhlciBwYXJ0aWFsIG9y
IHRoZSBmaW5hbCByZXN1bHRzLgogICAgIC8vIFRoaXMgbWV0aG9kIGNhbiBwb3RlbnRpYWxseSBn
ZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlIGFyZSBwYXJ0aWFsIHJlc3VsdHMKICAg
ICAvLyBhdmFpbGFibGUgYXMgdGhlIHVzZXIga2VlcHMgc3BlYWtpbmcuIElmIHRoZSBzcGVlY2gg
Y291bGQgbm90IGJlIHJlY29nbml6ZWQgcHJvcGVybHkKICAgICAvLyBvciBpZiB0aGVyZSB3YXMg
YW55IG90aGVyIGVycm9ycyBpbiB0aGUgcHJvY2VzcywgdGhpcyBtZXRob2QgbWF5IG5ldmVyIGJl
IGNhbGxlZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2Vi
U3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQs
IGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBj
aHJvbWl1bSBoYXMgcGlja2VkIHVwIHRoaXMgY2hhbmdlLgorICAgIHZpcnR1YWwgdm9pZCBzZXRS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHNldFJlY29nbml0aW9uUmVzdWx0KDEsIHJlc3VsdCk7CisgICAgfQogCiAgICAgLy8gSW5mb3Jt
cyB0aGF0IHNwZWVjaCByZWNvZ25pdGlvbiBoYXMgY29tcGxldGVkLiBUaGlzIGdldHMgaW52b2tl
ZCBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlcgogICAgIC8vIHJlY29nbml0aW9uIHdhcyBzdWNjZXNm
dWwgb3Igbm90LCB3aGV0aGVyIHNldFJlY29nbml0aW9uUmVzdWx0KCkgd2FzIGludm9rZWQgb3Ig
bm90LiBUaGUKICAgICAvLyBoYW5kbGVyIHR5cGljYWxseSBmcmVlcyB1cCBhbnkgdGVtcG9yYXJ5
IHJlc291cmNlcyBhbGxvY2F0ZWQgYW5kIHdhaXRzIGZvciB0aGUgbmV4dCBzcGVlY2gKICAgICAv
LyByZWNvZ25pdGlvbiByZXF1ZXN0LgotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29n
bml0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGlu
dCkgPSAwOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNr
ZWQgdXAgdGhpcyBjaGFuZ2UuCisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRp
b24oKQorICAgIHsKKyAgICAgICAgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigxKTsKKyAgICB9CiAK
IHByb3RlY3RlZDoKICAgICB+V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcigpIHsgfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCmluZGV4IDY2NTI1ZTM0ZTli
NTlmMzc5NmJkZGIyZmFmOGIzMDA4NDM3ZTQ1ZGIuLjljNTliYWUxMzEyOTU5ZDE3OTY5OWNiNDE3
OGY4ZmNkZjEzZDMzYTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5w
dXRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xp
ZW50SW1wbC5jcHAKQEAgLTUxLDQxICs1MSw0NSBAQCBTcGVlY2hJbnB1dENsaWVudEltcGw6On5T
cGVlY2hJbnB1dENsaWVudEltcGwoKQogewogfQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50SW1w
bDo6c3RhcnRSZWNvZ25pdGlvbihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5l
cikKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVl
Y2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7
Ci0gICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbigpOwogfQogCi12b2lk
IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZygpCitib29sIFNwZWVjaElucHV0
Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogewogICAgIEFTU0VS
VChtX2xpc3RlbmVyKTsKLSAgICBtX2NvbnRyb2xsZXItPnN0b3BSZWNvcmRpbmcoKTsKKyAgICBy
ZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZv
aWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbigpCit2b2lkIFNwZWVj
aElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKQogewogICAgIEFT
U0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFJlY29nbml0aW9uKCk7
CisgICAgbV9jb250cm9sbGVyLT5zdG9wUmVjb3JkaW5nKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQg
U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZygpCit2b2lkIFNwZWVj
aElucHV0Q2xpZW50SW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKIHsKICAg
ICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRp
bmcoKTsKKyAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFJlY29nbml0aW9uKHJlcXVlc3RJZCk7CiB9
CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKCkK
K3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVx
dWVzdElkKQogewogICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5kaWRD
b21wbGV0ZVJlY29nbml0aW9uKCk7Ci0gICAgbV9saXN0ZW5lciA9IDA7CisgICAgbV9saXN0ZW5l
ci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcocmVxdWVzdElkKTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0
KQordm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgbV9saXN0ZW5lci0+
c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0
ZVJlY29nbml0aW9uKHJlcXVlc3RJZCk7Cit9CisKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBs
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIHJl
c3VsdCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5lcik7CisgICAgbV9saXN0ZW5lci0+c2V0UmVj
b2duaXRpb25SZXN1bHQocmVxdWVzdElkLCByZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCmluZGV4
IDU3NjJkYTg3ZTlmMGFlOWZhNjExYTIyZDRmNmFlMDE3ZGFiNTcyYmIuLjBhYjU0YzFjYWM2YTYy
Y2Q0OWY4Y2JmN2FkYzI1NTIzNTBjMDZiZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVl
Y2hJbnB1dENsaWVudEltcGwuaApAQCAtNTMsMTggKzUzLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwoKTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xpZW50
IG1ldGhvZHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKFdlYkNvcmU6OlNwZWVjaElucHV0
TGlzdGVuZXIqKTsKLSAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGNhbmNlbFJl
Y29nbml0aW9uKCk7CisgICAgdm9pZCBzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExp
c3RlbmVyKik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCk7CisgICAgdm9pZCBzdG9w
UmVjb3JkaW5nKGludCk7CisgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCiAgICAg
Ly8gV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgotICAgIHZvaWQgZGlkQ29tcGxldGVS
ZWNvcmRpbmcoKTsKLSAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmlu
ZyYpOwotICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOworICAgIHZvaWQgZGlkQ29t
cGxldGVSZWNvcmRpbmcoaW50KTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwg
Y29uc3QgV2ViU3RyaW5nJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCk7
CiAKIHByaXZhdGU6CiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7
IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCi0gICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRM
aXN0ZW5lciogbV9saXN0ZW5lcjsgLy8gVmFsaWQgd2hlbiByZWNvZ25pdGlvbiBpcyBpbiBwcm9n
cmVzcy4KKyAgICBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDZiMDQzMjA1ZWJm
Y2YxMjYwZjQwYzhhNDg4MDVhMmNlMzE4YjZmMmUuLjU3ZTM2MzUzZTcwZGNjNDkwYmMxMGQ5OGVl
YmRlYjRiMmJiNjE5ZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCkBAIC00Niw2ICs0NiwxMiBAQCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwoCiAgICAgOiBtX3dlYmNvcmVNb2NrKG5ldyBXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVu
dE1vY2soKSkKICAgICAsIG1fbGlzdGVuZXIobGlzdGVuZXIpCiB7CisgICAgbV93ZWJjb3JlTW9j
ay0+c2V0TGlzdGVuZXIodGhpcyk7Cit9CisKK1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsOjp+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoKQoreworICAgIG1fd2ViY29y
ZU1vY2stPnNldExpc3RlbmVyKDApOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1
bHQpCkBAIC01MywzNCArNTksMzQgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYKICAgICBtX3dl
YmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOwogfQogCi12b2lkIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZygpCit2b2lk
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyhp
bnQgcmVxdWVzdElkKQogewotICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7
CisgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcocmVxdWVzdElkKTsKIH0KIAot
dm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25p
dGlvbigpCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0
ZVJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiB7Ci0gICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxl
dGVSZWNvZ25pdGlvbigpOworICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24o
cmVxdWVzdElkKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6
c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCBy
ZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgbV9saXN0ZW5lci0+
c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25p
dGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oKQorYm9vbCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogewot
ICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHRoaXMpOworICAgIHJl
dHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKCkK
K3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9u
KGludCByZXF1ZXN0SWQpCiB7Ci0gICAgbV93ZWJjb3JlTW9jay0+Y2FuY2VsUmVjb2duaXRpb24o
KTsKKyAgICBtX3dlYmNvcmVNb2NrLT5jYW5jZWxSZWNvZ25pdGlvbihyZXF1ZXN0SWQpOwogfQog
Ci12b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdG9wUmVjb3JkaW5nKCkK
K3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0b3BSZWNvcmRpbmcoaW50
IHJlcXVlc3RJZCkKIHsKLSAgICBtX3dlYmNvcmVNb2NrLT5zdG9wUmVjb3JkaW5nKCk7CisgICAg
bV93ZWJjb3JlTW9jay0+c3RvcFJlY29yZGluZyhyZXF1ZXN0SWQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuaAppbmRleCAwNDZhYmYzZTFmODM4ZDM2ZWNmYmFkZDBlZmE4
Y2ExOWVhMGU1ZDU4Li4zOGExNWRmZTdiM2ZkZmU5ODNmNDliNWFhYjI2MGYzN2U5YmQ4NTk4IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5oCkBAIC00NywxNiArNDcsMTcgQEAgY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jayB7CiBwdWJsaWM6CiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGwoV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOworICAgIHZpcnR1YWwgfldlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsKCk7CiAKICAgICAvLyBXZWJDb3JlOjpTcGVlY2hJbnB1
dExpc3RlbmVyIG1ldGhvZHMuCi0gICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpOwotICAg
IHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwotICAgIHZvaWQgc2V0UmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVJl
Y29yZGluZyhpbnQgcmVxdWVzdElkKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24o
aW50IHJlcXVlc3RJZCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVz
dElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlciBtZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbigpOwotICAgIHZv
aWQgY2FuY2VsUmVjb2duaXRpb24oKTsKLSAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKKyAgICBi
b29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7CisgICAgdm9pZCBjYW5jZWxSZWNv
Z25pdGlvbihpbnQgcmVxdWVzdElkKTsKKyAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50IHJlcXVl
c3RJZCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhvZHMuCiAg
ICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64347</attachid>
            <date>2010-08-13 08:35:20 -0700</date>
            <delta_ts>2010-08-13 09:49:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43922-20100813163518.patch</filename>
            <type>text/plain</type>
            <size>31115</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzFiMDMwZTg4MDk5NDBiNjcxZmMwNmI5NDQ1YjBiZTc5NjgzY2M1Mi4uYjAyOWE4YTM3MDYxZThh
ZWMwMDdjZjAxMTMwODQ2Mzc3NTBhYmRiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0wOC0xMiAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIHNwZWVjaCBl
bmFibGVkIGVsZW1lbnRzIGluIHNhbWUgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTIyCisKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0
LmNwcDogR2VuZXJhdGVzIHJlcXVlc3QgaWRzIGFzIG5lY2Vzc2FyeSB3aGVuIGVhY2ggc3BlZWNo
IGVuYWJsZWQgaW5wdXQgZWxlbWVudCBnZXRzCisgICAgICAgIGNyZWF0ZWQvZGVzdHJveWVkIGFu
ZCBtdWx0aXBsZXhlcyB0aGUgbGlzdGVuZXIgY2FsbGJhY2tzIHRvIHRoZSBhcHByb3ByaWF0ZSBp
bnB1dCBlbGVtZW50IGJhc2VkIG9uIHRoZSByZXF1ZXN0IGlkLgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoSW5wdXQ6OlNwZWVjaElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Ojp+U3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnJlZ2lzdGVy
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnVucmVnaXN0ZXJMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvcmRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OmRpZENvbXBsZXRlUmVjb2duaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaElucHV0OjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgICogcGFnZS9T
cGVlY2hJbnB1dC5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaDogTm93IHJl
cXVpcmVzIGEgb25lIHRpbWUgc2V0IGZvciB0aGUgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5l
ciBhbmQKKyAgICAgICAgdGFrZXMgaW4gYSAncmVxdWVzdElkJyBmb3IgYWxsIGNhbGxzLgorICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oOiBOb3cgcmV0dXJucyB0aGUgYWJvdmUg
bWVudGlvbmVkIHJlcXVlc3RJZCBpbiBhbGwgdGhlIGxpc3RlbmVyIGNhbGxiYWNrcyBmb3IKKyAg
ICAgICAgaWRlbnRpZnlpbmcgd2hpY2ggaW5wdXQgZWxlbWVudCB0aGUgZXZlbnQgZ29lcyB0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OlNwZWVjaElucHV0Q2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0b3BSZWNv
cmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpjYW5jZWxS
ZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6SW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6On5JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
c3BlZWNoSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJl
c3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgor
CiAyMDEwLTA4LTEyICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXgg
NGYzNzk4ODk2MTlhZTNjM2VlOTBlMDYwMjBiYTRhNWIyMjg4MDBlNS4uMjRiNTJkMmE3ZmZmMzg5
YjFkM2M5Y2ExODVlM2U5NzRkOGViMzQ1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCkBAIC00MSw0NiAr
NDEsNzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTcGVlY2hJbnB1dDo6U3BlZWNoSW5wdXQo
U3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAs
IG1fbGlzdGVuZXIoMCkKKyAgICAsIG1fbmV4dExpc3RlbmVySWQoMSkKIHsKKyAgICBtX2NsaWVu
dC0+c2V0TGlzdGVuZXIodGhpcyk7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXQ6OmRpZENvbXBsZXRl
UmVjb3JkaW5nKCkKK1NwZWVjaElucHV0Ojp+U3BlZWNoSW5wdXQoKQogewotICAgIEFTU0VSVCht
X2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZygpOworICAg
IG1fY2xpZW50LT5zZXRMaXN0ZW5lcigwKTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29t
cGxldGVSZWNvZ25pdGlvbigpCitpbnQgU3BlZWNoSW5wdXQ6OnJlZ2lzdGVyTGlzdGVuZXIoU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiB7Ci0gICAgQVNTRVJUKG1fbGlzdGVuZXIpOwot
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsKLSAgICBtX2xpc3RlbmVy
ID0gMDsKKyNpZiBkZWZpbmVkKERFQlVHKQorICAgIC8vIENoZWNrIGlmIGFscmVhZHkgcHJlc2Vu
dC4KKyAgICBmb3IgKEhhc2hNYXA8aW50LCBTcGVlY2hJbnB1dExpc3RlbmVyKj46Oml0ZXJhdG9y
IGl0ID0gbV9saXN0ZW5lcnMuYmVnaW4oKTsgaXQgIT0gbV9saXN0ZW5lcnMuZW5kKCk7ICsraXQp
CisgICAgICBBU1NFUlQoaXQtPnNlY29uZCAhPSBsaXN0ZW5lcik7CisjZW5kaWYKKworICAgIG1f
bGlzdGVuZXJzLmFkZChtX25leHRMaXN0ZW5lcklkLCBsaXN0ZW5lcik7CisgICAgcmV0dXJuIG1f
bmV4dExpc3RlbmVySWQrKzsKK30KKwordm9pZCBTcGVlY2hJbnB1dDo6dW5yZWdpc3Rlckxpc3Rl
bmVyKGludCBsaXN0ZW5lcklkKQoreworICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0
ZW5lcklkKSkKKyAgICAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySWQpOworfQorCit2
b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKK3sK
KyAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQg
aGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKKyAgICAvLyB0aGlzIGV2ZW50IHdh
cyBvbiB0aGUgd2F5LgorICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSkK
KyAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5kaWRDb21wbGV0ZVJlY29yZGlu
ZyhsaXN0ZW5lcklkKTsKK30KKwordm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvZ25p
dGlvbihpbnQgbGlzdGVuZXJJZCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNl
bnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hp
bGUKKyAgICAvLyB0aGlzIGV2ZW50IHdhcyBvbiB0aGUgd2F5LgorICAgIGlmIChtX2xpc3RlbmVy
cy5jb250YWlucyhsaXN0ZW5lcklkKSkKKyAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVy
SWQpLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKGxpc3RlbmVySWQpOworfQorCit2b2lkIFNwZWVj
aElucHV0OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5n
JiByZXN1bHQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IGlmIG5vdCBwcmVzZW50IGFzIHRoZSBl
bGVtZW50IG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSBwYWdlIHdoaWxlCisgICAgLy8g
dGhpcyBldmVudCB3YXMgb24gdGhlIHdheS4KKyAgICBpZiAobV9saXN0ZW5lcnMuY29udGFpbnMo
bGlzdGVuZXJJZCkpCisgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0ZW5lcklkKS0+c2V0UmVj
b2duaXRpb25SZXN1bHQobGlzdGVuZXJJZCwgcmVzdWx0KTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1
dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCitib29sIFNwZWVj
aElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkKQogewotICAgIEFTU0VSVCht
X2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQp
OworICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7CisgICAgcmV0
dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQpOwogfQogCi1ib29sIFNw
ZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVy
KQordm9pZCBTcGVlY2hJbnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKIHsKLSAg
ICAvLyBDYW5jZWwgYW55IG9uZ29pbmcgcmVjb2duaXRpb24gZmlyc3QuCi0gICAgaWYgKG1fbGlz
dGVuZXIpIHsKLSAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwot
ICAgICAgICBtX2xpc3RlbmVyID0gMDsKLSAgICAgICAgbV9jbGllbnQtPmNhbmNlbFJlY29nbml0
aW9uKCk7Ci0gICAgfQotCi0gICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwotICAgIHJldHVybiBt
X2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbih0aGlzKTsKKyAgICBBU1NFUlQobV9saXN0ZW5lcnMu
Y29udGFpbnMobGlzdGVuZXJJZCkpOworICAgIG1fY2xpZW50LT5zdG9wUmVjb3JkaW5nKGxpc3Rl
bmVySWQpOwogfQogCi12b2lkIFNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKCkKK3ZvaWQgU3Bl
ZWNoSW5wdXQ6OmNhbmNlbFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkKQogewotICAgIEFTU0VS
VChtX2xpc3RlbmVyKTsKLSAgICBtX2NsaWVudC0+c3RvcFJlY29yZGluZygpOworICAgIEFTU0VS
VChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7CisgICAgbV9jbGllbnQtPmNhbmNl
bFJlY29nbml0aW9uKGxpc3RlbmVySWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dC5oCmluZGV4IDU4ZjRlZmVkYzE1MmJkYzE0MDY2NzQ1NDkyNjgyYmUwNzhhZDViYzcu
LmYzNjE5NGNhM2M3YWNjMWFlY2YxNjk4OGViZDM0YjVjYWJhN2Y4MDIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5o
CkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwyMCAr
NDksMzAgQEAgY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFNwZWVjaElucHV0IDog
cHVibGljIE5vbmNvcHlhYmxlLCBwdWJsaWMgU3BlZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6
CiAgICAgU3BlZWNoSW5wdXQoU3BlZWNoSW5wdXRDbGllbnQqKTsKLSAgICB2aXJ0dWFsIH5TcGVl
Y2hJbnB1dCgpIHsgfQorICAgIHZpcnR1YWwgflNwZWVjaElucHV0KCk7CisKKyAgICAvLyBHZW5l
cmF0ZXMgYSB1bmlxdWUgSUQgZm9yIHRoZSBnaXZlbiBsaXN0ZW5lciB0byBiZSB1c2VkIGZvciBz
cGVlY2ggcmVxdWVzdHMuCisgICAgLy8gVGhpcyBzaG91bGQgYmUgdGhlIGZpcnN0IGNhbGwgbWFk
ZSBieSBsaXN0ZW5lcnMgYmVmb3JlIGFueXRoaW5nIGVsc2UuCisgICAgaW50IHJlZ2lzdGVyTGlz
dGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopOworCisgICAgLy8gSW52b2tlZCB3aGVuIHRoZSBs
aXN0ZW5lciBpcyBkb25lIHdpdGggcmVjb3JkaW5nIG9yIGdldHRpbmcgZGVzdHJveWVkLgorICAg
IC8vIEZhaWx1cmUgdG8gdW5yZWdpc3RlciBtYXkgcmVzdWx0IGluIGNyYXNoZXMgaWYgdGhlcmUg
d2VyZSBhbnkgcGVuZGluZyBzcGVlY2ggZXZlbnRzLgorICAgIHZvaWQgdW5yZWdpc3Rlckxpc3Rl
bmVyKGludCk7CiAKICAgICAvLyBNZXRob2RzIGludm9rZWQgYnkgdGhlIGlucHV0IGVsZW1lbnRz
LgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5l
cik7Ci0gICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9u
KGludCk7CisgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CisgICAgdm9pZCBjYW5jZWxSZWNv
Z25pdGlvbihpbnQpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgotICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21wbGV0ZVJlY29nbml0aW9uKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29y
ZGluZyhpbnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fY2xpZW50OwotICAgIFNw
ZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CisgICAgSGFzaE1hcDxpbnQsIFNwZWVjaElu
cHV0TGlzdGVuZXIqPiBtX2xpc3RlbmVyczsKKyAgICBpbnQgbV9uZXh0TGlzdGVuZXJJZDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXgg
ZjZjNjFjZjQwYjAyOTAwZmRmNGIzMWNlNTY3MzJjMDFkNTg0MmI4MC4uODdmZjdiOTM5NGNiZWQ0
YjFlNDQ0MTdhMTBjMmY4ODI0OWY5MDAwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAg
LTQwLDE1ICs0MCwyMiBAQCBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwogLy8gUHJvdmlkZXMg
YW4gaW50ZXJmYWNlIGZvciBTcGVlY2hJbnB1dCB0byBjYWxsIGludG8gdGhlIGVtYmVkZGVyLgog
Y2xhc3MgU3BlZWNoSW5wdXRDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBzdGFy
dFJlY29nbml0aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKSA9IDA7CisgICAgLy8g
VGhpcyBpcyB0aGUgZmlyc3QgY2FsbCBtYWRlIGJ5IGEgbGlzdGVuZXIsIHJlZ2lzdGVyaW5nIGl0
c2VsZiBmb3IgZnV0dXJlIGNhbGxiYWNrcy4KKyAgICAvLyBXaGVuIHRoZSBsaXN0ZW5lciBubyBs
b25nZXIgbmVlZHMgc3BlZWNoIGlucHV0IChmb3IgZS5nLiB3aGVuIGl0IGdldHMgZGVzdHJveWVk
KSwKKyAgICAvLyBpdCBzaG91bGQgc2V0IGEgbnVsbCBsaXN0ZW5lciB0byBzdG9wIHJlY2Vpdmlu
ZyBjYWxsYmFja3MuCisgICAgLy8gVGhlIGNsaWVudCBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBv
ZiB0aGUgcG9pbnRlci4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRM
aXN0ZW5lciopID0gMDsKKworICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24gYW5kIGF1
ZGlvIHJlY29yZGluZy4KKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkKSA9IDA7CiAKICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZvcm1z
IHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwogICAgIC8vIChk
b2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZygp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKSA9IDA7
CiAKICAgICAvLyBDYW5jZWxzIGFuIG9uZ29pbmcgcmVjb2duaXRpb24gYW5kIGRpc2NhcmRzIGFu
eSBhdWRpbyByZWNvcmRlZCBzbyBmYXIuIE5vIHBhcnRpYWwKICAgICAvLyByZWNvZ25pdGlvbiBy
ZXN1bHRzIGFyZSByZXR1cm5lZCB0byB0aGUgbGlzdGVuZXIuCi0gICAgdmlydHVhbCB2b2lkIGNh
bmNlbFJlY29nbml0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlv
bihpbnQgcmVxdWVzdElkKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5TcGVlY2hJ
bnB1dENsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlz
dGVuZXIuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgKaW5kZXggMTQzOTg0
ZGM3NWE3NWU1NmMxNDc1NDQwNGIxNDVlMmFkYzJkYzY4Ni4uMzYwNjBmY2RlZmJkZTI5YWM5NzNh
MThlNTAxOWVmYjlkNjRhMmZjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0
TGlzdGVuZXIuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCkBAIC00
MSwxOSArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRMaXN0
ZW5lciB7CiBwdWJsaWM6CiAgICAgLy8gSW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMg
Y29tcGxldGVkIGFuZCByZWNvZ25pdGlvbiBpcyB1bmRlcndheS4KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tcGxldGVSZWNvcmRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
UmVjb3JkaW5nKGludCByZXF1ZXN0SWQpID0gMDsKIAogICAgIC8vIEluZm9ybXMgdGhhdCBzcGVl
Y2ggcmVjb2duaXRpb24gaGFzIGNvbXBsZXRlZC4gVGhpcyBnZXRzIGludm9rZWQgaXJyZXNwZWN0
aXZlIG9mIHdoZXRoZXIKICAgICAvLyByZWNvZ25pdGlvbiB3YXMgc3VjY2VzZnVsIG9yIG5vdCwg
d2hldGhlciBzZXRSZWNvZ25pdGlvblJlc3VsdCgpIHdhcyBpbnZva2VkIG9yIG5vdC4gVGhlCiAg
ICAgLy8gaGFuZGxlciB0eXBpY2FsbHkgZnJlZXMgdXAgYW55IHRlbXBvcmFyeSByZXNvdXJjZXMg
YWxsb2NhdGVkIGFuZCB3YWl0cyBmb3IgdGhlIG5leHQgc3BlZWNoCiAgICAgLy8gcmVjb2duaXRp
b24gcmVxdWVzdC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElk
KSA9IDA7CiAKICAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29nbml0aW9uLCBl
aXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KICAgICAvLyBUaGlzIG1ldGhvZCBj
YW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSBhcmUgcGFy
dGlhbCByZXN1bHRzCiAgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBzIHNwZWFraW5n
LiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5CiAgICAgLy8g
b3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3MsIHRoaXMgbWV0
aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dExpc3RlbmVyKCkgeyB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCmluZGV4
IDc0YTMxNTFjYjY0MjIxZjlhODlkNjgxMWJiZDNlMzBmNjQyMTg3MzguLmMzZDc0ZDE5MjhmNWU3
MjNiMDIwOGRkYWYzMDJlZmRlNjllODA2YmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCkBAIC00MSwzNCArNDEsNDIgQEAgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjpTcGVlY2hJbnB1dENsaWVudE1vY2soKQogICAgIDogbV9yZWNvcmRpbmco
ZmFsc2UpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVy
RmlyZWQpCiAgICAgLCBtX2xpc3RlbmVyKDApCisgICAgLCBtX3JlcXVlc3RJZCgwKQogewogfQog
Ci1ib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihTcGVlY2hJbnB1
dExpc3RlbmVyKiBsaXN0ZW5lcikKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0
ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBtX2xpc3RlbmVyID0g
bGlzdGVuZXI7Cit9CisKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpCiB7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICBtX3JlcXVl
c3RJZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7CiAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRD
bGllbnRNb2NrOjpzdG9wUmVjb3JkaW5nKCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpz
dG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpCiB7CisgICAgQVNTRVJUKHJlcXVlc3RJZCA9PSBt
X3JlcXVlc3RJZCk7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSAmJiBtX3JlY29yZGluZykg
ewogICAgICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICAgICAgdGltZXJGaXJlZCgmbV90aW1lcik7
CiAgICAgfQogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRp
b24oKQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJlY29nbml0aW9uKGludCBy
ZXF1ZXN0SWQpCiB7CisgICAgQVNTRVJUKHJlcXVlc3RJZCA9PSBtX3JlcXVlc3RJZCk7CiAgICAg
aWYgKG1fdGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICAg
ICAgbV9yZWNvcmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVS
ZWNvZ25pdGlvbigpOwotICAgICAgICBtX2xpc3RlbmVyID0gMDsKKyAgICAgICAgbV9saXN0ZW5l
ci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJZCk7CisgICAgICAgIG1fcmVxdWVz
dElkID0gMDsKICAgICB9CiB9CiAKQEAgLTgxLDEyICs4OSwxMiBAQCB2b2lkIFNwZWVjaElucHV0
Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1v
Y2s+KikKIHsKICAgICBpZiAobV9yZWNvcmRpbmcpIHsKICAgICAgICAgbV9yZWNvcmRpbmcgPSBm
YWxzZTsKLSAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKKyAgICAg
ICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcobV9yZXF1ZXN0SWQpOwogICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xpc3Rl
bmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlY29nbml0aW9uUmVzdWx0KTsKLSAgICAgICAg
bV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOwotICAgICAgICBtX2xpc3RlbmVy
ID0gMDsKKyAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0
SWQsIG1fcmVjb2duaXRpb25SZXN1bHQpOworICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0
ZVJlY29nbml0aW9uKG1fcmVxdWVzdElkKTsKKyAgICAgICAgbV9yZXF1ZXN0SWQgPSAwOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xp
ZW50TW9jay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5o
CmluZGV4IGZhY2E0NDQwMzdiODI0OGU0OTNjM2ViOGNlODY3MzcyMjA5ZDVkYmUuLjdkNWZkYTJj
MjRjNDk3ZTMyYjc3MmYyMjdkM2VhNjJiYTI3MTNjMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKQEAgLTQ5LDkgKzQ5LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKIAog
ICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKFNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAg
ICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJ
bnB1dExpc3RlbmVyKik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCk7CisgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKGludCk7CisgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1v
Y2s+Kik7CkBAIC01OSw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3JlY29yZGluZzsK
ICAgICBUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+IG1fdGltZXI7CiAgICAgU3BlZWNoSW5w
dXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CiAgICAgU3RyaW5n
IG1fcmVjb2duaXRpb25SZXN1bHQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBmNTMyMTAxMjk5OTUyZjQ0ZDkzNjI4NzUwOGZm
ZmRmMDY0N2QwYWY1Li45ODUyYWE2ZDYxZGEwN2MzNjBmMmViNWEyYmMxMDI0NGE4NGQwYzBkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAg
LTM0Niw5ICszNDYsMjAgQEAgaW5saW5lIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpJ
bnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChOb2RlKiBzaGFkb3cKICAgICA6IFRleHRDb250
cm9sSW5uZXJFbGVtZW50KHNoYWRvd1BhcmVudC0+ZG9jdW1lbnQoKSwgc2hhZG93UGFyZW50KQog
ICAgICwgbV9jYXB0dXJpbmcoZmFsc2UpCiAgICAgLCBtX3N0YXRlKElkbGUpCisgICAgLCBtX2xp
c3RlbmVySWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5zcGVlY2hJbnB1dCgpLT5yZWdpc3Rlckxpc3Rl
bmVyKHRoaXMpKQogewogfQogCitJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6fklucHV0
RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KCkKK3sKKyAgICBTcGVlY2hJbnB1dCogc3BlZWNoID0g
c3BlZWNoSW5wdXQoKTsKKyAgICBpZiAoc3BlZWNoKSAgeyAvLyBDb3VsZCBiZSBudWxsIHdoZW4g
cGFnZSBpcyB1bmxvYWRpbmcuCisgICAgICAgIGlmIChtX3N0YXRlICE9IElkbGUpCisgICAgICAg
ICAgICBzcGVlY2gtPmNhbmNlbFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCk7CisgICAgICAgIHNw
ZWVjaC0+dW5yZWdpc3Rlckxpc3RlbmVyKG1fbGlzdGVuZXJJZCk7CisgICAgfQorfQorCiBQYXNz
UmVmUHRyPElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50PiBJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKE5vZGUqIHNoYWRvd1BhcmVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KHNoYWRvd1BhcmVudCkpOwpA
QCAtMzg2LDExICszOTcsMTEgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7
CiAgICAgICAgIGNhc2UgSWRsZToKLSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFy
dFJlY29nbml0aW9uKHRoaXMpKQorICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0
UmVjb2duaXRpb24obV9saXN0ZW5lcklkKSkKICAgICAgICAgICAgICAgICBzZXRTdGF0ZShSZWNv
cmRpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjb3JkaW5nOgotICAg
ICAgICAgICAgc3BlZWNoSW5wdXQoKS0+c3RvcFJlY29yZGluZygpOworICAgICAgICAgICAgc3Bl
ZWNoSW5wdXQoKS0+c3RvcFJlY29yZGluZyhtX2xpc3RlbmVySWQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUmVjb2duaXppbmc6CiAgICAgICAgICAgICAvLyBOb3RoaW5nIHRv
IGRvIGhlcmUsIHdlIHdpbGwgY29udGludWUgdG8gd2FpdCBmb3IgcmVzdWx0cy4KQEAgLTQxMywy
MCArNDI0LDIwIEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnNldFN0YXRl
KFNwZWVjaElucHV0U3RhdGUgc3RhdGUpCiAKIFNwZWVjaElucHV0KiBJbnB1dEZpZWxkU3BlZWNo
QnV0dG9uRWxlbWVudDo6c3BlZWNoSW5wdXQoKQogewotICAgIHJldHVybiBkb2N1bWVudCgpLT5w
YWdlKCktPnNwZWVjaElucHV0KCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPnBhZ2UoKSA/IGRv
Y3VtZW50KCktPnBhZ2UoKS0+c3BlZWNoSW5wdXQoKSA6IDA7CiB9CiAKLXZvaWQgSW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKCkKK3ZvaWQgSW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb3JkaW5nKGludCkKIHsKICAg
ICBzZXRTdGF0ZShSZWNvZ25pemluZyk7CiB9CiAKLXZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRv
bkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oKQordm9pZCBJbnB1dEZpZWxkU3BlZWNo
QnV0dG9uRWxlbWVudDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpCiB7CiAgICAgc2V0U3Rh
dGUoSWRsZSk7CiB9CiAKLXZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnNldFJl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQordm9pZCBJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBTdHJpbmcm
IHJlc3VsdCkKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgLy8gVGhlIGNhbGwg
dG8gc2V0VmFsdWUoKSBiZWxvdyBkaXNwYXRjaGVzIGFuIGV2ZW50LCBhbmQgYW4gZXZlbnQgaGFu
ZGxlciBpbiB0aGUgcGFnZSBtaWdodApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaAppbmRleCBlN2VlOThmNTE1YmFkOWU2YWJhMzY2MmIzNjlhYjkyYTAzNmY2
NWNjLi4zZmJjOWM4ZjljODdkMjM4NDIxZDFiNTg2MzJmN2RiNmRhMmU1NjAyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtMTI2LDE1ICsxMjYs
MTYgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnB1dEZpZWxk
U3BlZWNoQnV0dG9uRWxlbWVudD4gY3JlYXRlKE5vZGUqKTsKKyAgICB2aXJ0dWFsIH5JbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgU3BlZWNo
SW5wdXRTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogICAgIC8vIFNw
ZWVjaElucHV0TGlzdGVuZXIgbWV0aG9kcy4KLSAgICB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5n
KCk7Ci0gICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCk7Ci0gICAgdm9pZCBzZXRSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBkaWRDb21wbGV0
ZVJlY29yZGluZyhpbnQpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwor
ICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7
CiAKIHByaXZhdGU6CiAgICAgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQoTm9kZSopOwpA
QCAtMTQzLDYgKzE0NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY2FwdHVyaW5nOwogICAg
IFNwZWVjaElucHV0U3RhdGUgbV9zdGF0ZTsKKyAgICBpbnQgbV9saXN0ZW5lcklkOwogfTsKIAog
I2VuZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyYWQxMzZiMWYx
OGE1ZjdhMjdkMjhjN2U4YjgwNWQwODBlYTVhNGZkLi43Mjc3MTlkNGUxNmZjOWY0MDQwZTFkMGFk
YjgyMzYzMjI5NDBjMWI0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wOC0x
MiAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIHNw
ZWVjaCBlbmFibGVkIGVsZW1lbnRzIGluIHNhbWUgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTIyCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyLmg6IEJ1YmJsZXMgdXAgdGhlIHJlcXVlc3RJZCBnaXZlbiBi
eSB3ZWJjb3JlIHRvIHRoZSBlbWJlZGRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyOjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RvcFJlY29yZGluZyk6CisgICAgICAgICogcHVi
bGljL1dlYlNwZWVjaElucHV0TGlzdGVuZXIuaDogUGFzc2VzIGRvd24gdGhlIHJlcXVlc3RJZCBn
aXZlbiBieSBlbWJlZGRlciB0byB3ZWJjb3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJ
bnB1dExpc3RlbmVyOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaElucHV0TGlzdGVuZXI6OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbik6Cisg
ICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0b3BSZWNvcmRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmNhbmNlbFJlY29nbml0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0UmVjb2duaXRp
b25SZXN1bHQpOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaDoKKyAgICAg
ICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRl
UmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
OjpjYW5jZWxSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKwogMjAxMC0wOC0xMiAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxk
bWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyLmgKaW5kZXggM2RiYTVmYjZiYjFlMmRkMWQ0YWIwOTNkMTkzZWUxY2RhZDZkZDgxMy4uYjg1
ZmRlNjdmY2JmYjc0NTY1NjU1M2YwYWMyMWRiOTliZGNmZjIwYyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC00MSwxNCArNDEs
MjEgQEAgcHVibGljOgogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3
aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCiAg
ICAgLy8gcnVucyB0byB0aGUgbGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dy
ZXNzIGluZGljYXRpb25zIGFuZCB0aGUgcmVjb2duaXplZAogICAgIC8vIHRleHQgYXJlIHJldHVy
bmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGFydFJlY29nbml0aW9uKCk7
CisgICAgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNr
ZWQgdXAgdGhpcyBjaGFuZ2UuCiAgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oKQog
ICAgIHsKLSAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQ2FuY2VscyBhbiBvbmdvaW5nIHJlY29n
bml0aW9uIGFuZCBkaXNjYXJkcyBhbnkgYXVkaW8gcmVjb3JkZWQgc28gZmFyLiBObyBwYXJ0aWFs
CiAgICAgLy8gcmVjb2duaXRpb24gcmVzdWx0cyBhcmUgcmV0dXJuZWQgdG8gdGhlIGxpc3RlbmVy
LgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpIHsgY2FuY2VsUmVjb2du
aXRpb24oKTsgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBw
aWNrZWQgdXAgdGhpcyBjaGFuZ2UuCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlY29nbml0aW9u
KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFN0b3BzIGF1ZGlv
IHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3Jk
ZWQgdW50aWwgbm93CkBAIC01Niw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICAvLyB3YW50cyB0byBz
dG9wIHJlY29yZGluZyBhdWRpbyBhcyBzb29uIGFzIHRoZXkgZmluaXNoZWQgc3BlYWtpbmcuIE90
aGVyd2lzZSwgdGhlIHNwZWVjaAogICAgIC8vIHJlY29yZGluZyAnZW5kcG9pbnRlcicgc2hvdWxk
IGRldGVjdCBzaWxlbmNlIGluIHRoZSBpbnB1dCBhbmQgc3RvcCByZWNvcmRpbmcgYXV0b21hdGlj
YWxseS4KICAgICAvLyBDYWxsIHN0YXJ0UmVjb2duaXRpb24oKSB0byByZWNvcmQgYXVkaW8gYW5k
IHJlY29nbml6ZSBzcGVlY2ggYWdhaW4uCisgICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmco
aW50KSB7IHN0b3BSZWNvcmRpbmcoKTsgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNl
IGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBjaGFuZ2UuCiAgICAgdmlydHVhbCB2b2lkIHN0
b3BSZWNvcmRpbmcoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0TGlz
dGVuZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5o
CmluZGV4IGYxNzU2YWYxZTk5OTQwMDdlYWY4MWRmZTQyOTNmNjRlYTJlY2RlMDYuLmU3NzljM2E3
OWQzMWFiZTAxZGIwMDAzMDIzMDdkZmUzNThkMTU4MTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oCkBAIC00NywxOSArNDcsMzQgQEAgcHVi
bGljOgogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RvcFJlY29yZGluZygpIHdh
cyBjYWxsZWQuCiAgICAgLy8gVHlwaWNhbGx5IGFmdGVyIHRoaXMgY2FsbCB0aGUgbGlzdGVuZXIg
d291bGQgdXBkYXRlIHRoZSBVSSB0byByZWZsZWN0IHRoYXQgcmVjb2duaXRpb24gaXMKICAgICAv
LyBpbiBwcm9ncmVzcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKGludCkgPSAwOworICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhpcyBj
aGFuZ2UuCisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKCkKKyAgICB7Cisg
ICAgICAgIGRpZENvbXBsZXRlUmVjb3JkaW5nKDEpOworICAgIH0KIAogICAgIC8vIEdpdmVzIHJl
c3VsdHMgZnJvbSBzcGVlY2ggcmVjb2duaXRpb24sIGVpdGhlciBwYXJ0aWFsIG9yIHRoZSBmaW5h
bCByZXN1bHRzLgogICAgIC8vIFRoaXMgbWV0aG9kIGNhbiBwb3RlbnRpYWxseSBnZXQgY2FsbGVk
IG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlIGFyZSBwYXJ0aWFsIHJlc3VsdHMKICAgICAvLyBhdmFp
bGFibGUgYXMgdGhlIHVzZXIga2VlcHMgc3BlYWtpbmcuIElmIHRoZSBzcGVlY2ggY291bGQgbm90
IGJlIHJlY29nbml6ZWQgcHJvcGVybHkKICAgICAvLyBvciBpZiB0aGVyZSB3YXMgYW55IG90aGVy
IGVycm9ycyBpbiB0aGUgcHJvY2VzcywgdGhpcyBtZXRob2QgbWF5IG5ldmVyIGJlIGNhbGxlZC4K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFdl
YlN0cmluZyYpID0gMDsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBjaHJvbWl1bSBo
YXMgcGlja2VkIHVwIHRoaXMgY2hhbmdlLgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHNldFJlY29n
bml0aW9uUmVzdWx0KDEsIHJlc3VsdCk7CisgICAgfQogCiAgICAgLy8gSW5mb3JtcyB0aGF0IHNw
ZWVjaCByZWNvZ25pdGlvbiBoYXMgY29tcGxldGVkLiBUaGlzIGdldHMgaW52b2tlZCBpcnJlc3Bl
Y3RpdmUgb2Ygd2hldGhlcgogICAgIC8vIHJlY29nbml0aW9uIHdhcyBzdWNjZXNmdWwgb3Igbm90
LCB3aGV0aGVyIHNldFJlY29nbml0aW9uUmVzdWx0KCkgd2FzIGludm9rZWQgb3Igbm90LiBUaGUK
ICAgICAvLyBoYW5kbGVyIHR5cGljYWxseSBmcmVlcyB1cCBhbnkgdGVtcG9yYXJ5IHJlc291cmNl
cyBhbGxvY2F0ZWQgYW5kIHdhaXRzIGZvciB0aGUgbmV4dCBzcGVlY2gKICAgICAvLyByZWNvZ25p
dGlvbiByZXF1ZXN0LgotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCkgPSAwOwor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGNocm9taXVtIGhhcyBwaWNrZWQgdXAgdGhp
cyBjaGFuZ2UuCisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oKQorICAg
IHsKKyAgICAgICAgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigxKTsKKyAgICB9CiAKIHByb3RlY3Rl
ZDoKICAgICB+V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcigpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCmluZGV4IDY2NTI1ZTM0ZTliNTlmMzc5NmJk
ZGIyZmFmOGIzMDA4NDM3ZTQ1ZGIuLjljNTliYWUxMzEyOTU5ZDE3OTY5OWNiNDE3OGY4ZmNkZjEz
ZDMzYTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5j
cHAKQEAgLTUxLDQxICs1MSw0NSBAQCBTcGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJbnB1
dENsaWVudEltcGwoKQogewogfQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRS
ZWNvZ25pdGlvbihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3ZvaWQg
U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExp
c3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgcmV0
dXJuIG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbigpOwogfQogCi12b2lkIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZygpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1w
bDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogewogICAgIEFTU0VSVChtX2xpc3Rl
bmVyKTsKLSAgICBtX2NvbnRyb2xsZXItPnN0b3BSZWNvcmRpbmcoKTsKKyAgICByZXR1cm4gbV9j
b250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgU3BlZWNo
SW5wdXRDbGllbnRJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbigpCit2b2lkIFNwZWVjaElucHV0Q2xp
ZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKQogewogICAgIEFTU0VSVChtX2xp
c3RlbmVyKTsKLSAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFJlY29nbml0aW9uKCk7CisgICAgbV9j
b250cm9sbGVyLT5zdG9wUmVjb3JkaW5nKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgU3BlZWNoSW5w
dXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZygpCit2b2lkIFNwZWVjaElucHV0Q2xp
ZW50SW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKIHsKICAgICBBU1NFUlQo
bV9saXN0ZW5lcik7Ci0gICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKKyAg
ICBtX2NvbnRyb2xsZXItPmNhbmNlbFJlY29nbml0aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQg
U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKCkKK3ZvaWQgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKQog
ewogICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJl
Y29nbml0aW9uKCk7Ci0gICAgbV9saXN0ZW5lciA9IDA7CisgICAgbV9saXN0ZW5lci0+ZGlkQ29t
cGxldGVSZWNvcmRpbmcocmVxdWVzdElkKTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dENsaWVudElt
cGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQordm9pZCBT
cGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgbV9saXN0ZW5lci0+c2V0UmVjb2du
aXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0
aW9uKHJlcXVlc3RJZCk7Cit9CisKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRSZWNv
Z25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKK3sK
KyAgICBBU1NFUlQobV9saXN0ZW5lcik7CisgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25S
ZXN1bHQocmVxdWVzdElkLCByZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCmluZGV4IDU3NjJkYTg3
ZTlmMGFlOWZhNjExYTIyZDRmNmFlMDE3ZGFiNTcyYmIuLjBhYjU0YzFjYWM2YTYyY2Q0OWY4Y2Jm
N2FkYzI1NTIzNTBjMDZiZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNo
SW5wdXRDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENs
aWVudEltcGwuaApAQCAtNTMsMTggKzUzLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TcGVl
Y2hJbnB1dENsaWVudEltcGwoKTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMu
Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIq
KTsKLSAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9u
KCk7CisgICAgdm9pZCBzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKik7
CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCk7CisgICAgdm9pZCBzdG9wUmVjb3JkaW5n
KGludCk7CisgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCiAgICAgLy8gV2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgotICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmco
KTsKLSAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYpOwotICAg
IHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNv
cmRpbmcoaW50KTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgV2Vi
U3RyaW5nJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCk7CiAKIHByaXZh
dGU6CiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNh
bGwgaW50byB0aGUgZW1iZWRkZXIuCi0gICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciog
bV9saXN0ZW5lcjsgLy8gVmFsaWQgd2hlbiByZWNvZ25pdGlvbiBpcyBpbiBwcm9ncmVzcy4KKyAg
ICBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDZiMDQzMjA1ZWJmY2YxMjYwZjQw
YzhhNDg4MDVhMmNlMzE4YjZmMmUuLjU3ZTM2MzUzZTcwZGNjNDkwYmMxMGQ5OGVlYmRlYjRiMmJi
NjE5ZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCkBAIC00Niw2ICs0NiwxMiBAQCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoCiAg
ICAgOiBtX3dlYmNvcmVNb2NrKG5ldyBXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2soKSkK
ICAgICAsIG1fbGlzdGVuZXIobGlzdGVuZXIpCiB7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0TGlz
dGVuZXIodGhpcyk7Cit9CisKK1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjp+V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoKQoreworICAgIG1fd2ViY29yZU1vY2stPnNl
dExpc3RlbmVyKDApOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
OjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCkBAIC01
MywzNCArNTksMzQgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0
TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYKICAgICBtX3dlYmNvcmVNb2Nr
LT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOwogfQogCi12b2lkIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZygpCit2b2lkIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVz
dElkKQogewotICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgbV9s
aXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcocmVxdWVzdElkKTsKIH0KIAotdm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpCit2
b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpCiB7Ci0gICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25p
dGlvbigpOworICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24ocmVxdWVzdElk
KTsKIH0KIAotdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2du
aXRpb25SZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQs
IGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgbV9saXN0ZW5lci0+c2V0UmVjb2du
aXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3Vs
dChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oKQorYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogewotICAgIHJldHVy
biBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHRoaXMpOworICAgIHJldHVybiBtX3dl
YmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCk7CiB9CiAKLXZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKCkKK3ZvaWQgV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQpCiB7Ci0gICAgbV93ZWJjb3JlTW9jay0+Y2FuY2VsUmVjb2duaXRpb24oKTsKKyAgICBt
X3dlYmNvcmVNb2NrLT5jYW5jZWxSZWNvZ25pdGlvbihyZXF1ZXN0SWQpOwogfQogCi12b2lkIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdG9wUmVjb3JkaW5nKCkKK3ZvaWQgV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJ
ZCkKIHsKLSAgICBtX3dlYmNvcmVNb2NrLT5zdG9wUmVjb3JkaW5nKCk7CisgICAgbV93ZWJjb3Jl
TW9jay0+c3RvcFJlY29yZGluZyhyZXF1ZXN0SWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaAppbmRleCAwNDZhYmYzZTFmODM4ZDM2ZWNmYmFkZDBlZmE4Y2ExOWVhMGU1
ZDU4Li4zOGExNWRmZTdiM2ZkZmU5ODNmNDliNWFhYjI2MGYzN2U5YmQ4NTk4IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1w
bC5oCkBAIC00NywxNiArNDcsMTcgQEAgY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jayB7CiBwdWJsaWM6CiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwo
V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOworICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsKCk7CiAKICAgICAvLyBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVy
IG1ldGhvZHMuCi0gICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpOwotICAgIHZvaWQgZGlk
Q29tcGxldGVSZWNvZ25pdGlvbigpOwotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29u
c3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhp
bnQgcmVxdWVzdElkKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IHJlcXVl
c3RJZCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25z
dCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ciBtZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbigpOwotICAgIHZvaWQgY2FuY2Vs
UmVjb2duaXRpb24oKTsKLSAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKKyAgICBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7CisgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihp
bnQgcmVxdWVzdElkKTsKKyAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCk7CiAK
ICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhvZHMuCiAgICAgdm9pZCBz
ZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>