<?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>153470</bug_id>
          
          <creation_ts>2016-01-25 19:06:14 -0800</creation_ts>
          <short_desc>Reduce PassRefPtr uses in dom - 5</short_desc>
          <delta_ts>2016-01-31 04:08:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1158667</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-25 19:06:14 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158671</commentid>
    <comment_count>1</comment_count>
      <attachid>269842</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-25 19:10:12 -0800</bug_when>
    <thetext>Created attachment 269842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158769</commentid>
    <comment_count>2</comment_count>
      <attachid>269868</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-26 01:44:12 -0800</bug_when>
    <thetext>Created attachment 269868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158770</commentid>
    <comment_count>3</comment_count>
      <attachid>269869</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-26 01:45:57 -0800</bug_when>
    <thetext>Created attachment 269869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158797</commentid>
    <comment_count>4</comment_count>
      <attachid>269879</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-26 05:59:12 -0800</bug_when>
    <thetext>Created attachment 269879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159544</commentid>
    <comment_count>5</comment_count>
      <attachid>269879</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-27 17:37:24 -0800</bug_when>
    <thetext>Comment on attachment 269879
Patch

It looks windows fail wasn&apos;t caused by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159734</commentid>
    <comment_count>6</comment_count>
      <attachid>269879</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-28 09:07:06 -0800</bug_when>
    <thetext>Comment on attachment 269879
Patch

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

&gt; Source/WebCore/dom/Document.h:469
&gt; +    RefPtr&lt;Node&gt; adoptNode(RefPtr&lt;Node&gt;&amp;&amp; source, ExceptionCode&amp;);

Do any callers pass a newly-created object to this? Please note that the JavaScript bindings will never do this, so it has to be some call site in native code. I’m pretty sure the answer is no, so I’m pretty sure the type here should just be Node*.

&gt; Source/WebCore/dom/DocumentMarker.cpp:69
&gt;  class DocumentMarkerTextMatch : public DocumentMarkerDetails {

This class should probably be marked final.

&gt; Source/WebCore/dom/DocumentMarker.cpp:87
&gt; -    static DocumentMarkerTextMatch* trueInstance = adoptRef(new DocumentMarkerTextMatch(true)).leakRef();
&gt; -    static DocumentMarkerTextMatch* falseInstance = adoptRef(new DocumentMarkerTextMatch(false)).leakRef();
&gt; -    return match ? trueInstance : falseInstance;
&gt; +    return match ? adoptRef(*new DocumentMarkerTextMatch(true)) : adoptRef(*new DocumentMarkerTextMatch(false));

This is a peculiar change.

Before, this function always returned an existing object. Now we are creating a new object every time; that will almost certainly make the code slower. Not sure why we decided to remove this optimization. Also, the new code uses ? : in a strange way; could just pass match in. The old code was written that way because it had two global instances.

I suggest the return type of this function be DocumentMarkerTextMatch&amp; instead of Ref&lt;DocumentMarkerTextMatch&gt; since it returns existing objects and doesn’t create new ones.

&gt; Source/WebCore/dom/Event.cpp:179
&gt; +void Event::setUnderlyingEvent(Event* ue)

Since we are touching this code we should expand &quot;ue&quot; to &quot;underlyingEvent&quot; and &quot;e&quot; to &quot;event&quot;.

&gt; Source/WebCore/dom/TextEvent.cpp:52
&gt; +    return adoptRef(*new TextEvent(view, &quot;&quot;, WTFMove(data), shouldSmartReplace, shouldMatchStyle, mailBlockquoteHandling));

This should use emptyString() instead of &quot;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160435</commentid>
    <comment_count>7</comment_count>
      <attachid>270303</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-29 23:43:00 -0800</bug_when>
    <thetext>Created attachment 270303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160437</commentid>
    <comment_count>8</comment_count>
      <attachid>269879</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-30 00:47:15 -0800</bug_when>
    <thetext>Comment on attachment 269879
Patch

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

&gt;&gt; Source/WebCore/dom/DocumentMarker.cpp:87
&gt;&gt; +    return match ? adoptRef(*new DocumentMarkerTextMatch(true)) : adoptRef(*new DocumentMarkerTextMatch(false));
&gt; 
&gt; This is a peculiar change.
&gt; 
&gt; Before, this function always returned an existing object. Now we are creating a new object every time; that will almost certainly make the code slower. Not sure why we decided to remove this optimization. Also, the new code uses ? : in a strange way; could just pass match in. The old code was written that way because it had two global instances.
&gt; 
&gt; I suggest the return type of this function be DocumentMarkerTextMatch&amp; instead of Ref&lt;DocumentMarkerTextMatch&gt; since it returns existing objects and doesn’t create new ones.

I missed this is *static* variables. However it looks I have to modify more files in order to change Ref&lt;DocumentMarkerTextMatch&gt; with DocumentMarkerTextMatch&amp; because build breaks happen on callers. I&apos;d like to postpone this fix in next clean-up.

Other comments are fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160494</commentid>
    <comment_count>9</comment_count>
      <attachid>270303</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-30 11:27:08 -0800</bug_when>
    <thetext>Comment on attachment 270303
Patch

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

&gt; Source/WebCore/editing/Editor.h:349
&gt; +    WEBCORE_EXPORT void pasteAsFragment(RefPtr&lt;DocumentFragment&gt;&amp;&amp;, bool smartReplace, bool matchStyle, MailBlockquoteHandling = MailBlockquoteHandling::RespectBlockquote);

This should be Ref. All the call sites are already checking for null before they call this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160624</commentid>
    <comment_count>10</comment_count>
      <attachid>270335</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-30 20:30:18 -0800</bug_when>
    <thetext>Created attachment 270335
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160625</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-30 20:32:15 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 270303 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=270303&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.h:349
&gt; &gt; +    WEBCORE_EXPORT void pasteAsFragment(RefPtr&lt;DocumentFragment&gt;&amp;&amp;, bool smartReplace, bool matchStyle, MailBlockquoteHandling = MailBlockquoteHandling::RespectBlockquote);
&gt; 
&gt; This should be Ref. All the call sites are already checking for null before
&gt; they call this.

Ok, but call sites need to use releaseNonNull() instead of WTFMove() if we use Ref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160651</commentid>
    <comment_count>12</comment_count>
      <attachid>270335</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-31 04:08:39 -0800</bug_when>
    <thetext>Comment on attachment 270335
Patch for landing

Clearing flags on attachment: 270335

Committed r195927: &lt;http://trac.webkit.org/changeset/195927&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160652</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-31 04:08:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269842</attachid>
            <date>2016-01-25 19:10:12 -0800</date>
            <delta_ts>2016-01-26 01:44:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153470-20160126120945.patch</filename>
            <type>text/plain</type>
            <size>22696</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg2YzQ5YTc3NTQ3MDhl
NzE5MDZkOWI5OGQyYTBlMDNmNGRjNDYxNi4uNmY5MzM1MmJjZmQ2ZGZiZjE1ZjdkYzhmMWEyZDVi
OWM4MTVlMDZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAxLTI1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciB1c2VzIGluIGRvbSAtIDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFzIGEgc3RlcCB0byByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRj
aCByZWR1Y2VzIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2RvbS4gCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkb3B0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKToKKyAgICAgICAgKiBkb20vRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudCk6Cisg
ICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vR2VuZXJpY0V2
ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2
YXRlRXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaDoKKyAgICAgICAgKiBkb20v
UGVuZGluZ1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldCk6
IERlbGV0ZWQuIE5vYm9keSBjYWxscyB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2lu
dCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2
ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFn
bWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQpOgorCiAyMDE2LTAxLTI0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgUGFzc1JlZlB0ciB1c2VzIGluIGRvbSAtIDQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDc1NmQ4OTI2NjNmN2ViMGVkMTE5YzI3MmRjMjI4
NGMyYjJhM2JkMTEuLjFkMmE3YzdhNTZkMTgzMzZmMWZhOWQyZDI3NGViYjk0ZTQxZTA4NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTg0LDcgKzk4NCw3IEBAIFJlZlB0cjxOb2RlPiBE
b2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0
aW9uQ29kZSYKIH0KIAogCi1SZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8Tm9kZT4gRG9jdW1l
bnQ6OmFkb3B0Tm9kZShSZWZQdHI8Tm9kZT4mJiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghc291cmNlKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBA
IC0yNzEwLDggKzI3MTAsOCBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBk
aXNwYXRjaFdpbmRvd0xvYWRFdmVudCgpOwogICAgIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2Vz
aG93RXZlbnROb3RQZXJzaXN0ZWQpOwogICAgIGlmIChtX3BlbmRpbmdTdGF0ZU9iamVjdCkKLSAg
ICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobV9wZW5kaW5nU3RhdGVPYmplY3QucmVsZWFzZSgp
KTsKLSAgICAKKyAgICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoV1RGTW92ZShtX3BlbmRpbmdT
dGF0ZU9iamVjdCkpOworCiAgICAgaWYgKGYpCiAgICAgICAgIGYtPmxvYWRlcigpLmRpc3BhdGNo
T25sb2FkRXZlbnRzKCk7CiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwpAQCAt
NTUyNyw5ICs1NTI3LDkgQEAgdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChj
b25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdVUkwKICAgICBlbnF1ZXVlV2lu
ZG93RXZlbnQoSGFzaENoYW5nZUV2ZW50OjpjcmVhdGUob2xkVVJMLCBuZXdVUkwpKTsKIH0KIAot
dm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQordm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRl
RXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdCkKIHsKLSAg
ICBlbnF1ZXVlV2luZG93RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKHN0YXRlT2JqZWN0LCBt
X2RvbVdpbmRvdyA/IG1fZG9tV2luZG93LT5oaXN0b3J5KCkgOiBudWxscHRyKSk7CisgICAgZW5x
dWV1ZVdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHN0YXRlT2JqZWN0
KSwgbV9kb21XaW5kb3cgPyBtX2RvbVdpbmRvdy0+aGlzdG9yeSgpIDogbnVsbHB0cikpOwogfQog
CiB2b2lkIERvY3VtZW50OjphZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExp
c3RlbmVyKiBsaXN0ZW5lcikKQEAgLTY4MDUsOSArNjgwNSw5IEBAIGJvb2wgRG9jdW1lbnQ6Omhh
c0ZvY3VzKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotdm9pZCBEb2N1bWVu
dDo6c2V0SW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxJbnB1dEN1cnNvcj4gY3Vyc29yKQordm9pZCBE
b2N1bWVudDo6c2V0SW5wdXRDdXJzb3IoUmVmPElucHV0Q3Vyc29yPiYmIGN1cnNvcikKIHsKLSAg
ICBtX2lucHV0Q3Vyc29yID0gY3Vyc29yOworICAgIG1faW5wdXRDdXJzb3IgPSBXVEZNb3ZlKGN1
cnNvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzZDFjNzk0MDJjMzg3
NjQ4ZTBkZDRhYWQ0ZWIzYjhhODU3MWJjMjZkLi4xMTIyNzkwNzE0YjYwNDllM2QzZTFjNDU4ZThm
Nzc4MzlkYjM2NDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDY2LDcgKzQ2Niw3IEBAIHB1
YmxpYzoKICAgICBET01TZWN1cml0eVBvbGljeSYgc2VjdXJpdHlQb2xpY3koKTsKICNlbmRpZgog
Ci0gICAgUmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUmVmUHRyPE5vZGU+JiYg
c291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGltYWdl
cygpOwogICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRzKCk7CkBAIC0xMTA1LDcgKzExMDUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlT3ZlcmZsb3dFdmVudChSZWY8RXZlbnQ+JiYp
OwogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudFBlcnNpc3RlbmNl
KTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRVUkws
IGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKLSAgICB2b2lkIGVucXVldWVQb3BzdGF0ZUV2ZW50KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCk7CisgICAgdm9pZCBl
bnF1ZXVlUG9wc3RhdGVFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHN0YXRl
T2JqZWN0KTsKICAgICB2aXJ0dWFsIERvY3VtZW50RXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3Rl
bmVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcAppbmRleCAwNWYwODBkNjgx
MWM3ZmZhMmUzNzQ1ZmUzZjY4ZThhM2U0NTU0ZjA2Li40ZWQ3ODdlYzBiZjcyZTMxNDEwNDNmZmRk
MDlmZTcwZDhiZGFmMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgaW5saW5lIERvY3VtZW50TWFya2VyRGVzY3JpcHRpb24qIHRvRG9jdW1l
bnRNYXJrZXJEZXNjcmlwdGlvbihEb2N1bWVudE1hcmtlckRldGEKIAogY2xhc3MgRG9jdW1lbnRN
YXJrZXJUZXh0TWF0Y2ggOiBwdWJsaWMgRG9jdW1lbnRNYXJrZXJEZXRhaWxzIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtlclRleHRNYXRjaD4gaW5zdGFuY2VG
b3IoYm9vbCk7CisgICAgc3RhdGljIFJlZjxEb2N1bWVudE1hcmtlclRleHRNYXRjaD4gaW5zdGFu
Y2VGb3IoYm9vbCk7CiAKICAgICBib29sIGFjdGl2ZU1hdGNoKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRjaDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRNYXRjaCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTgyLDExICs4Miw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21h
dGNoOwogfTsKIAotUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtlclRleHRNYXRjaD4gRG9jdW1lbnRN
YXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKGJvb2wgbWF0Y2gpCitSZWY8RG9jdW1lbnRNYXJr
ZXJUZXh0TWF0Y2g+IERvY3VtZW50TWFya2VyVGV4dE1hdGNoOjppbnN0YW5jZUZvcihib29sIG1h
dGNoKQogewotICAgIHN0YXRpYyBEb2N1bWVudE1hcmtlclRleHRNYXRjaCogdHJ1ZUluc3RhbmNl
ID0gYWRvcHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNoKHRydWUpKS5sZWFrUmVmKCk7
Ci0gICAgc3RhdGljIERvY3VtZW50TWFya2VyVGV4dE1hdGNoKiBmYWxzZUluc3RhbmNlID0gYWRv
cHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNoKGZhbHNlKSkubGVha1JlZigpOwotICAg
IHJldHVybiBtYXRjaCA/IHRydWVJbnN0YW5jZSA6IGZhbHNlSW5zdGFuY2U7CisgICAgcmV0dXJu
IG1hdGNoID8gYWRvcHRSZWYoKm5ldyBEb2N1bWVudE1hcmtlclRleHRNYXRjaCh0cnVlKSkgOiBh
ZG9wdFJlZigqbmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNoKGZhbHNlKSk7CiB9CiAKIGlubGlu
ZSBEb2N1bWVudE1hcmtlclRleHRNYXRjaCogdG9Eb2N1bWVudE1hcmtlclRleHRNYXRjaChEb2N1
bWVudE1hcmtlckRldGFpbHMqIGRldGFpbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCAxNDliMDRl
YjkyZDY2YmRlNDcxN2ZmNTM1NTk5OTk1OGU5NTY1YmFlLi4xN2Q2MWI1OWNmNmViYjY2YmQzNjc3
MTJmMTI3NWJiNjI0NGUwYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTE3NiwxMiArMTc2LDEz
IEBAIHZvaWQgRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKIHsKIH0KIAotdm9pZCBFdmVudDo6c2V0
VW5kZXJseWluZ0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHVlKQordm9pZCBFdmVudDo6c2V0VW5k
ZXJseWluZ0V2ZW50KEV2ZW50KiB1ZSkKIHsKICAgICAvLyBQcm9oaWJpdCBjcmVhdGlvbiBvZiBh
IGN5Y2xlIC0tIGp1c3QgZG8gbm90aGluZyBpbiB0aGF0IGNhc2UuCi0gICAgZm9yIChFdmVudCog
ZSA9IHVlLmdldCgpOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpCisgICAgZm9yIChFdmVu
dCogZSA9IHVlOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpIHsKICAgICAgICAgaWYgKGUg
PT0gdGhpcykKICAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV91bmRlcmx5aW5nRXZl
bnQgPSB1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCBhMTM5ODcxZWU0ZDQxNzVhZTk2YzdmMjg5
YmJjMDk5MTcwOWEyYTAxLi5hNTNhODhmYjZkNDllZTRlNjNlZTI4OGZiZjAzMDg4OTczM2RkNGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuaApAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENhbmNlbEJ1YmJsZShib29sIGNhbmNlbCkgeyBtX2NhbmNlbEJ1YmJsZSA9IGNhbmNlbDsgfQog
CiAgICAgRXZlbnQqIHVuZGVybHlpbmdFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJseWlu
Z0V2ZW50LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRVbmRlcmx5aW5nRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4pOworICAgIHZvaWQgc2V0VW5kZXJseWluZ0V2ZW50KEV2ZW50Kik7CiAKICAgICB2aXJ0
dWFsIERhdGFUcmFuc2ZlciogaW50ZXJuYWxEYXRhVHJhbnNmZXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAppbmRleCBmMTg5ZDdhNGRmMmI4
NWQyN2FmNzQ1Y2ZhZTNhYWU0NjgwZGE5MzUyLi5iYTQzZWVkYmU0OTI1NDVjNjNiNTBlNDRmYjZi
OWFmNjcxNTI3ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVu
dFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKaW5k
ZXggZGJhODUyNzBkYjQ3OTRmNmZhYjIzYTI2YjM5ZjFjYjU5NGIxZGQyZS4uY2QyMDFhMzY5ZmQ2
ZDRjM2NhZTNkMWNjMmM5N2I0MmYwYzFmMzQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJp
Y0V2ZW50UXVldWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdlbmVyaWNFdmVudFF1ZXVlOjp+R2Vu
ZXJpY0V2ZW50UXVldWUoKQogewogfQogCi12b2lkIEdlbmVyaWNFdmVudFF1ZXVlOjplbnF1ZXVl
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit2b2lkIEdlbmVyaWNFdmVudFF1ZXVlOjpl
bnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiYmIGV2ZW50KQogewogICAgIGlmIChtX2lzQ2xvc2Vk
KQogICAgICAgICByZXR1cm47CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgR2VuZXJpY0V2ZW50UXVl
dWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBpZiAoZXZlbnQt
PnRhcmdldCgpID09ICZtX293bmVyKQogICAgICAgICBldmVudC0+c2V0VGFyZ2V0KG51bGxwdHIp
OwogCi0gICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChldmVudCk7CisgICAgbV9wZW5kaW5nRXZl
bnRzLmFwcGVuZChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICBpZiAobV9pc1N1c3BlbmRlZCkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVu
dFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAppbmRleCAy
YjVlNDhhNzIwZTg4MDJkNjlkZTZhMmNmNjQ4NjNhMWZkYmY5NDBmLi5kM2EwMzhhNGI1ZjdiMGY3
NDkxMGU3OWY5NDZhZmFiOWI4YjBlODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
R2VuZXJpY0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50
UXVldWUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2VuZXJpY0V2
ZW50UXVldWUoRXZlbnRUYXJnZXQmKTsKICAgICB+R2VuZXJpY0V2ZW50UXVldWUoKTsKIAotICAg
IHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGVucXVldWVF
dmVudChSZWZQdHI8RXZlbnQ+JiYpOwogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIHZvaWQgY2Fu
Y2VsQWxsRXZlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggOTUwYTRiMzVm
OWM0Y2EyYjlhZDJjMDljZDg0OWJlYzE0YmMxOTgzNy4uNmU0NTYxM2EzMzdjZGY5ZjQxOWMzYTFk
MDU5N2NiZmRhMDJmZmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMjc4LDcg
KzI3OCw3IEBAIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0CiAgICAgICAgIG1fc2hpZnRLZXkgPSBr
ZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpOwogICAgICAgICBtX21ldGFLZXkgPSBrZXlTdGF0ZUV2
ZW50LT5tZXRhS2V5KCk7CiAgICAgfQotICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5n
RXZlbnQpOworICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpOwog
CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KHRoaXMtPnVuZGVybHlpbmdFdmVudCgpKSkgewogICAg
ICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91c2VFdmVudD4oKnRoaXMt
PnVuZGVybHlpbmdFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0YWI1MmZiYmI5YzE3N2Nk
OGRlNmYxOTA2ZTlhYzQ4ODA3MzAxZWFjLi5mZTYxOTgxMTg2OWViNThmYWU5MzJkMTY1YmUzNDg0
YzRkZGQ0MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMTI4LDcgKzIxMjgsNyBAQCBib29sIE5v
ZGU6OmRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50
PiB1bmRlcmx5aW5nRXZlbgogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsK
ICAgICBSZWY8VUlFdmVudD4gZXZlbnQgPSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRP
TUFjdGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZGV0
YWlsKTsKLSAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudCk7Cisg
ICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpOwogICAg
IGRpc3BhdGNoU2NvcGVkRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiBldmVudC0+ZGVmYXVsdEhh
bmRsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaAppbmRleCA4YmZkZjZiZjBiYWQz
MTJhMmM1NDAyNWUwZTk0YjNiZjAyNTY1MjU5Li5mODVkNzU3N2MxYmU5ZDNjMjgzNzZlMTE2YTQz
OGVkYmEzNjJlYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCkBAIC0yOCw3ICsyOCw2
IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgogI2luY2x1ZGUgIlRyYXZlcnNhbC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9QZW5kaW5nU2NyaXB0LmgKaW5kZXggMDIzNmZlOTdlMDkyMTJlYjY5YjQyNjg2NWRkMjY3
YmEyNjE5ZmNkNC4uMDRkMWIyM2RiMmU0YTc3MGYxN2FlMTI5MDg5MjU1MTA0ZTg5OGM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKaW5kZXggMWJkNWJlOGRkYTEwMWE1ZGYw
YzlmYzFhYzM2OGQ5ODU2MGYwMjMxYi4uN2JkY2ZjZGQxYWJjYjY5Y2JlYmE1MzU4OTk2OWU3NzYz
MTJkN2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcApAQCAtNjQsOSArNjQs
OSBAQCBSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKCkKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQb3BTdGF0ZUV2ZW50KTsKIH0KIAotUmVmPFBvcFN0YXRlRXZlbnQ+
IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+IGhpc3RvcnkpCitSZWY8UG9wU3Rh
dGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+IGhpc3RvcnkpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9wU3RhdGVFdmVudChzZXJpYWxpemVkU3RhdGUsIGhp
c3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb3BTdGF0ZUV2ZW50KFdURk1vdmUo
c2VyaWFsaXplZFN0YXRlKSwgaGlzdG9yeSkpOwogfQogCiBSZWY8UG9wU3RhdGVFdmVudD4gUG9w
U3RhdGVFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUG9wU3Rh
dGVFdmVudEluaXQmIGluaXRpYWxpemVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5k
ZXggYzYzYjM0YTkwMjE0YWFmNGNiODUwZGZhZTUzMTZlMWRhZmVjY2VlZi4uNmQ0NzQxODllNDg1
YWE5NDgxMWNlOTFjNzNjMjk4NGE0MGNmY2U0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVu
dC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFBvcFN0YXRlRXZlbnQgZmluYWwgOiBwdWJsaWMg
RXZlbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBvcFN0YXRlRXZlbnQoKTsKICAgICBzdGF0
aWMgUmVmPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWY8UG9wU3RhdGVF
dmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0
cjxIaXN0b3J5Pik7CisgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgUGFzc1JlZlB0cjxIaXN0b3J5Pik7CiAgICAgc3Rh
dGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3Qg
UG9wU3RhdGVFdmVudEluaXQmKTsKIAogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkU3RhdGUoKSBjb25zdCB7IEFTU0VSVChtX3NlcmlhbGl6ZWRTdGF0ZSk7
IHJldHVybiBtX3NlcmlhbGl6ZWRTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBkMzEwYzgwNzUxYjZiYjUwZTU4ZGEzNzYzNjMyY2Mz
MTIxMDRlZmU2Li4yODAzMzE1OWZhY2FmY2NkM2ZiOThmNWI5ZjllNGUyYTMxMDUxODNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMjM2LDE1
ICsyMzYsNiBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6cGFyc2VTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYgc2hlZXQpCiAjZW5kaWYKIH0KIAotdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246OnNldENTU1N0eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBzaGVldCkKLXsK
LSAgICBBU1NFUlQoIW1fY2FjaGVkU2hlZXQpOwotICAgIEFTU0VSVCghbV9sb2FkaW5nKTsKLSAg
ICBtX3NoZWV0ID0gc2hlZXQ7Ci0gICAgc2hlZXQtPnNldFRpdGxlKG1fdGl0bGUpOwotICAgIHNo
ZWV0LT5zZXREaXNhYmxlZChtX2FsdGVybmF0ZSk7Ci19Ci0KIHZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJs
cykgY29uc3QKIHsKICAgICBpZiAoIXNoZWV0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgKaW5kZXggZDQyOWE4NzJkNWViYzYxYWJiMDRlMmNiYjI5M2RiZDZl
MTNmNzZiZC4uYzNjNWE5ZGQ4ODNkMzA4ZjMwN2VkNWI3Nzk4ZjZiODcyM2RlYWI1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtNDUsNyArNDUsNiBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGxvY2FsSHJlZigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9jYWxIcmVmOyB9CiAgICAgU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdCB7IHJldHVybiBt
X3NoZWV0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KFBhc3NSZWZQdHI8Q1NT
U3R5bGVTaGVldD4pOwogCiAgICAgYm9vbCBpc0NTUygpIGNvbnN0IHsgcmV0dXJuIG1faXNDU1M7
IH0KICNpZiBFTkFCTEUoWFNMVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZUJvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQu
aAppbmRleCAxOTA3MTAyNzNmNjRiNDk4NGVjZjM0NTY2YmVhMzJlMmI2N2Y3OTJlLi4yOGU4OGMz
YzY2YWQ5MjlhZjViNGFkZDBiMjI0YjRhZjZkYzJkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlQm91bmRhcnlQb2ludC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmFuZ2VCb3VuZGFyeVBvaW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSYW5n
ZUJvdW5kYXJ5UG9pbnQoUGFzc1JlZlB0cjxOb2RlPiBjb250YWluZXIpOworICAgIGV4cGxpY2l0
IFJhbmdlQm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIpOwogCiAgICAgZXhwbGljaXQgUmFu
Z2VCb3VuZGFyeVBvaW50KGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYpOwogCkBAIC02NSw3ICs2
NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fY2hpbGRCZWZvcmVCb3VuZGFyeTsK
IH07CiAKLWlubGluZSBSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2ludChQYXNz
UmVmUHRyPE5vZGU+IGNvbnRhaW5lcikKK2lubGluZSBSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdl
Qm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIpCiAgICAgOiBtX2NvbnRhaW5lck5vZGUoY29u
dGFpbmVyKQogewogICAgIEFTU0VSVChtX2NvbnRhaW5lck5vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2
ZW50LmNwcAppbmRleCA4MjlhOGM1NTM2MWI0MDY4ODY1YmE0ZjA1NjdhMTk4ODNjZGRjOTEyLi4z
MjI3MjM3MzYxMDhjMzc5MTMwMjY0MWUwNjgyYWYzNTU4YWI2NDk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dEV2ZW50LmNwcApAQCAtNDcsOSArNDcsOSBAQCBSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNy
ZWF0ZUZvclBsYWluVGV4dFBhc3RlKEFic3RyYWN0VmlldyogdmlldywgY29uc3QgU3RyaQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCAwLCBzaG91bGRTbWFy
dFJlcGxhY2UsIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90
ZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFz
dGUoQWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRhdGEs
IGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9j
a3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1JlZjxUZXh0RXZlbnQ+IFRl
eHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqIHZpZXcsIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29s
IHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVI
YW5kbGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywgIiIs
IGRhdGEsIHNob3VsZFNtYXJ0UmVwbGFjZSwgc2hvdWxkTWF0Y2hTdHlsZSwgbWFpbEJsb2NrcXVv
dGVIYW5kbGluZykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCAi
IiwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBt
YWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKIFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRHJvcChBYnN0cmFjdFZpZXcqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKQEAg
LTgwLDExICs4MCwxMSBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChBYnN0cmFjdFZpZXcqIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlCiB7CiB9CiAKLVRleHRFdmVu
dDo6VGV4dEV2ZW50KEFic3RyYWN0VmlldyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFy
dFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBt
YWlsQmxvY2txdW90ZUhhbmRsaW5nKQorVGV4dEV2ZW50OjpUZXh0RXZlbnQoQWJzdHJhY3RWaWV3
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBh
c3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hT
dHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogICAg
IDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIHZpZXcs
IDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3RlKQogICAgICwgbV9kYXRh
KGRhdGEpCi0gICAgLCBtX3Bhc3RpbmdGcmFnbWVudChwYXN0aW5nRnJhZ21lbnQpCisgICAgLCBt
X3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCkpCiAgICAgLCBtX3Nob3Vs
ZFNtYXJ0UmVwbGFjZShzaG91bGRTbWFydFJlcGxhY2UpCiAgICAgLCBtX3Nob3VsZE1hdGNoU3R5
bGUoc2hvdWxkTWF0Y2hTdHlsZSkKICAgICAsIG1fbWFpbEJsb2NrcXVvdGVIYW5kbGluZyhtYWls
QmxvY2txdW90ZUhhbmRsaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCmluZGV4IDFhMmFmNThlNTQw
MWI4ZTBlZTBkMjc2OWI2Yjc5YjI0MmNjZGYxMTguLmFjNTZhMzIxMWQ0MDhlMjhhNjA2MjY5ZjAx
OWU0NTZlNmQ4OTNhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRl
KCk7CiAgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGUoQWJzdHJhY3RWaWV3Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtl
eWJvYXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvclBsYWluVGV4
dFBhc3RlKEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFy
dFJlcGxhY2UpOwotICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRnJhZ21l
bnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRhdGEs
IGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9y
RnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBk
YXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWls
QmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0
ZUZvckRyb3AoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICAgICAgc3Rh
dGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRpY3RhdGlvbihBYnN0cmFjdFZpZXcqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcyk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBUZXh0RXZlbnQoKTsKIAogICAgICAgICBUZXh0RXZlbnQoQWJzdHJhY3RWaWV3
KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1
dEtleWJvYXJkKTsKLSAgICAgICAgVGV4dEV2ZW50KEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzaG91bGRTbWFydFJl
cGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Cisg
ICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiYmLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91
bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICAgICAgVGV4dEV2ZW50
KEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNUZXh0RXZlbnQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCBmZTQ3N2NiNGJjMTY2ZWM5MTlkY2JmMDNhMTYwZjM5ZDFjMTAxOTVkLi40NWNm
Zjg4OWZhZjgzN2FiYzRjNzVmNzk4ODI4NjFiYmJhYTA2N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC00NjQsMTIgKzQ2NCwxMiBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWlu
VGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShk
b2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAK
LXZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkKK3ZvaWQgRWRpdG9y
OjpwYXN0ZUFzRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCiB7CiAgICAgTm9kZSogdGFyZ2V0ID0gZmlu
ZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICBy
ZXR1cm47Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJh
Z21lbnRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nRnJhZ21lbnQsIHNtYXJ0
UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOworICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9jdW1l
bnQoKS5kb21XaW5kb3coKSwgV1RGTW92ZShwYXN0aW5nRnJhZ21lbnQpLCBzbWFydFJlcGxhY2Us
IG1hdGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpKTsKIH0KIAogdm9pZCBFZGl0b3I6
OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBjOWQxNTZlNjE2MmMyN2RmODZlZjI3YWVlZmZiNzk0YjM3MDVhNTRlLi4wOGUxOTQzNWYx
ZGI1ZTU2MjQ2OTE5NzJmMGE4Nzk1MDJiNWNlZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTM0Niw3ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5k
bGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pOwogICAg
IHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbEFzSWdub3JlZCgpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50Piwg
Ym9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNGcmFnbWVudChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4m
JiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBz
bWFydFJlcGxhY2UpOwogCiAgICAgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBvbiB0aGUgbWFjIHdo
ZXJlIHBhc3RlIGlzIGltcGxlbWVudGVkIHByaW1hcmlseSBhdCB0aGUgV2ViS2l0IGxldmVsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDRiM2M2NDI5MTJkOTNm
NmYxOGY4ZGM0NjJlN2Q3MzRkMWZkZjE4ODYuLmRhZjcyOTRjNmNlMDcwYjdlZTVmNjU5Nzc2MmVl
NTFjMTI0NDgwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAg
LTI4Myw3ICsyODMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGlmIChSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQocGFz
dGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsKICAgICAgICAgbWF5YmVD
b3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KCpub2RlLCAqZnJhZ21lbnQpOwogICAgICAgICBp
ZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rp
b25QYXN0ZWQpKQotICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2Uo
KSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNlLCBNYWls
QmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKTsKKyAgICAgICAgICAgIHBhc3Rl
QXNGcmFnbWVudChXVEZNb3ZlKGZyYWdtZW50KSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9h
cmQocGFzdGVib2FyZCksIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9j
a3F1b3RlKTsKICAgICB9CiAKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChT
dHJpbmcoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269868</attachid>
            <date>2016-01-26 01:44:12 -0800</date>
            <delta_ts>2016-01-26 01:45:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153470-20160126184344.patch</filename>
            <type>text/plain</type>
            <size>24516</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjNmNhYTkyM2IyOWQy
Y2FjMmYxMGJiOTlkMGQ5ODBkODFmNWUzYy4uZGRhODIwNTBhYzYxYTAwYTY4YTZiYTM0MTIxNTc5
ZDQ5ODBlZGU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAxLTI1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciB1c2VzIGluIGRvbSAtIDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFzIGEgc3RlcCB0byByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRj
aCByZWR1Y2VzIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2RvbS4gCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkb3B0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKToKKyAgICAgICAgKiBkb20vRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudCk6Cisg
ICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vR2VuZXJpY0V2
ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2
YXRlRXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaDoKKyAgICAgICAgKiBkb20v
UGVuZGluZ1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldCk6
IERlbGV0ZWQuIE5vYm9keSBjYWxscyB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2lu
dCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2
ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFn
bWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQpOgorCiAyMDE2LTAxLTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgV2ViQ29yZUpTQnVpbHRpbnMgZG8gbm90IHVzZSB0
byBkbyBjb25kaXRpb25hbCBpbmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwZTdj
NjFmZmY2M2ZlZTAwODkxZGZlZTZlOWU0ODkzMGUyNDFmYjBhLi5jMjRkMmY2NWUzMTEzODQwZWEw
NTdiMTJjZGU4YTI0YWRlZjQ5OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwMDUs
NyArMTAwNSw3IEBAIFJlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBv
cnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYKIH0KIAogCi1SZWZQdHI8Tm9kZT4g
RG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShSZWZQdHI8Tm9kZT4mJiBz
b3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghc291cmNlKSB7CiAgICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC0yNzMxLDggKzI3MzEsOCBAQCB2b2lkIERvY3Vt
ZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBkaXNwYXRjaFdpbmRvd0xvYWRFdmVudCgpOwogICAg
IGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnROb3RQZXJzaXN0ZWQpOwogICAgIGlm
IChtX3BlbmRpbmdTdGF0ZU9iamVjdCkKLSAgICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobV9w
ZW5kaW5nU3RhdGVPYmplY3QucmVsZWFzZSgpKTsKLSAgICAKKyAgICAgICAgZW5xdWV1ZVBvcHN0
YXRlRXZlbnQoV1RGTW92ZShtX3BlbmRpbmdTdGF0ZU9iamVjdCkpOworCiAgICAgaWYgKGYpCiAg
ICAgICAgIGYtPmxvYWRlcigpLmRpc3BhdGNoT25sb2FkRXZlbnRzKCk7CiAjaWZkZWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwpAQCAtNTU0OCw5ICs1NTQ4LDkgQEAgdm9pZCBEb2N1bWVu
dDo6ZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3QgU3Ry
aW5nJiBuZXdVUkwKICAgICBlbnF1ZXVlV2luZG93RXZlbnQoSGFzaENoYW5nZUV2ZW50OjpjcmVh
dGUob2xkVVJMLCBuZXdVUkwpKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRl
RXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQordm9p
ZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBzdGF0ZU9iamVjdCkKIHsKLSAgICBlbnF1ZXVlV2luZG93RXZlbnQoUG9wU3RhdGVF
dmVudDo6Y3JlYXRlKHN0YXRlT2JqZWN0LCBtX2RvbVdpbmRvdyA/IG1fZG9tV2luZG93LT5oaXN0
b3J5KCkgOiBudWxscHRyKSk7CisgICAgZW5xdWV1ZVdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6
OmNyZWF0ZShXVEZNb3ZlKHN0YXRlT2JqZWN0KSwgbV9kb21XaW5kb3cgPyBtX2RvbVdpbmRvdy0+
aGlzdG9yeSgpIDogbnVsbHB0cikpOwogfQogCiB2b2lkIERvY3VtZW50OjphZGRNZWRpYUNhblN0
YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKiBsaXN0ZW5lcikKQEAgLTY4MjgsNyAr
NjgyOCw3IEBAIGJvb2wgRG9jdW1lbnQ6Omhhc0ZvY3VzKCkgY29uc3QKICNpZiBFTkFCTEUoV0VC
X1JFUExBWSkKIHZvaWQgRG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKFBhc3NSZWZQdHI8SW5wdXRD
dXJzb3I+IGN1cnNvcikKIHsKLSAgICBtX2lucHV0Q3Vyc29yID0gY3Vyc29yOworICAgIG1faW5w
dXRDdXJzb3IgPSBXVEZNb3ZlKGN1cnNvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCBhZDZhZDliYzQ0NjI1NjZmZDQyYTZjOTU5MjExZjIxZDZjMTg3NmQ3Li42Y2Q3NzMy
ODc3ZDFlMmM2Zjg2ZmFkOTdlMWNkY2QzNDRlZTkyNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICBET01TZWN1cml0eVBvbGljeSYgc2VjdXJp
dHlQb2xpY3koKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxOb2RlPiBhZG9w
dE5vZGUoUmVmUHRyPE5vZGU+JiYgc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWY8
SFRNTENvbGxlY3Rpb24+IGltYWdlcygpOwogICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRz
KCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlT3ZlcmZs
b3dFdmVudChSZWY8RXZlbnQ+JiYpOwogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFn
ZXNob3dFdmVudFBlcnNpc3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKLSAgICB2b2lkIGVu
cXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0
ZU9iamVjdCk7CisgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIHN0YXRlT2JqZWN0KTsKICAgICB2aXJ0dWFsIERvY3VtZW50RXZlbnRR
dWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fZXZlbnRR
dWV1ZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
LmNwcAppbmRleCAwNWYwODBkNjgxMWM3ZmZhMmUzNzQ1ZmUzZjY4ZThhM2U0NTU0ZjA2Li40ZWQ3
ODdlYzBiZjcyZTMxNDEwNDNmZmRkMDlmZTcwZDhiZGFmMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIERvY3VtZW50TWFya2Vy
RGVzY3JpcHRpb24qIHRvRG9jdW1lbnRNYXJrZXJEZXNjcmlwdGlvbihEb2N1bWVudE1hcmtlckRl
dGEKIAogY2xhc3MgRG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2ggOiBwdWJsaWMgRG9jdW1lbnRNYXJr
ZXJEZXRhaWxzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtl
clRleHRNYXRjaD4gaW5zdGFuY2VGb3IoYm9vbCk7CisgICAgc3RhdGljIFJlZjxEb2N1bWVudE1h
cmtlclRleHRNYXRjaD4gaW5zdGFuY2VGb3IoYm9vbCk7CiAKICAgICBib29sIGFjdGl2ZU1hdGNo
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRjaDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRNYXRj
aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTgyLDExICs4Miw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX21hdGNoOwogfTsKIAotUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtl
clRleHRNYXRjaD4gRG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKGJvb2wgbWF0
Y2gpCitSZWY8RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g+IERvY3VtZW50TWFya2VyVGV4dE1hdGNo
OjppbnN0YW5jZUZvcihib29sIG1hdGNoKQogewotICAgIHN0YXRpYyBEb2N1bWVudE1hcmtlclRl
eHRNYXRjaCogdHJ1ZUluc3RhbmNlID0gYWRvcHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1h
dGNoKHRydWUpKS5sZWFrUmVmKCk7Ci0gICAgc3RhdGljIERvY3VtZW50TWFya2VyVGV4dE1hdGNo
KiBmYWxzZUluc3RhbmNlID0gYWRvcHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNoKGZh
bHNlKSkubGVha1JlZigpOwotICAgIHJldHVybiBtYXRjaCA/IHRydWVJbnN0YW5jZSA6IGZhbHNl
SW5zdGFuY2U7CisgICAgcmV0dXJuIG1hdGNoID8gYWRvcHRSZWYoKm5ldyBEb2N1bWVudE1hcmtl
clRleHRNYXRjaCh0cnVlKSkgOiBhZG9wdFJlZigqbmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNo
KGZhbHNlKSk7CiB9CiAKIGlubGluZSBEb2N1bWVudE1hcmtlclRleHRNYXRjaCogdG9Eb2N1bWVu
dE1hcmtlclRleHRNYXRjaChEb2N1bWVudE1hcmtlckRldGFpbHMqIGRldGFpbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmNwcAppbmRleCAxNDliMDRlYjkyZDY2YmRlNDcxN2ZmNTM1NTk5OTk1OGU5NTY1YmFlLi4x
N2Q2MWI1OWNmNmViYjY2YmQzNjc3MTJmMTI3NWJiNjI0NGUwYmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5j
cHAKQEAgLTE3NiwxMiArMTc2LDEzIEBAIHZvaWQgRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKIHsK
IH0KIAotdm9pZCBFdmVudDo6c2V0VW5kZXJseWluZ0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHVl
KQordm9pZCBFdmVudDo6c2V0VW5kZXJseWluZ0V2ZW50KEV2ZW50KiB1ZSkKIHsKICAgICAvLyBQ
cm9oaWJpdCBjcmVhdGlvbiBvZiBhIGN5Y2xlIC0tIGp1c3QgZG8gbm90aGluZyBpbiB0aGF0IGNh
c2UuCi0gICAgZm9yIChFdmVudCogZSA9IHVlLmdldCgpOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2
ZW50KCkpCisgICAgZm9yIChFdmVudCogZSA9IHVlOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50
KCkpIHsKICAgICAgICAgaWYgKGUgPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgbV91bmRlcmx5aW5nRXZlbnQgPSB1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCBhMTM5
ODcxZWU0ZDQxNzVhZTk2YzdmMjg5YmJjMDk5MTcwOWEyYTAxLi5hNTNhODhmYjZkNDllZTRlNjNl
ZTI4OGZiZjAzMDg4OTczM2RkNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTczLDcgKzE3Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENhbmNlbEJ1YmJsZShib29sIGNhbmNlbCkgeyBtX2NhbmNl
bEJ1YmJsZSA9IGNhbmNlbDsgfQogCiAgICAgRXZlbnQqIHVuZGVybHlpbmdFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5kZXJseWluZ0V2ZW50LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRVbmRlcmx5
aW5nRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZvaWQgc2V0VW5kZXJseWluZ0V2ZW50
KEV2ZW50Kik7CiAKICAgICB2aXJ0dWFsIERhdGFUcmFuc2ZlciogaW50ZXJuYWxEYXRhVHJhbnNm
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
aAppbmRleCBmMTg5ZDdhNGRmMmI4NWQyN2FmNzQ1Y2ZhZTNhYWU0NjgwZGE5MzUyLi5iYTQzZWVk
YmU0OTI1NDVjNjNiNTBlNDRmYjZiOWFmNjcxNTI3ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlj
a09wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5l
cmljRXZlbnRRdWV1ZS5jcHAKaW5kZXggZGJhODUyNzBkYjQ3OTRmNmZhYjIzYTI2YjM5ZjFjYjU5
NGIxZGQyZS4uY2QyMDFhMzY5ZmQ2ZDRjM2NhZTNkMWNjMmM5N2I0MmYwYzFmMzQ3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdl
bmVyaWNFdmVudFF1ZXVlOjp+R2VuZXJpY0V2ZW50UXVldWUoKQogewogfQogCi12b2lkIEdlbmVy
aWNFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit2b2lk
IEdlbmVyaWNFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiYmIGV2ZW50KQog
ewogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgR2VuZXJpY0V2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKICAgICBpZiAoZXZlbnQtPnRhcmdldCgpID09ICZtX293bmVyKQogICAgICAgICBldmVu
dC0+c2V0VGFyZ2V0KG51bGxwdHIpOwogCi0gICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChldmVu
dCk7CisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICBp
ZiAobV9pc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJp
Y0V2ZW50UXVldWUuaAppbmRleCAyYjVlNDhhNzIwZTg4MDJkNjlkZTZhMmNmNjQ4NjNhMWZkYmY5
NDBmLi5kM2EwMzhhNGI1ZjdiMGY3NDkxMGU3OWY5NDZhZmFiOWI4YjBlODdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgR2VuZXJpY0V2ZW50UXVldWUoRXZlbnRUYXJnZXQmKTsKICAgICB+R2VuZXJp
Y0V2ZW50UXVldWUoKTsKIAotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
KTsKKyAgICB2b2lkIGVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYpOwogICAgIHZvaWQgY2xv
c2UoKTsKIAogICAgIHZvaWQgY2FuY2VsQWxsRXZlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5jcHAKaW5kZXggOTUwYTRiMzVmOWM0Y2EyYjlhZDJjMDljZDg0OWJlYzE0YmMxOTgzNy4uNmU0
NTYxM2EzMzdjZGY5ZjQxOWMzYTFkMDU5N2NiZmRhMDJmZmUyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVs
YXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0CiAg
ICAgICAgIG1fc2hpZnRLZXkgPSBrZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpOwogICAgICAgICBt
X21ldGFLZXkgPSBrZXlTdGF0ZUV2ZW50LT5tZXRhS2V5KCk7CiAgICAgfQotICAgIHNldFVuZGVy
bHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOworICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRl
cmx5aW5nRXZlbnQuZ2V0KCkpOwogCiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KHRoaXMtPnVuZGVy
bHlpbmdFdmVudCgpKSkgewogICAgICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNh
c3Q8TW91c2VFdmVudD4oKnRoaXMtPnVuZGVybHlpbmdFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA0YWI1MmZiYmI5YzE3N2NkOGRlNmYxOTA2ZTlhYzQ4ODA3MzAxZWFjLi5mZTYxOTgxMTg2
OWViNThmYWU5MzJkMTY1YmUzNDg0YzRkZGQ0MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMTI4
LDcgKzIxMjgsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0
YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbgogewogICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnRE
aXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBSZWY8VUlFdmVudD4gZXZlbnQgPSBVSUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSwgZGV0YWlsKTsKLSAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50
KHVuZGVybHlpbmdFdmVudCk7CisgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5
aW5nRXZlbnQuZ2V0KCkpOwogICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoZXZlbnQpOwogICAgIHJl
dHVybiBldmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
aAppbmRleCA4YmZkZjZiZjBiYWQzMTJhMmM1NDAyNWUwZTk0YjNiZjAyNTY1MjU5Li5mODVkNzU3
N2MxYmU5ZDNjMjgzNzZlMTE2YTQzOGVkYmEzNjJlYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRyYXZlcnNhbC5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmgKaW5kZXggMDIzNmZlOTdl
MDkyMTJlYjY5YjQyNjg2NWRkMjY3YmEyNjE5ZmNkNC4uMDRkMWIyM2RiMmU0YTc3MGYxN2FlMTI5
MDg5MjU1MTA0ZTg5OGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdT
Y3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5oCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9w
U3RhdGVFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKaW5k
ZXggMWJkNWJlOGRkYTEwMWE1ZGYwYzlmYzFhYzM2OGQ5ODU2MGYwMjMxYi4uN2JkY2ZjZGQxYWJj
YjY5Y2JlYmE1MzU4OTk2OWU3NzYzMTJkN2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2
ZW50LmNwcApAQCAtNjQsOSArNjQsOSBAQCBSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVu
dDo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb3BTdGF0ZUV2ZW50KTsKIH0K
IAotUmVmPFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+
IGhpc3RvcnkpCitSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhp
c3Rvcnk+IGhpc3RvcnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9wU3RhdGVFdmVu
dChzZXJpYWxpemVkU3RhdGUsIGhpc3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
b3BTdGF0ZUV2ZW50KFdURk1vdmUoc2VyaWFsaXplZFN0YXRlKSwgaGlzdG9yeSkpOwogfQogCiBS
ZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmIGluaXRpYWxpemVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggYzYzYjM0YTkwMjE0YWFmNGNiODUwZGZhZTUzMTZlMWRh
ZmVjY2VlZi4uNmQ0NzQxODllNDg1YWE5NDgxMWNlOTFjNzNjMjk4NGE0MGNmY2U0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFBvcFN0YXRl
RXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBvcFN0
YXRlRXZlbnQoKTsKICAgICBzdGF0aWMgUmVmPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZSgpOwotICAg
IHN0YXRpYyBSZWY8UG9wU3RhdGVFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxIaXN0b3J5Pik7CisgICAgc3RhdGljIFJlZjxQb3BTdGF0
ZUV2ZW50PiBjcmVhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgUGFzc1JlZlB0
cjxIaXN0b3J5Pik7CiAgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsKIAogICAgIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUoKSBjb25zdCB7IEFTU0VS
VChtX3NlcmlhbGl6ZWRTdGF0ZSk7IHJldHVybiBtX3NlcmlhbGl6ZWRTdGF0ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBkMzEwYzgwNzUx
YjZiYjUwZTU4ZGEzNzYzNjMyY2MzMTIxMDRlZmU2Li4yODAzMzE1OWZhY2FmY2NkM2ZiOThmNWI5
ZjllNGUyYTMxMDUxODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcApAQCAtMjM2LDE1ICsyMzYsNiBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpCiAjZW5kaWYKIH0KIAotdm9p
ZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NT
dHlsZVNoZWV0PiBzaGVldCkKLXsKLSAgICBBU1NFUlQoIW1fY2FjaGVkU2hlZXQpOwotICAgIEFT
U0VSVCghbV9sb2FkaW5nKTsKLSAgICBtX3NoZWV0ID0gc2hlZXQ7Ci0gICAgc2hlZXQtPnNldFRp
dGxlKG1fdGl0bGUpOwotICAgIHNoZWV0LT5zZXREaXNhYmxlZChtX2FsdGVybmF0ZSk7Ci19Ci0K
IHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBpZiAoIXNoZWV0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggZDQyOWE4NzJkNWVi
YzYxYWJiMDRlMmNiYjI5M2RiZDZlMTNmNzZiZC4uYzNjNWE5ZGQ4ODNkMzA4ZjMwN2VkNWI3Nzk4
ZjZiODcyM2RlYWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGxvY2Fs
SHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxIcmVmOyB9CiAgICAgU3R5bGVTaGVldCogc2hl
ZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDU1NTdHls
ZVNoZWV0KFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4pOwogCiAgICAgYm9vbCBpc0NTUygpIGNv
bnN0IHsgcmV0dXJuIG1faXNDU1M7IH0KICNpZiBFTkFCTEUoWFNMVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAppbmRleCAxOTA3MTAyNzNmNjRiNDk4NGVjZjM0NTY2YmVh
MzJlMmI2N2Y3OTJlLi4yOGU4OGMzYzY2YWQ5MjlhZjViNGFkZDBiMjI0YjRhZjZkYzJkZWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2VCb3VuZGFyeVBvaW50IHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBSYW5nZUJvdW5kYXJ5UG9pbnQoUGFzc1JlZlB0cjxOb2RlPiBjb250
YWluZXIpOworICAgIGV4cGxpY2l0IFJhbmdlQm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIp
OwogCiAgICAgZXhwbGljaXQgUmFuZ2VCb3VuZGFyeVBvaW50KGNvbnN0IFJhbmdlQm91bmRhcnlQ
b2ludCYpOwogCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1f
Y2hpbGRCZWZvcmVCb3VuZGFyeTsKIH07CiAKLWlubGluZSBSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJh
bmdlQm91bmRhcnlQb2ludChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lcikKK2lubGluZSBSYW5n
ZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIpCiAgICAg
OiBtX2NvbnRhaW5lck5vZGUoY29udGFpbmVyKQogewogICAgIEFTU0VSVChtX2NvbnRhaW5lck5v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCA4MjlhOGM1NTM2MWI0MDY4ODY1YmE0
ZjA1NjdhMTk4ODNjZGRjOTEyLi4zMjI3MjM3MzYxMDhjMzc5MTMwMjY0MWUwNjgyYWYzNTU4YWI2
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtNDcsOSArNDcsOSBAQCBSZWY8VGV4
dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKEFic3RyYWN0Vmlldyog
dmlldywgY29uc3QgU3RyaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3
LCBkYXRhLCAwLCBzaG91bGRTbWFydFJlcGxhY2UsIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nOjpSZXNwZWN0QmxvY2txdW90ZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6
OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoQWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3Vs
ZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZykKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0
cmFjdFZpZXcqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hv
dWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0RXZlbnQodmlldywgIiIsIGRhdGEsIHNob3VsZFNtYXJ0UmVwbGFjZSwgc2hvdWxkTWF0
Y2hTdHlsZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCAiIiwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNl
LCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKIFJlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChBYnN0cmFjdFZpZXcqIHZpZXcsIGNv
bnN0IFN0cmluZyYgZGF0YSkKQEAgLTgwLDExICs4MCwxMSBAQCBUZXh0RXZlbnQ6OlRleHRFdmVu
dChBYnN0cmFjdFZpZXcqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRU
eXBlCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KEFic3RyYWN0VmlldyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFn
bWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFp
bEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorVGV4dEV2ZW50OjpU
ZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxh
Y2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxv
Y2txdW90ZUhhbmRsaW5nKQogICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZl
bnQsIHRydWUsIHRydWUsIHZpZXcsIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1
dFBhc3RlKQogICAgICwgbV9kYXRhKGRhdGEpCi0gICAgLCBtX3Bhc3RpbmdGcmFnbWVudChwYXN0
aW5nRnJhZ21lbnQpCisgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdGcmFn
bWVudCkpCiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShzaG91bGRTbWFydFJlcGxhY2UpCiAg
ICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUoc2hvdWxkTWF0Y2hTdHlsZSkKICAgICAsIG1fbWFpbEJs
b2NrcXVvdGVIYW5kbGluZyhtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVu
dC5oCmluZGV4IDFhMmFmNThlNTQwMWI4ZTBlZTBkMjc2OWI2Yjc5YjI0MmNjZGYxMTguLmFjNTZh
MzIxMWQ0MDhlMjhhNjA2MjY5ZjAxOWU0NTZlNmQ4OTNhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlKCk7CiAgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBj
cmVhdGUoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZl
bnQ+IGNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYg
ZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpOwotICAgICAgICBzdGF0aWMgUmVmPFRleHRF
dmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3Vs
ZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBzdGF0aWMgUmVm
PFRleHRFdmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICAgICAgc3RhdGlj
IFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5n
JiBkYXRhKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRpY3RhdGlv
bihBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKQEAgLTcyLDcgKzcyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUZXh0RXZlbnQoKTsKIAogICAgICAgICBU
ZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1
dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKLSAgICAgICAgVGV4dEV2ZW50KEFic3Ry
YWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJs
b2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBib29sIHNob3VsZFNt
YXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
KTsKICAgICAgICAgVGV4dEV2ZW50KEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RXZlbnQoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzM2ExMDIyZTU0ODM5NGZjNDRmZWNhOWQ3
MGUyNDMxZjI3N2Q3NGQyLi45NWFmMzJlNDc0ZDFmYWExMDA0YzdiN2M0NGZkY2Y2NGUwMjZlMWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00NjQsMTIgKzQ2NCwxMiBAQCB2b2lk
IEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29s
IHNtYXJ0UmVwbGFjZSkKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVh
dGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwg
c21hcnRSZXBsYWNlKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnRSZXBsYWNl
LCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgcmVzcGVjdHNNYWlsQmxv
Y2txdW90ZSkKK3ZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0
eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCiB7CiAg
ICAgTm9kZSogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlm
ICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBw
YXN0aW5nRnJhZ21lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxv
Y2txdW90ZSkpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZv
ckZyYWdtZW50UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgV1RGTW92ZShwYXN0aW5nRnJh
Z21lbnQpLCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUp
KTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBjOWQxNTZlNjE2MmMyN2RmODZlZjI3YWVlZmZiNzk0
YjM3MDVhNTRlLi4wOGUxOTQzNWYxZGI1ZTU2MjQ2OTE5NzJmMGE4Nzk1MDJiNWNlZDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM0Niw3ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24pOwogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbEFzSWdub3Jl
ZCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RC
bG9ja3F1b3RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNGcmFnbWVudChSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHls
ZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3Bl
Y3RCbG9ja3F1b3RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiwgYm9vbCBzbWFydFJlcGxhY2UpOwogCiAgICAgLy8gVGhpcyBpcyBvbmx5
IGNhbGxlZCBvbiB0aGUgbWFjIHdoZXJlIHBhc3RlIGlzIGltcGxlbWVudGVkIHByaW1hcmlseSBh
dCB0aGUgV2ViS2l0IGxldmVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9n
dGsvRWRpdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5j
cHAKaW5kZXggODNjNDllOGI5NWFlZTg0NzQ2NTM2MTg1YTliOTUxMWJlNGZiNjk2OC4uNDg0ZjJk
MTg2ZDNhMjRhOWEzZTdmYWY4MDgwOWFkMDA0ZDliNTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9FZGl0b3JHdGsuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0
ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRl
eHQsIE1hCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSgqcGFzdGVi
b2FyZCwgbV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOwog
ICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2Us
IEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFn
bWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBjaG9zZVBs
YWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgIHBhc3RlQXNGcmFnbWVu
dChXVEZNb3ZlKGZyYWdtZW50KSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3Rl
Ym9hcmQpLCBjaG9zZVBsYWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiB9CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRVUkwoRWxlbWVudCYgZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YjNjNjQyOTEyZDkzZjZm
MThmOGRjNDYyZTdkNzM0ZDFmZGYxODg2Li5kYWY3Mjk0YzZjZTA3MGI3ZWU1ZjY1OTc3NjJlZTUx
YzEyNDQ4MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0y
ODMsNyArMjgzLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9k
ZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBpZiAoUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJlQ29w
eU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKICAgICAgICAgaWYg
KHNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9u
UGFzdGVkKSkKLSAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlKCks
IGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSwgTWFpbEJs
b2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7CisgICAgICAgICAgICBwYXN0ZUFz
RnJhZ21lbnQoV1RGTW92ZShmcmFnbWVudCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJk
KHBhc3RlYm9hcmQpLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2tx
dW90ZSk7CiAgICAgfQogCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3Ry
aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy93aW4vRWRpdG9yV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAKaW5kZXggYThh
ZDY3Y2FhODk2MjUwNGJiNzkzNmYxOTQwNzZjYWMzOTgyNTMzMy4uZTc0MDYyYWZjOGQ0ODA4ODFm
NTA2MzJlMmE3Y2RmN2FhMjFiYjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy93aW4vRWRpdG9yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3dpbi9FZGl0
b3JXaW4uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJv
YXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQsIE1hCiAgICAg
Ym9vbCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQ
bGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5z
ZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQot
ICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0
ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxp
bmcpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVudCksIGNhblNtYXJ0
UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxC
bG9ja3F1b3RlSGFuZGxpbmcpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGxhdGZvcm1EcmFn
RGF0YT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269869</attachid>
            <date>2016-01-26 01:45:57 -0800</date>
            <delta_ts>2016-01-26 05:59:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153470-20160126184530.patch</filename>
            <type>text/plain</type>
            <size>26007</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjNmNhYTkyM2IyOWQy
Y2FjMmYxMGJiOTlkMGQ5ODBkODFmNWUzYy4uZGRhODIwNTBhYzYxYTAwYTY4YTZiYTM0MTIxNTc5
ZDQ5ODBlZGU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAxLTI1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciB1c2VzIGluIGRvbSAtIDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFzIGEgc3RlcCB0byByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRj
aCByZWR1Y2VzIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2RvbS4gCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkb3B0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKToKKyAgICAgICAgKiBkb20vRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudCk6Cisg
ICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vR2VuZXJpY0V2
ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2
YXRlRXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaDoKKyAgICAgICAgKiBkb20v
UGVuZGluZ1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldCk6
IERlbGV0ZWQuIE5vYm9keSBjYWxscyB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2lu
dCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2
ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFn
bWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQpOgorCiAyMDE2LTAxLTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgV2ViQ29yZUpTQnVpbHRpbnMgZG8gbm90IHVzZSB0
byBkbyBjb25kaXRpb25hbCBpbmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwZTdj
NjFmZmY2M2ZlZTAwODkxZGZlZTZlOWU0ODkzMGUyNDFmYjBhLi5jMjRkMmY2NWUzMTEzODQwZWEw
NTdiMTJjZGU4YTI0YWRlZjQ5OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwMDUs
NyArMTAwNSw3IEBAIFJlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBv
cnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYKIH0KIAogCi1SZWZQdHI8Tm9kZT4g
RG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShSZWZQdHI8Tm9kZT4mJiBz
b3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghc291cmNlKSB7CiAgICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC0yNzMxLDggKzI3MzEsOCBAQCB2b2lkIERvY3Vt
ZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBkaXNwYXRjaFdpbmRvd0xvYWRFdmVudCgpOwogICAg
IGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnROb3RQZXJzaXN0ZWQpOwogICAgIGlm
IChtX3BlbmRpbmdTdGF0ZU9iamVjdCkKLSAgICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobV9w
ZW5kaW5nU3RhdGVPYmplY3QucmVsZWFzZSgpKTsKLSAgICAKKyAgICAgICAgZW5xdWV1ZVBvcHN0
YXRlRXZlbnQoV1RGTW92ZShtX3BlbmRpbmdTdGF0ZU9iamVjdCkpOworCiAgICAgaWYgKGYpCiAg
ICAgICAgIGYtPmxvYWRlcigpLmRpc3BhdGNoT25sb2FkRXZlbnRzKCk7CiAjaWZkZWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwpAQCAtNTU0OCw5ICs1NTQ4LDkgQEAgdm9pZCBEb2N1bWVu
dDo6ZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3QgU3Ry
aW5nJiBuZXdVUkwKICAgICBlbnF1ZXVlV2luZG93RXZlbnQoSGFzaENoYW5nZUV2ZW50OjpjcmVh
dGUob2xkVVJMLCBuZXdVUkwpKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRl
RXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQordm9p
ZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBzdGF0ZU9iamVjdCkKIHsKLSAgICBlbnF1ZXVlV2luZG93RXZlbnQoUG9wU3RhdGVF
dmVudDo6Y3JlYXRlKHN0YXRlT2JqZWN0LCBtX2RvbVdpbmRvdyA/IG1fZG9tV2luZG93LT5oaXN0
b3J5KCkgOiBudWxscHRyKSk7CisgICAgZW5xdWV1ZVdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6
OmNyZWF0ZShXVEZNb3ZlKHN0YXRlT2JqZWN0KSwgbV9kb21XaW5kb3cgPyBtX2RvbVdpbmRvdy0+
aGlzdG9yeSgpIDogbnVsbHB0cikpOwogfQogCiB2b2lkIERvY3VtZW50OjphZGRNZWRpYUNhblN0
YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKiBsaXN0ZW5lcikKQEAgLTY4MjgsNyAr
NjgyOCw3IEBAIGJvb2wgRG9jdW1lbnQ6Omhhc0ZvY3VzKCkgY29uc3QKICNpZiBFTkFCTEUoV0VC
X1JFUExBWSkKIHZvaWQgRG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKFBhc3NSZWZQdHI8SW5wdXRD
dXJzb3I+IGN1cnNvcikKIHsKLSAgICBtX2lucHV0Q3Vyc29yID0gY3Vyc29yOworICAgIG1faW5w
dXRDdXJzb3IgPSBXVEZNb3ZlKGN1cnNvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCBhZDZhZDliYzQ0NjI1NjZmZDQyYTZjOTU5MjExZjIxZDZjMTg3NmQ3Li42Y2Q3NzMy
ODc3ZDFlMmM2Zjg2ZmFkOTdlMWNkY2QzNDRlZTkyNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICBET01TZWN1cml0eVBvbGljeSYgc2VjdXJp
dHlQb2xpY3koKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxOb2RlPiBhZG9w
dE5vZGUoUmVmUHRyPE5vZGU+JiYgc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWY8
SFRNTENvbGxlY3Rpb24+IGltYWdlcygpOwogICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRz
KCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlT3ZlcmZs
b3dFdmVudChSZWY8RXZlbnQ+JiYpOwogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFn
ZXNob3dFdmVudFBlcnNpc3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKLSAgICB2b2lkIGVu
cXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0
ZU9iamVjdCk7CisgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIHN0YXRlT2JqZWN0KTsKICAgICB2aXJ0dWFsIERvY3VtZW50RXZlbnRR
dWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fZXZlbnRR
dWV1ZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
LmNwcAppbmRleCAwNWYwODBkNjgxMWM3ZmZhMmUzNzQ1ZmUzZjY4ZThhM2U0NTU0ZjA2Li40ZWQ3
ODdlYzBiZjcyZTMxNDEwNDNmZmRkMDlmZTcwZDhiZGFmMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIERvY3VtZW50TWFya2Vy
RGVzY3JpcHRpb24qIHRvRG9jdW1lbnRNYXJrZXJEZXNjcmlwdGlvbihEb2N1bWVudE1hcmtlckRl
dGEKIAogY2xhc3MgRG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2ggOiBwdWJsaWMgRG9jdW1lbnRNYXJr
ZXJEZXRhaWxzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtl
clRleHRNYXRjaD4gaW5zdGFuY2VGb3IoYm9vbCk7CisgICAgc3RhdGljIFJlZjxEb2N1bWVudE1h
cmtlclRleHRNYXRjaD4gaW5zdGFuY2VGb3IoYm9vbCk7CiAKICAgICBib29sIGFjdGl2ZU1hdGNo
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRjaDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRNYXRj
aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTgyLDExICs4Miw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX21hdGNoOwogfTsKIAotUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtl
clRleHRNYXRjaD4gRG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKGJvb2wgbWF0
Y2gpCitSZWY8RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g+IERvY3VtZW50TWFya2VyVGV4dE1hdGNo
OjppbnN0YW5jZUZvcihib29sIG1hdGNoKQogewotICAgIHN0YXRpYyBEb2N1bWVudE1hcmtlclRl
eHRNYXRjaCogdHJ1ZUluc3RhbmNlID0gYWRvcHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1h
dGNoKHRydWUpKS5sZWFrUmVmKCk7Ci0gICAgc3RhdGljIERvY3VtZW50TWFya2VyVGV4dE1hdGNo
KiBmYWxzZUluc3RhbmNlID0gYWRvcHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNoKGZh
bHNlKSkubGVha1JlZigpOwotICAgIHJldHVybiBtYXRjaCA/IHRydWVJbnN0YW5jZSA6IGZhbHNl
SW5zdGFuY2U7CisgICAgcmV0dXJuIG1hdGNoID8gYWRvcHRSZWYoKm5ldyBEb2N1bWVudE1hcmtl
clRleHRNYXRjaCh0cnVlKSkgOiBhZG9wdFJlZigqbmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNo
KGZhbHNlKSk7CiB9CiAKIGlubGluZSBEb2N1bWVudE1hcmtlclRleHRNYXRjaCogdG9Eb2N1bWVu
dE1hcmtlclRleHRNYXRjaChEb2N1bWVudE1hcmtlckRldGFpbHMqIGRldGFpbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmNwcAppbmRleCAxNDliMDRlYjkyZDY2YmRlNDcxN2ZmNTM1NTk5OTk1OGU5NTY1YmFlLi4x
N2Q2MWI1OWNmNmViYjY2YmQzNjc3MTJmMTI3NWJiNjI0NGUwYmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5j
cHAKQEAgLTE3NiwxMiArMTc2LDEzIEBAIHZvaWQgRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKIHsK
IH0KIAotdm9pZCBFdmVudDo6c2V0VW5kZXJseWluZ0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHVl
KQordm9pZCBFdmVudDo6c2V0VW5kZXJseWluZ0V2ZW50KEV2ZW50KiB1ZSkKIHsKICAgICAvLyBQ
cm9oaWJpdCBjcmVhdGlvbiBvZiBhIGN5Y2xlIC0tIGp1c3QgZG8gbm90aGluZyBpbiB0aGF0IGNh
c2UuCi0gICAgZm9yIChFdmVudCogZSA9IHVlLmdldCgpOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2
ZW50KCkpCisgICAgZm9yIChFdmVudCogZSA9IHVlOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50
KCkpIHsKICAgICAgICAgaWYgKGUgPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgbV91bmRlcmx5aW5nRXZlbnQgPSB1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCBhMTM5
ODcxZWU0ZDQxNzVhZTk2YzdmMjg5YmJjMDk5MTcwOWEyYTAxLi5hNTNhODhmYjZkNDllZTRlNjNl
ZTI4OGZiZjAzMDg4OTczM2RkNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTczLDcgKzE3Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENhbmNlbEJ1YmJsZShib29sIGNhbmNlbCkgeyBtX2NhbmNl
bEJ1YmJsZSA9IGNhbmNlbDsgfQogCiAgICAgRXZlbnQqIHVuZGVybHlpbmdFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5kZXJseWluZ0V2ZW50LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRVbmRlcmx5
aW5nRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZvaWQgc2V0VW5kZXJseWluZ0V2ZW50
KEV2ZW50Kik7CiAKICAgICB2aXJ0dWFsIERhdGFUcmFuc2ZlciogaW50ZXJuYWxEYXRhVHJhbnNm
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
aAppbmRleCBmMTg5ZDdhNGRmMmI4NWQyN2FmNzQ1Y2ZhZTNhYWU0NjgwZGE5MzUyLi5iYTQzZWVk
YmU0OTI1NDVjNjNiNTBlNDRmYjZiOWFmNjcxNTI3ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlj
a09wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5l
cmljRXZlbnRRdWV1ZS5jcHAKaW5kZXggZGJhODUyNzBkYjQ3OTRmNmZhYjIzYTI2YjM5ZjFjYjU5
NGIxZGQyZS4uY2QyMDFhMzY5ZmQ2ZDRjM2NhZTNkMWNjMmM5N2I0MmYwYzFmMzQ3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdl
bmVyaWNFdmVudFF1ZXVlOjp+R2VuZXJpY0V2ZW50UXVldWUoKQogewogfQogCi12b2lkIEdlbmVy
aWNFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit2b2lk
IEdlbmVyaWNFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiYmIGV2ZW50KQog
ewogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgR2VuZXJpY0V2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKICAgICBpZiAoZXZlbnQtPnRhcmdldCgpID09ICZtX293bmVyKQogICAgICAgICBldmVu
dC0+c2V0VGFyZ2V0KG51bGxwdHIpOwogCi0gICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChldmVu
dCk7CisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICBp
ZiAobV9pc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJp
Y0V2ZW50UXVldWUuaAppbmRleCAyYjVlNDhhNzIwZTg4MDJkNjlkZTZhMmNmNjQ4NjNhMWZkYmY5
NDBmLi5kM2EwMzhhNGI1ZjdiMGY3NDkxMGU3OWY5NDZhZmFiOWI4YjBlODdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgR2VuZXJpY0V2ZW50UXVldWUoRXZlbnRUYXJnZXQmKTsKICAgICB+R2VuZXJp
Y0V2ZW50UXVldWUoKTsKIAotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
KTsKKyAgICB2b2lkIGVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYpOwogICAgIHZvaWQgY2xv
c2UoKTsKIAogICAgIHZvaWQgY2FuY2VsQWxsRXZlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5jcHAKaW5kZXggOTUwYTRiMzVmOWM0Y2EyYjlhZDJjMDljZDg0OWJlYzE0YmMxOTgzNy4uNmU0
NTYxM2EzMzdjZGY5ZjQxOWMzYTFkMDU5N2NiZmRhMDJmZmUyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVs
YXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0CiAg
ICAgICAgIG1fc2hpZnRLZXkgPSBrZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpOwogICAgICAgICBt
X21ldGFLZXkgPSBrZXlTdGF0ZUV2ZW50LT5tZXRhS2V5KCk7CiAgICAgfQotICAgIHNldFVuZGVy
bHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOworICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRl
cmx5aW5nRXZlbnQuZ2V0KCkpOwogCiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KHRoaXMtPnVuZGVy
bHlpbmdFdmVudCgpKSkgewogICAgICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNh
c3Q8TW91c2VFdmVudD4oKnRoaXMtPnVuZGVybHlpbmdFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA0YWI1MmZiYmI5YzE3N2NkOGRlNmYxOTA2ZTlhYzQ4ODA3MzAxZWFjLi5mZTYxOTgxMTg2
OWViNThmYWU5MzJkMTY1YmUzNDg0YzRkZGQ0MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMTI4
LDcgKzIxMjgsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0
YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbgogewogICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnRE
aXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBSZWY8VUlFdmVudD4gZXZlbnQgPSBVSUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSwgZGV0YWlsKTsKLSAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50
KHVuZGVybHlpbmdFdmVudCk7CisgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5
aW5nRXZlbnQuZ2V0KCkpOwogICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoZXZlbnQpOwogICAgIHJl
dHVybiBldmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
aAppbmRleCA4YmZkZjZiZjBiYWQzMTJhMmM1NDAyNWUwZTk0YjNiZjAyNTY1MjU5Li5mODVkNzU3
N2MxYmU5ZDNjMjgzNzZlMTE2YTQzOGVkYmEzNjJlYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRyYXZlcnNhbC5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmgKaW5kZXggMDIzNmZlOTdl
MDkyMTJlYjY5YjQyNjg2NWRkMjY3YmEyNjE5ZmNkNC4uMDRkMWIyM2RiMmU0YTc3MGYxN2FlMTI5
MDg5MjU1MTA0ZTg5OGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdT
Y3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5oCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9w
U3RhdGVFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKaW5k
ZXggMWJkNWJlOGRkYTEwMWE1ZGYwYzlmYzFhYzM2OGQ5ODU2MGYwMjMxYi4uN2JkY2ZjZGQxYWJj
YjY5Y2JlYmE1MzU4OTk2OWU3NzYzMTJkN2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2
ZW50LmNwcApAQCAtNjQsOSArNjQsOSBAQCBSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVu
dDo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb3BTdGF0ZUV2ZW50KTsKIH0K
IAotUmVmPFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+
IGhpc3RvcnkpCitSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhp
c3Rvcnk+IGhpc3RvcnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9wU3RhdGVFdmVu
dChzZXJpYWxpemVkU3RhdGUsIGhpc3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
b3BTdGF0ZUV2ZW50KFdURk1vdmUoc2VyaWFsaXplZFN0YXRlKSwgaGlzdG9yeSkpOwogfQogCiBS
ZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmIGluaXRpYWxpemVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggYzYzYjM0YTkwMjE0YWFmNGNiODUwZGZhZTUzMTZlMWRh
ZmVjY2VlZi4uNmQ0NzQxODllNDg1YWE5NDgxMWNlOTFjNzNjMjk4NGE0MGNmY2U0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFBvcFN0YXRl
RXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBvcFN0
YXRlRXZlbnQoKTsKICAgICBzdGF0aWMgUmVmPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZSgpOwotICAg
IHN0YXRpYyBSZWY8UG9wU3RhdGVFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxIaXN0b3J5Pik7CisgICAgc3RhdGljIFJlZjxQb3BTdGF0
ZUV2ZW50PiBjcmVhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgUGFzc1JlZlB0
cjxIaXN0b3J5Pik7CiAgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsKIAogICAgIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUoKSBjb25zdCB7IEFTU0VS
VChtX3NlcmlhbGl6ZWRTdGF0ZSk7IHJldHVybiBtX3NlcmlhbGl6ZWRTdGF0ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBkMzEwYzgwNzUx
YjZiYjUwZTU4ZGEzNzYzNjMyY2MzMTIxMDRlZmU2Li4yODAzMzE1OWZhY2FmY2NkM2ZiOThmNWI5
ZjllNGUyYTMxMDUxODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcApAQCAtMjM2LDE1ICsyMzYsNiBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpCiAjZW5kaWYKIH0KIAotdm9p
ZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NT
dHlsZVNoZWV0PiBzaGVldCkKLXsKLSAgICBBU1NFUlQoIW1fY2FjaGVkU2hlZXQpOwotICAgIEFT
U0VSVCghbV9sb2FkaW5nKTsKLSAgICBtX3NoZWV0ID0gc2hlZXQ7Ci0gICAgc2hlZXQtPnNldFRp
dGxlKG1fdGl0bGUpOwotICAgIHNoZWV0LT5zZXREaXNhYmxlZChtX2FsdGVybmF0ZSk7Ci19Ci0K
IHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBpZiAoIXNoZWV0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggZDQyOWE4NzJkNWVi
YzYxYWJiMDRlMmNiYjI5M2RiZDZlMTNmNzZiZC4uYzNjNWE5ZGQ4ODNkMzA4ZjMwN2VkNWI3Nzk4
ZjZiODcyM2RlYWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGxvY2Fs
SHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxIcmVmOyB9CiAgICAgU3R5bGVTaGVldCogc2hl
ZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDU1NTdHls
ZVNoZWV0KFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4pOwogCiAgICAgYm9vbCBpc0NTUygpIGNv
bnN0IHsgcmV0dXJuIG1faXNDU1M7IH0KICNpZiBFTkFCTEUoWFNMVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAppbmRleCAxOTA3MTAyNzNmNjRiNDk4NGVjZjM0NTY2YmVh
MzJlMmI2N2Y3OTJlLi4yOGU4OGMzYzY2YWQ5MjlhZjViNGFkZDBiMjI0YjRhZjZkYzJkZWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2VCb3VuZGFyeVBvaW50IHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBSYW5nZUJvdW5kYXJ5UG9pbnQoUGFzc1JlZlB0cjxOb2RlPiBjb250
YWluZXIpOworICAgIGV4cGxpY2l0IFJhbmdlQm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIp
OwogCiAgICAgZXhwbGljaXQgUmFuZ2VCb3VuZGFyeVBvaW50KGNvbnN0IFJhbmdlQm91bmRhcnlQ
b2ludCYpOwogCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1f
Y2hpbGRCZWZvcmVCb3VuZGFyeTsKIH07CiAKLWlubGluZSBSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJh
bmdlQm91bmRhcnlQb2ludChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lcikKK2lubGluZSBSYW5n
ZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIpCiAgICAg
OiBtX2NvbnRhaW5lck5vZGUoY29udGFpbmVyKQogewogICAgIEFTU0VSVChtX2NvbnRhaW5lck5v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCA4MjlhOGM1NTM2MWI0MDY4ODY1YmE0
ZjA1NjdhMTk4ODNjZGRjOTEyLi4zMjI3MjM3MzYxMDhjMzc5MTMwMjY0MWUwNjgyYWYzNTU4YWI2
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtNDcsOSArNDcsOSBAQCBSZWY8VGV4
dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKEFic3RyYWN0Vmlldyog
dmlldywgY29uc3QgU3RyaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3
LCBkYXRhLCAwLCBzaG91bGRTbWFydFJlcGxhY2UsIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nOjpSZXNwZWN0QmxvY2txdW90ZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6
OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoQWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3Vs
ZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZykKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0
cmFjdFZpZXcqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hv
dWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0RXZlbnQodmlldywgIiIsIGRhdGEsIHNob3VsZFNtYXJ0UmVwbGFjZSwgc2hvdWxkTWF0
Y2hTdHlsZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCAiIiwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNl
LCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKIFJlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChBYnN0cmFjdFZpZXcqIHZpZXcsIGNv
bnN0IFN0cmluZyYgZGF0YSkKQEAgLTgwLDExICs4MCwxMSBAQCBUZXh0RXZlbnQ6OlRleHRFdmVu
dChBYnN0cmFjdFZpZXcqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRU
eXBlCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KEFic3RyYWN0VmlldyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFn
bWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFp
bEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorVGV4dEV2ZW50OjpU
ZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxh
Y2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxv
Y2txdW90ZUhhbmRsaW5nKQogICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZl
bnQsIHRydWUsIHRydWUsIHZpZXcsIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1
dFBhc3RlKQogICAgICwgbV9kYXRhKGRhdGEpCi0gICAgLCBtX3Bhc3RpbmdGcmFnbWVudChwYXN0
aW5nRnJhZ21lbnQpCisgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdGcmFn
bWVudCkpCiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShzaG91bGRTbWFydFJlcGxhY2UpCiAg
ICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUoc2hvdWxkTWF0Y2hTdHlsZSkKICAgICAsIG1fbWFpbEJs
b2NrcXVvdGVIYW5kbGluZyhtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVu
dC5oCmluZGV4IDFhMmFmNThlNTQwMWI4ZTBlZTBkMjc2OWI2Yjc5YjI0MmNjZGYxMTguLmFjNTZh
MzIxMWQ0MDhlMjhhNjA2MjY5ZjAxOWU0NTZlNmQ4OTNhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlKCk7CiAgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBj
cmVhdGUoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZl
bnQ+IGNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYg
ZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpOwotICAgICAgICBzdGF0aWMgUmVmPFRleHRF
dmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3Vs
ZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBzdGF0aWMgUmVm
PFRleHRFdmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICAgICAgc3RhdGlj
IFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5n
JiBkYXRhKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRpY3RhdGlv
bihBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKQEAgLTcyLDcgKzcyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUZXh0RXZlbnQoKTsKIAogICAgICAgICBU
ZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1
dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKLSAgICAgICAgVGV4dEV2ZW50KEFic3Ry
YWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJs
b2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBib29sIHNob3VsZFNt
YXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
KTsKICAgICAgICAgVGV4dEV2ZW50KEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RXZlbnQoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzM2ExMDIyZTU0ODM5NGZjNDRmZWNhOWQ3
MGUyNDMxZjI3N2Q3NGQyLi45NWFmMzJlNDc0ZDFmYWExMDA0YzdiN2M0NGZkY2Y2NGUwMjZlMWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00NjQsMTIgKzQ2NCwxMiBAQCB2b2lk
IEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29s
IHNtYXJ0UmVwbGFjZSkKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVh
dGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwg
c21hcnRSZXBsYWNlKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnRSZXBsYWNl
LCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgcmVzcGVjdHNNYWlsQmxv
Y2txdW90ZSkKK3ZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0
eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCiB7CiAg
ICAgTm9kZSogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlm
ICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBw
YXN0aW5nRnJhZ21lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxv
Y2txdW90ZSkpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZv
ckZyYWdtZW50UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgV1RGTW92ZShwYXN0aW5nRnJh
Z21lbnQpLCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUp
KTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBjOWQxNTZlNjE2MmMyN2RmODZlZjI3YWVlZmZiNzk0
YjM3MDVhNTRlLi4wOGUxOTQzNWYxZGI1ZTU2MjQ2OTE5NzJmMGE4Nzk1MDJiNWNlZDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM0Niw3ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24pOwogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbEFzSWdub3Jl
ZCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RC
bG9ja3F1b3RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNGcmFnbWVudChSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHls
ZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3Bl
Y3RCbG9ja3F1b3RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiwgYm9vbCBzbWFydFJlcGxhY2UpOwogCiAgICAgLy8gVGhpcyBpcyBvbmx5
IGNhbGxlZCBvbiB0aGUgbWFjIHdoZXJlIHBhc3RlIGlzIGltcGxlbWVudGVkIHByaW1hcmlseSBh
dCB0aGUgV2ViS2l0IGxldmVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9n
dGsvRWRpdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5j
cHAKaW5kZXggODNjNDllOGI5NWFlZTg0NzQ2NTM2MTg1YTliOTUxMWJlNGZiNjk2OC4uNDg0ZjJk
MTg2ZDNhMjRhOWEzZTdmYWY4MDgwOWFkMDA0ZDliNTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9FZGl0b3JHdGsuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0
ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRl
eHQsIE1hCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSgqcGFzdGVi
b2FyZCwgbV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOwog
ICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2Us
IEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFn
bWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBjaG9zZVBs
YWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgIHBhc3RlQXNGcmFnbWVu
dChXVEZNb3ZlKGZyYWdtZW50KSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3Rl
Ym9hcmQpLCBjaG9zZVBsYWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiB9CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRVUkwoRWxlbWVudCYgZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCAxMmExMzcxNGNmY2ExOTJi
NGQ1MDhiMTdlNzRmOGJjOTY1MmY2Yjk3Li5mYzQxNzUyNjI5ZjlmMWFlNzQwYjk5ZWI1YTdjZGNm
Y2UzMDliZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC01
NDYsNyArNTQ2LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2Fy
ZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgTWEKICAgICB9CiAKICAgICBpZiAo
ZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJ
bnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVu
dCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoTlNBdHRyaWJ1dGVkU3RyaW5n
ICpzdHJpbmcpCkBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWQKICAg
ICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGF0dHJpYnV0ZWRTdHJpbmcpOwogICAgICAgICBp
ZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHNlbGVjdGVkUmFu
Z2UoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAgICAgIHBhc3RlQXNGcmFn
bWVudChmcmFnbWVudCwgZmFsc2UsIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAg
ICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChXVEZNb3ZlKGZyYWdtZW50KSwgZmFsc2UsIGZhbHNl
LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcg
dGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgIGlmIChzaG91bGRJbnNl
cnRUZXh0KHRleHQsIHNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YjNjNjQy
OTEyZDkzZjZmMThmOGRjNDYyZTdkNzM0ZDFmZGYxODg2Li5kYWY3Mjk0YzZjZTA3MGI3ZWU1ZjY1
OTc3NjJlZTUxYzEyNDQ4MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3Rl
Ym9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBpZiAo
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJv
YXJkKHBhc3RlYm9hcmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAg
IG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKICAg
ICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5z
ZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5y
ZWxlYXNlKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxz
ZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7CisgICAgICAgICAg
ICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVudCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQ
YXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdu
b3JlQmxvY2txdW90ZSk7CiAgICAgfQogCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3Rl
Ym9hcmQoU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy93aW4v
RWRpdG9yV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAK
aW5kZXggYThhZDY3Y2FhODk2MjUwNGJiNzkzNmYxOTQwNzZjYWMzOTgyNTMzMy4uZTc0MDYyYWZj
OGQ0ODA4ODFmNTA2MzJlMmE3Y2RmN2FhMjFiYjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy93aW4vRWRpdG9yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L3dpbi9FZGl0b3JXaW4uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQs
IE1hCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KG1fZnJhbWUsICpyYW5n
ZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKICAgICBpZiAoZnJhZ21lbnQgJiYg
c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25Q
YXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFj
ZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVudCks
IGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRl
eHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGxh
dGZvcm1EcmFnRGF0YT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269879</attachid>
            <date>2016-01-26 05:59:12 -0800</date>
            <delta_ts>2016-01-29 23:42:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153470-20160126225845.patch</filename>
            <type>text/plain</type>
            <size>27279</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjNmNhYTkyM2IyOWQy
Y2FjMmYxMGJiOTlkMGQ5ODBkODFmNWUzYy4uZDM1ZjY1ZTFiZmM2OWYyYmVmNzhjYjMwZTMzZDMx
NDNmNmYxNTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAxLTI2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciB1c2VzIGluIGRvbSAtIDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFzIGEgc3RlcCB0byByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRj
aCByZWR1Y2VzIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2RvbS4gCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkb3B0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKToKKyAgICAgICAgKiBkb20vRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudCk6Cisg
ICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vR2VuZXJpY0V2
ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2
YXRlRXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaDoKKyAgICAgICAgKiBkb20v
UGVuZGluZ1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldCk6
IERlbGV0ZWQuIE5vYm9keSBjYWxscyB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2lu
dCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2
ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFn
bWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQpOgorCiAyMDE2LTAxLTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgV2ViQ29yZUpTQnVpbHRpbnMgZG8gbm90IHVzZSB0
byBkbyBjb25kaXRpb25hbCBpbmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwZTdj
NjFmZmY2M2ZlZTAwODkxZGZlZTZlOWU0ODkzMGUyNDFmYjBhLi5jMjRkMmY2NWUzMTEzODQwZWEw
NTdiMTJjZGU4YTI0YWRlZjQ5OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwMDUs
NyArMTAwNSw3IEBAIFJlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBv
cnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYKIH0KIAogCi1SZWZQdHI8Tm9kZT4g
RG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShSZWZQdHI8Tm9kZT4mJiBz
b3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghc291cmNlKSB7CiAgICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC0yNzMxLDggKzI3MzEsOCBAQCB2b2lkIERvY3Vt
ZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBkaXNwYXRjaFdpbmRvd0xvYWRFdmVudCgpOwogICAg
IGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnROb3RQZXJzaXN0ZWQpOwogICAgIGlm
IChtX3BlbmRpbmdTdGF0ZU9iamVjdCkKLSAgICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobV9w
ZW5kaW5nU3RhdGVPYmplY3QucmVsZWFzZSgpKTsKLSAgICAKKyAgICAgICAgZW5xdWV1ZVBvcHN0
YXRlRXZlbnQoV1RGTW92ZShtX3BlbmRpbmdTdGF0ZU9iamVjdCkpOworCiAgICAgaWYgKGYpCiAg
ICAgICAgIGYtPmxvYWRlcigpLmRpc3BhdGNoT25sb2FkRXZlbnRzKCk7CiAjaWZkZWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwpAQCAtNTU0OCw5ICs1NTQ4LDkgQEAgdm9pZCBEb2N1bWVu
dDo6ZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3QgU3Ry
aW5nJiBuZXdVUkwKICAgICBlbnF1ZXVlV2luZG93RXZlbnQoSGFzaENoYW5nZUV2ZW50OjpjcmVh
dGUob2xkVVJMLCBuZXdVUkwpKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRl
RXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQordm9p
ZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBzdGF0ZU9iamVjdCkKIHsKLSAgICBlbnF1ZXVlV2luZG93RXZlbnQoUG9wU3RhdGVF
dmVudDo6Y3JlYXRlKHN0YXRlT2JqZWN0LCBtX2RvbVdpbmRvdyA/IG1fZG9tV2luZG93LT5oaXN0
b3J5KCkgOiBudWxscHRyKSk7CisgICAgZW5xdWV1ZVdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6
OmNyZWF0ZShXVEZNb3ZlKHN0YXRlT2JqZWN0KSwgbV9kb21XaW5kb3cgPyBtX2RvbVdpbmRvdy0+
aGlzdG9yeSgpIDogbnVsbHB0cikpOwogfQogCiB2b2lkIERvY3VtZW50OjphZGRNZWRpYUNhblN0
YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKiBsaXN0ZW5lcikKQEAgLTY4MjgsNyAr
NjgyOCw3IEBAIGJvb2wgRG9jdW1lbnQ6Omhhc0ZvY3VzKCkgY29uc3QKICNpZiBFTkFCTEUoV0VC
X1JFUExBWSkKIHZvaWQgRG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKFBhc3NSZWZQdHI8SW5wdXRD
dXJzb3I+IGN1cnNvcikKIHsKLSAgICBtX2lucHV0Q3Vyc29yID0gY3Vyc29yOworICAgIG1faW5w
dXRDdXJzb3IgPSBXVEZNb3ZlKGN1cnNvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCBhZDZhZDliYzQ0NjI1NjZmZDQyYTZjOTU5MjExZjIxZDZjMTg3NmQ3Li42Y2Q3NzMy
ODc3ZDFlMmM2Zjg2ZmFkOTdlMWNkY2QzNDRlZTkyNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICBET01TZWN1cml0eVBvbGljeSYgc2VjdXJp
dHlQb2xpY3koKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxOb2RlPiBhZG9w
dE5vZGUoUmVmUHRyPE5vZGU+JiYgc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWY8
SFRNTENvbGxlY3Rpb24+IGltYWdlcygpOwogICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRz
KCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlT3ZlcmZs
b3dFdmVudChSZWY8RXZlbnQ+JiYpOwogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFn
ZXNob3dFdmVudFBlcnNpc3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKLSAgICB2b2lkIGVu
cXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0
ZU9iamVjdCk7CisgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIHN0YXRlT2JqZWN0KTsKICAgICB2aXJ0dWFsIERvY3VtZW50RXZlbnRR
dWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fZXZlbnRR
dWV1ZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
LmNwcAppbmRleCAwNWYwODBkNjgxMWM3ZmZhMmUzNzQ1ZmUzZjY4ZThhM2U0NTU0ZjA2Li40ZWQ3
ODdlYzBiZjcyZTMxNDEwNDNmZmRkMDlmZTcwZDhiZGFmMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIERvY3VtZW50TWFya2Vy
RGVzY3JpcHRpb24qIHRvRG9jdW1lbnRNYXJrZXJEZXNjcmlwdGlvbihEb2N1bWVudE1hcmtlckRl
dGEKIAogY2xhc3MgRG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2ggOiBwdWJsaWMgRG9jdW1lbnRNYXJr
ZXJEZXRhaWxzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtl
clRleHRNYXRjaD4gaW5zdGFuY2VGb3IoYm9vbCk7CisgICAgc3RhdGljIFJlZjxEb2N1bWVudE1h
cmtlclRleHRNYXRjaD4gaW5zdGFuY2VGb3IoYm9vbCk7CiAKICAgICBib29sIGFjdGl2ZU1hdGNo
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRjaDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRNYXRj
aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTgyLDExICs4Miw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX21hdGNoOwogfTsKIAotUGFzc1JlZlB0cjxEb2N1bWVudE1hcmtl
clRleHRNYXRjaD4gRG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKGJvb2wgbWF0
Y2gpCitSZWY8RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g+IERvY3VtZW50TWFya2VyVGV4dE1hdGNo
OjppbnN0YW5jZUZvcihib29sIG1hdGNoKQogewotICAgIHN0YXRpYyBEb2N1bWVudE1hcmtlclRl
eHRNYXRjaCogdHJ1ZUluc3RhbmNlID0gYWRvcHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1h
dGNoKHRydWUpKS5sZWFrUmVmKCk7Ci0gICAgc3RhdGljIERvY3VtZW50TWFya2VyVGV4dE1hdGNo
KiBmYWxzZUluc3RhbmNlID0gYWRvcHRSZWYobmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNoKGZh
bHNlKSkubGVha1JlZigpOwotICAgIHJldHVybiBtYXRjaCA/IHRydWVJbnN0YW5jZSA6IGZhbHNl
SW5zdGFuY2U7CisgICAgcmV0dXJuIG1hdGNoID8gYWRvcHRSZWYoKm5ldyBEb2N1bWVudE1hcmtl
clRleHRNYXRjaCh0cnVlKSkgOiBhZG9wdFJlZigqbmV3IERvY3VtZW50TWFya2VyVGV4dE1hdGNo
KGZhbHNlKSk7CiB9CiAKIGlubGluZSBEb2N1bWVudE1hcmtlclRleHRNYXRjaCogdG9Eb2N1bWVu
dE1hcmtlclRleHRNYXRjaChEb2N1bWVudE1hcmtlckRldGFpbHMqIGRldGFpbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmNwcAppbmRleCAxNDliMDRlYjkyZDY2YmRlNDcxN2ZmNTM1NTk5OTk1OGU5NTY1YmFlLi4x
N2Q2MWI1OWNmNmViYjY2YmQzNjc3MTJmMTI3NWJiNjI0NGUwYmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5j
cHAKQEAgLTE3NiwxMiArMTc2LDEzIEBAIHZvaWQgRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKIHsK
IH0KIAotdm9pZCBFdmVudDo6c2V0VW5kZXJseWluZ0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHVl
KQordm9pZCBFdmVudDo6c2V0VW5kZXJseWluZ0V2ZW50KEV2ZW50KiB1ZSkKIHsKICAgICAvLyBQ
cm9oaWJpdCBjcmVhdGlvbiBvZiBhIGN5Y2xlIC0tIGp1c3QgZG8gbm90aGluZyBpbiB0aGF0IGNh
c2UuCi0gICAgZm9yIChFdmVudCogZSA9IHVlLmdldCgpOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2
ZW50KCkpCisgICAgZm9yIChFdmVudCogZSA9IHVlOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50
KCkpIHsKICAgICAgICAgaWYgKGUgPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgbV91bmRlcmx5aW5nRXZlbnQgPSB1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCBhMTM5
ODcxZWU0ZDQxNzVhZTk2YzdmMjg5YmJjMDk5MTcwOWEyYTAxLi5hNTNhODhmYjZkNDllZTRlNjNl
ZTI4OGZiZjAzMDg4OTczM2RkNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTczLDcgKzE3Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENhbmNlbEJ1YmJsZShib29sIGNhbmNlbCkgeyBtX2NhbmNl
bEJ1YmJsZSA9IGNhbmNlbDsgfQogCiAgICAgRXZlbnQqIHVuZGVybHlpbmdFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5kZXJseWluZ0V2ZW50LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRVbmRlcmx5
aW5nRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZvaWQgc2V0VW5kZXJseWluZ0V2ZW50
KEV2ZW50Kik7CiAKICAgICB2aXJ0dWFsIERhdGFUcmFuc2ZlciogaW50ZXJuYWxEYXRhVHJhbnNm
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
aAppbmRleCBmMTg5ZDdhNGRmMmI4NWQyN2FmNzQ1Y2ZhZTNhYWU0NjgwZGE5MzUyLi5iYTQzZWVk
YmU0OTI1NDVjNjNiNTBlNDRmYjZiOWFmNjcxNTI3ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlj
a09wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5l
cmljRXZlbnRRdWV1ZS5jcHAKaW5kZXggZGJhODUyNzBkYjQ3OTRmNmZhYjIzYTI2YjM5ZjFjYjU5
NGIxZGQyZS4uY2QyMDFhMzY5ZmQ2ZDRjM2NhZTNkMWNjMmM5N2I0MmYwYzFmMzQ3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdl
bmVyaWNFdmVudFF1ZXVlOjp+R2VuZXJpY0V2ZW50UXVldWUoKQogewogfQogCi12b2lkIEdlbmVy
aWNFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit2b2lk
IEdlbmVyaWNFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiYmIGV2ZW50KQog
ewogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgR2VuZXJpY0V2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKICAgICBpZiAoZXZlbnQtPnRhcmdldCgpID09ICZtX293bmVyKQogICAgICAgICBldmVu
dC0+c2V0VGFyZ2V0KG51bGxwdHIpOwogCi0gICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChldmVu
dCk7CisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICBp
ZiAobV9pc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJp
Y0V2ZW50UXVldWUuaAppbmRleCAyYjVlNDhhNzIwZTg4MDJkNjlkZTZhMmNmNjQ4NjNhMWZkYmY5
NDBmLi5kM2EwMzhhNGI1ZjdiMGY3NDkxMGU3OWY5NDZhZmFiOWI4YjBlODdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgR2VuZXJpY0V2ZW50UXVldWUoRXZlbnRUYXJnZXQmKTsKICAgICB+R2VuZXJp
Y0V2ZW50UXVldWUoKTsKIAotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
KTsKKyAgICB2b2lkIGVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYpOwogICAgIHZvaWQgY2xv
c2UoKTsKIAogICAgIHZvaWQgY2FuY2VsQWxsRXZlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5jcHAKaW5kZXggOTUwYTRiMzVmOWM0Y2EyYjlhZDJjMDljZDg0OWJlYzE0YmMxOTgzNy4uNmU0
NTYxM2EzMzdjZGY5ZjQxOWMzYTFkMDU5N2NiZmRhMDJmZmUyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVs
YXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0CiAg
ICAgICAgIG1fc2hpZnRLZXkgPSBrZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpOwogICAgICAgICBt
X21ldGFLZXkgPSBrZXlTdGF0ZUV2ZW50LT5tZXRhS2V5KCk7CiAgICAgfQotICAgIHNldFVuZGVy
bHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOworICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRl
cmx5aW5nRXZlbnQuZ2V0KCkpOwogCiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KHRoaXMtPnVuZGVy
bHlpbmdFdmVudCgpKSkgewogICAgICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNh
c3Q8TW91c2VFdmVudD4oKnRoaXMtPnVuZGVybHlpbmdFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA0YWI1MmZiYmI5YzE3N2NkOGRlNmYxOTA2ZTlhYzQ4ODA3MzAxZWFjLi5mZTYxOTgxMTg2
OWViNThmYWU5MzJkMTY1YmUzNDg0YzRkZGQ0MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMTI4
LDcgKzIxMjgsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0
YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbgogewogICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnRE
aXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBSZWY8VUlFdmVudD4gZXZlbnQgPSBVSUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSwgZGV0YWlsKTsKLSAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50
KHVuZGVybHlpbmdFdmVudCk7CisgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5
aW5nRXZlbnQuZ2V0KCkpOwogICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoZXZlbnQpOwogICAgIHJl
dHVybiBldmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
aAppbmRleCA4YmZkZjZiZjBiYWQzMTJhMmM1NDAyNWUwZTk0YjNiZjAyNTY1MjU5Li5mODVkNzU3
N2MxYmU5ZDNjMjgzNzZlMTE2YTQzOGVkYmEzNjJlYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRyYXZlcnNhbC5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmgKaW5kZXggMDIzNmZlOTdl
MDkyMTJlYjY5YjQyNjg2NWRkMjY3YmEyNjE5ZmNkNC4uMDRkMWIyM2RiMmU0YTc3MGYxN2FlMTI5
MDg5MjU1MTA0ZTg5OGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdT
Y3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5oCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9w
U3RhdGVFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKaW5k
ZXggMWJkNWJlOGRkYTEwMWE1ZGYwYzlmYzFhYzM2OGQ5ODU2MGYwMjMxYi4uN2JkY2ZjZGQxYWJj
YjY5Y2JlYmE1MzU4OTk2OWU3NzYzMTJkN2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2
ZW50LmNwcApAQCAtNjQsOSArNjQsOSBAQCBSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVu
dDo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb3BTdGF0ZUV2ZW50KTsKIH0K
IAotUmVmPFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+
IGhpc3RvcnkpCitSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhp
c3Rvcnk+IGhpc3RvcnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9wU3RhdGVFdmVu
dChzZXJpYWxpemVkU3RhdGUsIGhpc3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
b3BTdGF0ZUV2ZW50KFdURk1vdmUoc2VyaWFsaXplZFN0YXRlKSwgaGlzdG9yeSkpOwogfQogCiBS
ZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmIGluaXRpYWxpemVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggYzYzYjM0YTkwMjE0YWFmNGNiODUwZGZhZTUzMTZlMWRh
ZmVjY2VlZi4uNmQ0NzQxODllNDg1YWE5NDgxMWNlOTFjNzNjMjk4NGE0MGNmY2U0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFBvcFN0YXRl
RXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBvcFN0
YXRlRXZlbnQoKTsKICAgICBzdGF0aWMgUmVmPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZSgpOwotICAg
IHN0YXRpYyBSZWY8UG9wU3RhdGVFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxIaXN0b3J5Pik7CisgICAgc3RhdGljIFJlZjxQb3BTdGF0
ZUV2ZW50PiBjcmVhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgUGFzc1JlZlB0
cjxIaXN0b3J5Pik7CiAgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsKIAogICAgIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUoKSBjb25zdCB7IEFTU0VS
VChtX3NlcmlhbGl6ZWRTdGF0ZSk7IHJldHVybiBtX3NlcmlhbGl6ZWRTdGF0ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBkMzEwYzgwNzUx
YjZiYjUwZTU4ZGEzNzYzNjMyY2MzMTIxMDRlZmU2Li4yODAzMzE1OWZhY2FmY2NkM2ZiOThmNWI5
ZjllNGUyYTMxMDUxODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcApAQCAtMjM2LDE1ICsyMzYsNiBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpCiAjZW5kaWYKIH0KIAotdm9p
ZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NT
dHlsZVNoZWV0PiBzaGVldCkKLXsKLSAgICBBU1NFUlQoIW1fY2FjaGVkU2hlZXQpOwotICAgIEFT
U0VSVCghbV9sb2FkaW5nKTsKLSAgICBtX3NoZWV0ID0gc2hlZXQ7Ci0gICAgc2hlZXQtPnNldFRp
dGxlKG1fdGl0bGUpOwotICAgIHNoZWV0LT5zZXREaXNhYmxlZChtX2FsdGVybmF0ZSk7Ci19Ci0K
IHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBpZiAoIXNoZWV0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggZDQyOWE4NzJkNWVi
YzYxYWJiMDRlMmNiYjI5M2RiZDZlMTNmNzZiZC4uYzNjNWE5ZGQ4ODNkMzA4ZjMwN2VkNWI3Nzk4
ZjZiODcyM2RlYWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGxvY2Fs
SHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxIcmVmOyB9CiAgICAgU3R5bGVTaGVldCogc2hl
ZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDU1NTdHls
ZVNoZWV0KFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4pOwogCiAgICAgYm9vbCBpc0NTUygpIGNv
bnN0IHsgcmV0dXJuIG1faXNDU1M7IH0KICNpZiBFTkFCTEUoWFNMVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAppbmRleCAxOTA3MTAyNzNmNjRiNDk4NGVjZjM0NTY2YmVh
MzJlMmI2N2Y3OTJlLi4yOGU4OGMzYzY2YWQ5MjlhZjViNGFkZDBiMjI0YjRhZjZkYzJkZWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2VCb3VuZGFyeVBvaW50IHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBSYW5nZUJvdW5kYXJ5UG9pbnQoUGFzc1JlZlB0cjxOb2RlPiBjb250
YWluZXIpOworICAgIGV4cGxpY2l0IFJhbmdlQm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIp
OwogCiAgICAgZXhwbGljaXQgUmFuZ2VCb3VuZGFyeVBvaW50KGNvbnN0IFJhbmdlQm91bmRhcnlQ
b2ludCYpOwogCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1f
Y2hpbGRCZWZvcmVCb3VuZGFyeTsKIH07CiAKLWlubGluZSBSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJh
bmdlQm91bmRhcnlQb2ludChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lcikKK2lubGluZSBSYW5n
ZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIpCiAgICAg
OiBtX2NvbnRhaW5lck5vZGUoY29udGFpbmVyKQogewogICAgIEFTU0VSVChtX2NvbnRhaW5lck5v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCA4MjlhOGM1NTM2MWI0MDY4ODY1YmE0
ZjA1NjdhMTk4ODNjZGRjOTEyLi4zMjI3MjM3MzYxMDhjMzc5MTMwMjY0MWUwNjgyYWYzNTU4YWI2
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtNDcsOSArNDcsOSBAQCBSZWY8VGV4
dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKEFic3RyYWN0Vmlldyog
dmlldywgY29uc3QgU3RyaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3
LCBkYXRhLCAwLCBzaG91bGRTbWFydFJlcGxhY2UsIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nOjpSZXNwZWN0QmxvY2txdW90ZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6
OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoQWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3Vs
ZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZykKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0
cmFjdFZpZXcqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hv
dWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0RXZlbnQodmlldywgIiIsIGRhdGEsIHNob3VsZFNtYXJ0UmVwbGFjZSwgc2hvdWxkTWF0
Y2hTdHlsZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCAiIiwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNl
LCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKIFJlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChBYnN0cmFjdFZpZXcqIHZpZXcsIGNv
bnN0IFN0cmluZyYgZGF0YSkKQEAgLTgwLDExICs4MCwxMSBAQCBUZXh0RXZlbnQ6OlRleHRFdmVu
dChBYnN0cmFjdFZpZXcqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRU
eXBlCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KEFic3RyYWN0VmlldyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFn
bWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFp
bEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorVGV4dEV2ZW50OjpU
ZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxh
Y2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxv
Y2txdW90ZUhhbmRsaW5nKQogICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZl
bnQsIHRydWUsIHRydWUsIHZpZXcsIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1
dFBhc3RlKQogICAgICwgbV9kYXRhKGRhdGEpCi0gICAgLCBtX3Bhc3RpbmdGcmFnbWVudChwYXN0
aW5nRnJhZ21lbnQpCisgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdGcmFn
bWVudCkpCiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShzaG91bGRTbWFydFJlcGxhY2UpCiAg
ICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUoc2hvdWxkTWF0Y2hTdHlsZSkKICAgICAsIG1fbWFpbEJs
b2NrcXVvdGVIYW5kbGluZyhtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVu
dC5oCmluZGV4IDFhMmFmNThlNTQwMWI4ZTBlZTBkMjc2OWI2Yjc5YjI0MmNjZGYxMTguLmFjNTZh
MzIxMWQ0MDhlMjhhNjA2MjY5ZjAxOWU0NTZlNmQ4OTNhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlKCk7CiAgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBj
cmVhdGUoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZl
bnQ+IGNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYg
ZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpOwotICAgICAgICBzdGF0aWMgUmVmPFRleHRF
dmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3Vs
ZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBzdGF0aWMgUmVm
PFRleHRFdmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqLCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICAgICAgc3RhdGlj
IFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5n
JiBkYXRhKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRpY3RhdGlv
bihBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKQEAgLTcyLDcgKzcyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUZXh0RXZlbnQoKTsKIAogICAgICAgICBU
ZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1
dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKLSAgICAgICAgVGV4dEV2ZW50KEFic3Ry
YWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJs
b2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBib29sIHNob3VsZFNt
YXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
KTsKICAgICAgICAgVGV4dEV2ZW50KEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RXZlbnQoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzM2ExMDIyZTU0ODM5NGZjNDRmZWNhOWQ3
MGUyNDMxZjI3N2Q3NGQyLi45NWFmMzJlNDc0ZDFmYWExMDA0YzdiN2M0NGZkY2Y2NGUwMjZlMWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00NjQsMTIgKzQ2NCwxMiBAQCB2b2lk
IEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29s
IHNtYXJ0UmVwbGFjZSkKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVh
dGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwg
c21hcnRSZXBsYWNlKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnRSZXBsYWNl
LCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgcmVzcGVjdHNNYWlsQmxv
Y2txdW90ZSkKK3ZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0
eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCiB7CiAg
ICAgTm9kZSogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlm
ICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBw
YXN0aW5nRnJhZ21lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxv
Y2txdW90ZSkpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZv
ckZyYWdtZW50UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgV1RGTW92ZShwYXN0aW5nRnJh
Z21lbnQpLCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUp
KTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBjOWQxNTZlNjE2MmMyN2RmODZlZjI3YWVlZmZiNzk0
YjM3MDVhNTRlLi4wOGUxOTQzNWYxZGI1ZTU2MjQ2OTE5NzJmMGE4Nzk1MDJiNWNlZDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM0Niw3ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24pOwogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbEFzSWdub3Jl
ZCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RC
bG9ja3F1b3RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNGcmFnbWVudChSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHls
ZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3Bl
Y3RCbG9ja3F1b3RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiwgYm9vbCBzbWFydFJlcGxhY2UpOwogCiAgICAgLy8gVGhpcyBpcyBvbmx5
IGNhbGxlZCBvbiB0aGUgbWFjIHdoZXJlIHBhc3RlIGlzIGltcGxlbWVudGVkIHByaW1hcmlseSBh
dCB0aGUgV2ViS2l0IGxldmVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9n
dGsvRWRpdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5j
cHAKaW5kZXggODNjNDllOGI5NWFlZTg0NzQ2NTM2MTg1YTliOTUxMWJlNGZiNjk2OC4uNDg0ZjJk
MTg2ZDNhMjRhOWEzZTdmYWY4MDgwOWFkMDA0ZDliNTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9FZGl0b3JHdGsuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0
ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRl
eHQsIE1hCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSgqcGFzdGVi
b2FyZCwgbV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOwog
ICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2Us
IEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFn
bWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBjaG9zZVBs
YWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgIHBhc3RlQXNGcmFnbWVu
dChXVEZNb3ZlKGZyYWdtZW50KSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3Rl
Ym9hcmQpLCBjaG9zZVBsYWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiB9CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRVUkwoRWxlbWVudCYgZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCAxMmExMzcxNGNmY2ExOTJi
NGQ1MDhiMTdlNzRmOGJjOTY1MmY2Yjk3Li5mYzQxNzUyNjI5ZjlmMWFlNzQwYjk5ZWI1YTdjZGNm
Y2UzMDliZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC01
NDYsNyArNTQ2LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2Fy
ZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgTWEKICAgICB9CiAKICAgICBpZiAo
ZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJ
bnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVu
dCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoTlNBdHRyaWJ1dGVkU3RyaW5n
ICpzdHJpbmcpCkBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWQKICAg
ICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGF0dHJpYnV0ZWRTdHJpbmcpOwogICAgICAgICBp
ZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHNlbGVjdGVkUmFu
Z2UoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAgICAgIHBhc3RlQXNGcmFn
bWVudChmcmFnbWVudCwgZmFsc2UsIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAg
ICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChXVEZNb3ZlKGZyYWdtZW50KSwgZmFsc2UsIGZhbHNl
LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcg
dGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgIGlmIChzaG91bGRJbnNl
cnRUZXh0KHRleHQsIHNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YjNjNjQy
OTEyZDkzZjZmMThmOGRjNDYyZTdkNzM0ZDFmZGYxODg2Li5kN2ZlM2Q5Y2E5ZjFhYzUwMmU2ODBl
NWFkNDhkMTExYjcwZmE3NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBh
c3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQsIE1hCiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKCpw
YXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCk7CiAKICAg
ICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBF
ZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21l
bnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShm
cmFnbWVudCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFs
c2UsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogCiAgICAgY2xpZW50KCktPnNldEluc2VydGlv
blBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQpAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRWRpdG9y
OjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCiAgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCAqcmFuZ2UsIHRydWUsIGNob3Nl
UGxhaW5UZXh0KSkgewogICAgICAgICBtYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQo
Km5vZGUsICpmcmFnbWVudCk7CiAgICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudChmcmFn
bWVudCwgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCi0gICAgICAgICAgICBwYXN0
ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZSgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVi
b2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJs
b2NrcXVvdGUpOworICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KFdURk1vdmUoZnJhZ21lbnQp
LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIAogICAgIGNsaWVu
dCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKQEAgLTY3Myw3ICs2NzMsNyBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZAogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
YXR0cmlidXRlZFN0cmluZyk7CiAgICAgICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRG
cmFnbWVudChmcmFnbWVudCwgc2VsZWN0ZWRSYW5nZSgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKQotICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBmYWxzZSwgZmFsc2Us
IG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KFdU
Rk1vdmUoZnJhZ21lbnQpLCBmYWxzZSwgZmFsc2UsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyB0ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3Ry
aW5nXTsKICAgICAgICAgaWYgKHNob3VsZEluc2VydFRleHQodGV4dCwgc2VsZWN0ZWRSYW5nZSgp
LmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy93aW4vRWRpdG9yV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
d2luL0VkaXRvcldpbi5jcHAKaW5kZXggYThhZDY3Y2FhODk2MjUwNGJiNzkzNmYxOTQwNzZjYWMz
OTgyNTMzMy4uZTc0MDYyYWZjOGQ0ODA4ODFmNTA2MzJlMmE3Y2RmN2FhMjFiYjlmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy93aW4vRWRpdG9yV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZv
aWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJv
b2wgYWxsb3dQbGFpblRleHQsIE1hCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdt
ZW50KG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKICAg
ICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBF
ZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21l
bnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFp
blRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQo
V1RGTW92ZShmcmFnbWVudCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJv
YXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUGxhdGZvcm1EcmFnRGF0YT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270303</attachid>
            <date>2016-01-29 23:43:00 -0800</date>
            <delta_ts>2016-01-30 20:30:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153470-20160130164234.patch</filename>
            <type>text/plain</type>
            <size>26788</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc1OGYyNWQ2N2ExNjZl
ZjQwZTgyZjNmNWY2ZjU1YWE5MjI4ZTg5YS4uNjAzNTcyMzc2MmZjOWI1YmI0YTI3NDNiZWM2NzQw
YTAzZjg4NjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAxLTI5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciB1c2VzIGluIGRvbSAtIDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFzIGEgc3RlcCB0byByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRj
aCByZWR1Y2VzIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2RvbS4gCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkb3B0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKToKKyAgICAgICAgKiBkb20vRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudCk6Cisg
ICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vR2VuZXJpY0V2
ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2
YXRlRXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaDoKKyAgICAgICAgKiBkb20v
UGVuZGluZ1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldCk6
IERlbGV0ZWQuIE5vYm9keSBjYWxscyB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2lu
dCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2
ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFn
bWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQpOgorCiAyMDE2LTAxLTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBUYWIgc3VzcGVuc2lvbiBjb2RlIHNob3VsZG4ndCB1c2UgcGFnZSBj
YWNoZSBjYWNoZWFiaWxpdHkgbG9naWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDA1ZTc3
NTJhNWNiOTlhYTAzZDRiODZkYWU1MGJjM2YyMTNjYzNmMzMuLmEwMDkzMmYwNmQzMTQ3MDY3NzMy
ODVhOWZmMDYzZWVhYzBkNGZjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTAwNSw3
ICsxMDA1LDcgQEAgUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9y
dGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25Db2RlJgogfQogCiAKLVJlZlB0cjxOb2RlPiBE
b2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUqIHNvdXJjZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAgZWMgPSBOT1Rf
U1VQUE9SVEVEX0VSUjsKQEAgLTEwNDQsNyArMTA0NCw3IEBAIFJlZlB0cjxOb2RlPiBEb2N1bWVu
dDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGFkb3B0SWZOZWVkZWQoc291cmNlLmdldCgpKTsKKyAg
ICBhZG9wdElmTmVlZGVkKHNvdXJjZSk7CiAKICAgICByZXR1cm4gc291cmNlOwogfQpAQCAtMjcz
MSw4ICsyNzMxLDggQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgZGlzcGF0
Y2hXaW5kb3dMb2FkRXZlbnQoKTsKICAgICBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2
ZW50Tm90UGVyc2lzdGVkKTsKICAgICBpZiAobV9wZW5kaW5nU3RhdGVPYmplY3QpCi0gICAgICAg
IGVucXVldWVQb3BzdGF0ZUV2ZW50KG1fcGVuZGluZ1N0YXRlT2JqZWN0LnJlbGVhc2UoKSk7Ci0g
ICAgCisgICAgICAgIGVucXVldWVQb3BzdGF0ZUV2ZW50KFdURk1vdmUobV9wZW5kaW5nU3RhdGVP
YmplY3QpKTsKKwogICAgIGlmIChmKQogICAgICAgICBmLT5sb2FkZXIoKS5kaXNwYXRjaE9ubG9h
ZEV2ZW50cygpOwogI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKQEAgLTU1NTAs
OSArNTU1MCw5IEBAIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMCiAgICAgZW5xdWV1ZVdpbmRvd0V2
ZW50KEhhc2hDaGFuZ2VFdmVudDo6Y3JlYXRlKG9sZFVSTCwgbmV3VVJMKSk7CiB9CiAKLXZvaWQg
RG9jdW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzdGF0ZU9iamVjdCkKK3ZvaWQgRG9jdW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50
KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc3RhdGVPYmplY3QpCiB7Ci0gICAgZW5x
dWV1ZVdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShzdGF0ZU9iamVjdCwgbV9kb21X
aW5kb3cgPyBtX2RvbVdpbmRvdy0+aGlzdG9yeSgpIDogbnVsbHB0cikpOworICAgIGVucXVldWVX
aW5kb3dFdmVudChQb3BTdGF0ZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShzdGF0ZU9iamVjdCksIG1f
ZG9tV2luZG93ID8gbV9kb21XaW5kb3ctPmhpc3RvcnkoKSA6IG51bGxwdHIpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudDo6YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciogbGlzdGVuZXIpCkBAIC02ODMwLDcgKzY4MzAsNyBAQCBib29sIERvY3VtZW50OjpoYXNGb2N1
cygpIGNvbnN0CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiB2b2lkIERvY3VtZW50OjpzZXRJbnB1
dEN1cnNvcihQYXNzUmVmUHRyPElucHV0Q3Vyc29yPiBjdXJzb3IpCiB7Ci0gICAgbV9pbnB1dEN1
cnNvciA9IGN1cnNvcjsKKyAgICBtX2lucHV0Q3Vyc29yID0gV1RGTW92ZShjdXJzb3IpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODk0M2RiNzVlYWM4MTlhNDE0N2ViMTE1
MTg3YjNmMzZhNWNmNDAxYi4uNGQ2ODcwMTEwODA5NzMxYjdkNTMxNjZmMmIzZWNlY2E5ZjAwZWRi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ2Niw3ICs0NjYsNyBAQCBwdWJsaWM6CiAgICAg
RE9NU2VjdXJpdHlQb2xpY3kmIHNlY3VyaXR5UG9saWN5KCk7CiAjZW5kaWYKIAotICAgIFJlZlB0
cjxOb2RlPiBhZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBSZWZQdHI8Tm9kZT4gYWRvcHROb2RlKE5vZGUqIHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBSZWY8SFRNTENv
bGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW5xdWV1ZU92ZXJmbG93RXZlbnQoUmVmPEV2ZW50PiYmKTsKICAgICB2b2lkIGVucXVldWVQ
YWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICAgdm9pZCBlbnF1ZXVl
SGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VS
TCk7Ci0gICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOworICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQo
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdCk7CiAgICAgdmlydHVh
bCBEb2N1bWVudEV2ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiBtX2V2ZW50UXVldWU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWVk
aWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlci5jcHAKaW5kZXggMDVmMDgwZDY4MTFjN2ZmYTJlMzc0NWZlM2Y2OGU4
YTNlNDU1NGYwNi4uYmY4ZDQ5ZTJmMzI3NDljZjM3NDU5NjU4NzJjMmFkN2JiMjRkMmEyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIERvY3Vt
ZW50TWFya2VyRGV0YWlsczo6fkRvY3VtZW50TWFya2VyRGV0YWlscygpCiB7CiB9CiAKLWNsYXNz
IERvY3VtZW50TWFya2VyRGVzY3JpcHRpb24gOiBwdWJsaWMgRG9jdW1lbnRNYXJrZXJEZXRhaWxz
IHsKK2NsYXNzIERvY3VtZW50TWFya2VyRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgRG9jdW1l
bnRNYXJrZXJEZXRhaWxzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERvY3VtZW50TWFya2Vy
RGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5k
ZXggMTQ5YjA0ZWI5MmQ2NmJkZTQ3MTdmZjUzNTU5OTk5NThlOTU2NWJhZS4uY2Q5MTZkOTk2MjVk
MWFiZDhjMDhkYzNjMzc3ZmU2MWVlZTgxZWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xNzYs
MTMgKzE3NiwxNCBAQCB2b2lkIEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCiB7CiB9CiAKLXZvaWQg
RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudChQYXNzUmVmUHRyPEV2ZW50PiB1ZSkKK3ZvaWQgRXZl
bnQ6OnNldFVuZGVybHlpbmdFdmVudChFdmVudCogdW5kZXJseWluZ0V2ZW50KQogewogICAgIC8v
IFByb2hpYml0IGNyZWF0aW9uIG9mIGEgY3ljbGUgLS0ganVzdCBkbyBub3RoaW5nIGluIHRoYXQg
Y2FzZS4KLSAgICBmb3IgKEV2ZW50KiBlID0gdWUuZ2V0KCk7IGU7IGUgPSBlLT51bmRlcmx5aW5n
RXZlbnQoKSkKLSAgICAgICAgaWYgKGUgPT0gdGhpcykKKyAgICBmb3IgKEV2ZW50KiBldmVudCA9
IHVuZGVybHlpbmdFdmVudDsgZXZlbnQ7IGV2ZW50ID0gZXZlbnQtPnVuZGVybHlpbmdFdmVudCgp
KSB7CisgICAgICAgIGlmIChldmVudCA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
IG1fdW5kZXJseWluZ0V2ZW50ID0gdWU7CisgICAgfQorICAgIG1fdW5kZXJseWluZ0V2ZW50ID0g
dW5kZXJseWluZ0V2ZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5o
CmluZGV4IGExMzk4NzFlZTRkNDE3NWFlOTZjN2YyODliYmMwOTkxNzA5YTJhMDEuLmE1M2E4OGZi
NmQ0OWVlNGU2M2VlMjg4ZmJmMDMwODg5NzMzZGQ0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xNzMs
NyArMTczLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuY2VsQnViYmxlKGJvb2wgY2FuY2Vs
KSB7IG1fY2FuY2VsQnViYmxlID0gY2FuY2VsOyB9CiAKICAgICBFdmVudCogdW5kZXJseWluZ0V2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nRXZlbnQuZ2V0KCk7IH0KLSAgICB2b2lk
IHNldFVuZGVybHlpbmdFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgdm9pZCBzZXRVbmRl
cmx5aW5nRXZlbnQoRXZlbnQqKTsKIAogICAgIHZpcnR1YWwgRGF0YVRyYW5zZmVyKiBpbnRlcm5h
bERhdGFUcmFuc2ZlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5oCmluZGV4IGYxODlkN2E0ZGYyYjg1ZDI3YWY3NDVjZmFlM2FhZTQ2ODBkYTkz
NTIuLmJhNDNlZWRiZTQ5MjU0NWM2M2I1MGU0NGZiNmI5YWY2NzE1MjdmZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlNp
bXVsYXRlZENsaWNrT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAppbmRleCBkYmE4NTI3MGRiNDc5NGY2ZmFiMjNh
MjZiMzlmMWNiNTk0YjFkZDJlLi5jZDIwMWEzNjlmZDZkNGMzY2FlM2QxY2MyYzk3YjQyZjBjMWYz
NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgR2VuZXJpY0V2ZW50UXVldWU6On5HZW5lcmljRXZlbnRRdWV1ZSgpCiB7CiB9CiAK
LXZvaWQgR2VuZXJpY0V2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+
JiYgZXZlbnQpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTUz
LDcgKzUzLDcgQEAgdm9pZCBHZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogICAgIGlmIChldmVudC0+dGFyZ2V0KCkgPT0gJm1fb3duZXIpCiAg
ICAgICAgIGV2ZW50LT5zZXRUYXJnZXQobnVsbHB0cik7CiAKLSAgICBtX3BlbmRpbmdFdmVudHMu
YXBwZW5kKGV2ZW50KTsKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQp
KTsKIAogICAgIGlmIChtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oCmluZGV4IDJiNWU0OGE3MjBlODgwMmQ2OWRlNmEyY2Y2
NDg2M2ExZmRiZjk0MGYuLmQzYTAzOGE0YjVmN2IwZjc0OTEwZTc5Zjk0NmFmYWI5YjhiMGU4N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBHZW5lcmljRXZlbnRRdWV1ZShFdmVudFRhcmdldCYpOwog
ICAgIH5HZW5lcmljRXZlbnRRdWV1ZSgpOwogCi0gICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pOworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4mJik7CiAg
ICAgdm9pZCBjbG9zZSgpOwogCiAgICAgdm9pZCBjYW5jZWxBbGxFdmVudHMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZUV2ZW50LmNwcAppbmRleCA5NTBhNGIzNWY5YzRjYTJiOWFkMmMwOWNkODQ5YmVjMTRi
YzE5ODM3Li42ZTQ1NjEzYTMzN2NkZjlmNDE5YzNhMWQwNTk3Y2JmZGEwMmZmZTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgU2ltdWxhdGVkTW91c2VF
dmVudDo6U2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
QWJzdHJhY3QKICAgICAgICAgbV9zaGlmdEtleSA9IGtleVN0YXRlRXZlbnQtPnNoaWZ0S2V5KCk7
CiAgICAgICAgIG1fbWV0YUtleSA9IGtleVN0YXRlRXZlbnQtPm1ldGFLZXkoKTsKICAgICB9Ci0g
ICAgc2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudCk7CisgICAgc2V0VW5kZXJseWlu
Z0V2ZW50KHVuZGVybHlpbmdFdmVudC5nZXQoKSk7CiAKICAgICBpZiAoaXM8TW91c2VFdmVudD4o
dGhpcy0+dW5kZXJseWluZ0V2ZW50KCkpKSB7CiAgICAgICAgIE1vdXNlRXZlbnQmIG1vdXNlRXZl
bnQgPSBkb3duY2FzdDxNb3VzZUV2ZW50PigqdGhpcy0+dW5kZXJseWluZ0V2ZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDRhYjUyZmJiYjljMTc3Y2Q4ZGU2ZjE5MDZlOWFjNDg4MDczMDFlYWMu
LmZlNjE5ODExODY5ZWI1OGZhZTkzMmQxNjViZTM0ODRjNGRkZDQyY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTIxMjgsNyArMjEyOCw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hET01BY3RpdmF0ZUV2
ZW50KGludCBkZXRhaWwsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVuCiB7CiAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIU5vRXZlbnREaXNwYXRjaEFzc2VydGlv
bjo6aXNFdmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIFJlZjxVSUV2ZW50PiBldmVudCA9
IFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCwgdHJ1ZSwgdHJ1
ZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBkZXRhaWwpOwotICAgIGV2ZW50LT5zZXRVbmRl
cmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKKyAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2
ZW50KHVuZGVybHlpbmdFdmVudC5nZXQoKSk7CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChldmVu
dCk7CiAgICAgcmV0dXJuIGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVJdGVyYXRvci5oCmluZGV4IDhiZmRmNmJmMGJhZDMxMmEyYzU0MDI1ZTBlOTRiM2JmMDI1NjUy
NTkuLmY4NWQ3NTc3YzFiZTlkM2MyODM3NmUxMTZhNDM4ZWRiYTM2MmVjOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZUl0ZXJhdG9yLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UGVuZGluZ1NjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuaAppbmRl
eCAwMjM2ZmU5N2UwOTIxMmViNjliNDI2ODY1ZGQyNjdiYTI2MTlmY2Q0Li4wNGQxYjIzZGIyZTRh
NzcwZjE3YWUxMjkwODkyNTUxMDRlODk4YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUGVuZGluZ1NjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0
LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFBvc2l0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2
ZW50LmNwcAppbmRleCAxYmQ1YmU4ZGRhMTAxYTVkZjBjOWZjMWFjMzY4ZDk4NTYwZjAyMzFiLi43
YmRjZmNkZDFhYmNiNjljYmViYTUzNTg5OTY5ZTc3NjMxMmQ3ZmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuY3BwCkBAIC02NCw5ICs2NCw5IEBAIFJlZjxQb3BTdGF0ZUV2ZW50PiBQ
b3BTdGF0ZUV2ZW50OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvcFN0YXRl
RXZlbnQpOwogfQogCi1SZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUsIFBhc3NSZWZQ
dHI8SGlzdG9yeT4gaGlzdG9yeSkKK1JlZjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50Ojpj
cmVhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVkU3RhdGUsIFBh
c3NSZWZQdHI8SGlzdG9yeT4gaGlzdG9yeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
b3BTdGF0ZUV2ZW50KHNlcmlhbGl6ZWRTdGF0ZSwgaGlzdG9yeSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFBvcFN0YXRlRXZlbnQoV1RGTW92ZShzZXJpYWxpemVkU3RhdGUpLCBoaXN0b3J5
KSk7CiB9CiAKIFJlZjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50OjpjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAppbmRleCBjNjNiMzRhOTAyMTRhYWY0Y2I4NTBk
ZmFlNTMxNmUxZGFmZWNjZWVmLi42ZDQ3NDE4OWU0ODVhYTk0ODExY2U5MWM3M2MyOTg0YTQwY2Zj
ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xh
c3MgUG9wU3RhdGVFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UG9wU3RhdGVFdmVudCgpOwogICAgIHN0YXRpYyBSZWY8UG9wU3RhdGVFdmVudD4gY3Jl
YXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPEhpc3Rvcnk+KTsKKyAgICBzdGF0aWMg
UmVmPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
LCBQYXNzUmVmUHRyPEhpc3Rvcnk+KTsKICAgICBzdGF0aWMgUmVmPFBvcFN0YXRlRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogCiAg
ICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTdGF0ZSgpIGNv
bnN0IHsgQVNTRVJUKG1fc2VyaWFsaXplZFN0YXRlKTsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4
IGQzMTBjODA3NTFiNmJiNTBlNThkYTM3NjM2MzJjYzMxMjEwNGVmZTYuLjI4MDMzMTU5ZmFjYWZj
Y2QzZmI5OGY1YjlmOWU0ZTJhMzEwNTE4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0yMzYsMTUgKzIzNiw2IEBAIHZvaWQgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOjpwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzaGVldCkKICNlbmRp
ZgogfQogCi12b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChQYXNz
UmVmUHRyPENTU1N0eWxlU2hlZXQ+IHNoZWV0KQotewotICAgIEFTU0VSVCghbV9jYWNoZWRTaGVl
dCk7Ci0gICAgQVNTRVJUKCFtX2xvYWRpbmcpOwotICAgIG1fc2hlZXQgPSBzaGVldDsKLSAgICBz
aGVldC0+c2V0VGl0bGUobV90aXRsZSk7Ci0gICAgc2hlZXQtPnNldERpc2FibGVkKG1fYWx0ZXJu
YXRlKTsKLX0KLQogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGlmICghc2hl
ZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCBk
NDI5YTg3MmQ1ZWJjNjFhYmIwNGUyY2JiMjkzZGJkNmUxM2Y3NmJkLi5jM2M1YTlkZDg4M2QzMDhm
MzA3ZWQ1Yjc3OThmNmI4NzIzZGVhYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oCkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0
cmluZyYgbG9jYWxIcmVmKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEhyZWY7IH0KICAgICBTdHls
ZVNoZWV0KiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQuZ2V0KCk7IH0KLSAgICB2b2lk
IHNldENTU1N0eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0Pik7CiAKICAgICBib29s
IGlzQ1NTKCkgY29uc3QgeyByZXR1cm4gbV9pc0NTUzsgfQogI2lmIEVOQUJMRShYU0xUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCmluZGV4IDE5MDcxMDI3M2Y2NGI0OTg0
ZWNmMzQ1NjZiZWEzMmUyYjY3Zjc5MmUuLjI4ZTg4YzNjNjZhZDkyOWFmNWI0YWRkMGIyMjRiNGFm
NmRjMmRlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9p
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYW5nZUJvdW5kYXJ5UG9p
bnQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJhbmdlQm91bmRhcnlQb2ludChQYXNzUmVmUHRy
PE5vZGU+IGNvbnRhaW5lcik7CisgICAgZXhwbGljaXQgUmFuZ2VCb3VuZGFyeVBvaW50KE5vZGUq
IGNvbnRhaW5lcik7CiAKICAgICBleHBsaWNpdCBSYW5nZUJvdW5kYXJ5UG9pbnQoY29uc3QgUmFu
Z2VCb3VuZGFyeVBvaW50Jik7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Tm9kZT4gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5OwogfTsKIAotaW5saW5lIFJhbmdlQm91bmRh
cnlQb2ludDo6UmFuZ2VCb3VuZGFyeVBvaW50KFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyKQor
aW5saW5lIFJhbmdlQm91bmRhcnlQb2ludDo6UmFuZ2VCb3VuZGFyeVBvaW50KE5vZGUqIGNvbnRh
aW5lcikKICAgICA6IG1fY29udGFpbmVyTm9kZShjb250YWluZXIpCiB7CiAgICAgQVNTRVJUKG1f
Y29udGFpbmVyTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCmluZGV4IDgyOWE4YzU1MzYx
YjQwNjg4NjViYTRmMDU2N2ExOTg4M2NkZGM5MTIuLjg1NGNiOTkyNzEyNjRjZmM5YTI2MTgwZDc2
MzNmZTFmMWM1MzBjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCkBAIC00Nyw5ICs0Nyw5
IEBAIFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoQWJz
dHJhY3RWaWV3KiB2aWV3LCBjb25zdCBTdHJpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9j
a3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+
IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqIHZpZXcsIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2Us
IGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2tx
dW90ZUhhbmRsaW5nKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVu
dFBhc3RlKEFic3RyYWN0VmlldyogdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0
YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJs
b2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCAiIiwgZGF0YSwgc2hvdWxkU21hcnRSZXBsYWNl
LCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGVtcHR5U3RyaW5nKCksIFdURk1vdmUoZGF0
YSksIHNob3VsZFNtYXJ0UmVwbGFjZSwgc2hvdWxkTWF0Y2hTdHlsZSwgbWFpbEJsb2NrcXVvdGVI
YW5kbGluZykpOwogfQogCiBSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3Ao
QWJzdHJhY3RWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCkBAIC04MCwxMSArODAsMTEg
QEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcm
IGRhdGEsIFRleHRFdmVudElucHV0VHlwZQogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVudChB
YnN0cmFjdFZpZXcqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29s
IHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVI
YW5kbGluZykKK1RleHRFdmVudDo6VGV4dEV2ZW50KEFic3RyYWN0VmlldyogdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJhZ21lbnQs
IGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9j
a3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKICAgICA6IFVJRXZlbnQoZXZl
bnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwgbV9p
bnB1dFR5cGUoVGV4dEV2ZW50SW5wdXRQYXN0ZSkKICAgICAsIG1fZGF0YShkYXRhKQotICAgICwg
bV9wYXN0aW5nRnJhZ21lbnQocGFzdGluZ0ZyYWdtZW50KQorICAgICwgbV9wYXN0aW5nRnJhZ21l
bnQoV1RGTW92ZShwYXN0aW5nRnJhZ21lbnQpKQogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2Uo
c2hvdWxkU21hcnRSZXBsYWNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKHNob3VsZE1hdGNo
U3R5bGUpCiAgICAgLCBtX21haWxCbG9ja3F1b3RlSGFuZGxpbmcobWFpbEJsb2NrcXVvdGVIYW5k
bGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCAxYTJhZjU4ZTU0MDFiOGUwZWUwZDI3Njli
NmI3OWIyNDJjY2RmMTE4Li5hYzU2YTMyMTFkNDA4ZTI4YTYwNjI2OWYwMTllNDU2ZTZkODkzYTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZSgpOwogICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYg
ZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CiAgICAg
ICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShBYnN0cmFj
dFZpZXcqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoQWJzdHJh
Y3RWaWV3KiwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkYXRhLCBib29sIHNob3VsZFNt
YXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
KTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUo
QWJzdHJhY3RWaWV3KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91
bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyk7CiAgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKEFic3Ry
YWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2
ZW50PiBjcmVhdGVGb3JEaWN0YXRpb24oQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRh
LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOwogCkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGV4
dEV2ZW50KCk7CiAKICAgICAgICAgVGV4dEV2ZW50KEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7Ci0g
ICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNo
b3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZl
bnQoQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiAgICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcq
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4m
IGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dEV2
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMzNh
MTAyMmU1NDgzOTRmYzQ0ZmVjYTlkNzBlMjQzMWYyNzdkNzRkMi4uOTVhZjMyZTQ3NGQxZmFhMTAw
NGM3YjdjNDRmZGNmNjRlMDI2ZTFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
NDY0LDEyICs0NjQsMTIgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3Ry
aW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBzbWFydFJlcGxhY2UpCiAgICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5kb21X
aW5kb3coKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOwogfQogCi12b2lkIEVkaXRvcjo6
cGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCit2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdt
ZW50KFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFy
dFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyByZXNwZWN0
c01haWxCbG9ja3F1b3RlKQogewogICAgIE5vZGUqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZy
b21TZWxlY3Rpb24oKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwotICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9j
dW1lbnQoKS5kb21XaW5kb3coKSwgcGFzdGluZ0ZyYWdtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNo
U3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCkuZG9tV2luZG93
KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCBy
ZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5U
ZXh0QnlwYXNzaW5nREhUTUwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYzlkMTU2ZTYx
NjJjMjdkZjg2ZWYyN2FlZWZmYjc5NGIzNzA1YTU0ZS4uMDhlMTk0MzVmMWRiNWU1NjI0NjkxOTcy
ZjBhODc5NTAyYjVjZWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zNDYsNyArMzQ2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVU
ZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKICAgICB2b2lkIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxBc0lnbm9yZWQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFz
dGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBs
YWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2tx
dW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwYXN0ZUFzRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIGJvb2wgc21hcnRS
ZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwYXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsK
IAogICAgIC8vIFRoaXMgaXMgb25seSBjYWxsZWQgb24gdGhlIG1hYyB3aGVyZSBwYXN0ZSBpcyBp
bXBsZW1lbnRlZCBwcmltYXJpbHkgYXQgdGhlIFdlYktpdCBsZXZlbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCmluZGV4IDgzYzQ5ZThiOTVhZWU4NDc0NjUzNjE4NWE5
Yjk1MTFiZTRmYjY5NjguLjQ4NGYyZDE4NmQzYTI0YTlhM2U3ZmFmODA4MDlhZDAwNGQ5YjUzZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7CiAg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9t
UGFzdGVib2FyZERhdGEoKnBhc3RlYm9hcmQsIG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQbGFpblRl
eHQsIGNob3NlUGxhaW5UZXh0KTsKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJh
Z21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAg
ICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJk
KCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwor
ICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVudCksIGNhblNtYXJ0UmVwbGFj
ZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50VVJM
KEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
aW5kZXggMTJhMTM3MTRjZmNhMTkyYjRkNTA4YjE3ZTc0ZjhiYzk2NTJmNmI5Ny4uZmM0MTc1MjYy
OWY5ZjFhZTc0MGI5OWViNWE3Y2RjZmNlMzA5YmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQs
IE1hCiAgICAgfQogCiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KGZy
YWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAgcGFzdGVB
c0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVi
b2FyZCksIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgcGFzdGVBc0Zy
YWdtZW50KFdURk1vdmUoZnJhZ21lbnQpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgq
cGFzdGVib2FyZCksIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKIH0KIAogUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3Vy
Y2VzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQpAQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQg
RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkCiAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewogICAgICAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhhdHRyaWJ1
dGVkU3RyaW5nKTsKICAgICAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50
KGZyYWdtZW50LCBzZWxlY3RlZFJhbmdlKCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCi0g
ICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGZhbHNlLCBmYWxzZSwgbWFpbEJs
b2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoV1RGTW92ZShm
cmFnbWVudCksIGZhbHNlLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgU3RyaW5nIHRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwog
ICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBzZWxlY3RlZFJhbmdlKCkuZ2V0KCks
IEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0KaW5kZXggNGIzYzY0MjkxMmQ5M2Y2ZjE4ZjhkYzQ2MmU3ZDczNGQxZmRmMTg4Ni4u
ZDdmZTNkOWNhOWYxYWM1MDJlNjgwZTVhZDQ4ZDExMWI3MGZhNzQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxh
aW5UZXh0LCBNYQogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNv
bnRlbnRGcm9tUGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwg
Y2hvc2VQbGFpblRleHQpOwogCiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdt
ZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAg
cGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgq
cGFzdGVib2FyZCksIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgcGFz
dGVBc0ZyYWdtZW50KFdURk1vdmUoZnJhZ21lbnQpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVi
b2FyZCgqcGFzdGVib2FyZCksIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKIAogICAg
IGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KQEAgLTI4Myw3
ICsyODMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBu
b2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGlmIChSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2Fy
ZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsKICAgICAgICAgbWF5YmVDb3B5Tm9k
ZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KCpub2RlLCAqZnJhZ21lbnQpOwogICAgICAgICBpZiAoc2hv
dWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKQotICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2UoKSwgY2Fu
U21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNlLCBNYWlsQmxvY2tx
dW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKTsKKyAgICAgICAgICAgIHBhc3RlQXNGcmFn
bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFz
dGVib2FyZCksIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3Rl
KTsKICAgICB9CiAKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmco
KSk7CkBAIC02NzMsNyArNjczLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRo
QXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWQKICAgICBpZiAo
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgp
KSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGF0dHJpYnV0ZWRTdHJpbmcpOwogICAgICAgICBpZiAoZnJh
Z21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHNlbGVjdGVkUmFuZ2UoKSwg
RWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChm
cmFnbWVudCwgZmFsc2UsIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAg
ICAgIHBhc3RlQXNGcmFnbWVudChXVEZNb3ZlKGZyYWdtZW50KSwgZmFsc2UsIGZhbHNlLCBtYWls
QmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgdGV4dCA9
IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0
KHRleHQsIHNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3BwCmluZGV4IGE4YWQ2N2NhYTg5
NjI1MDRiYjc5MzZmMTk0MDc2Y2FjMzk4MjUzMzMuLmU3NDA2MmFmYzhkNDgwODgxZjUwNjMyZTJh
N2NkZjdhYTIxYmI5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvd2luL0Vk
aXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy93aW4vRWRpdG9yV2luLmNw
cApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0
ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYQogICAgIGJvb2wgY2hv
c2VQbGFpblRleHQ7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gcGFz
dGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0
LCBjaG9zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdt
ZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAg
cGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgq
cGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAg
ICAgICAgcGFzdGVBc0ZyYWdtZW50KFdURk1vdmUoZnJhZ21lbnQpLCBjYW5TbWFydFJlcGxhY2VX
aXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90
ZUhhbmRsaW5nKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFBsYXRmb3JtRHJhZ0RhdGE+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270335</attachid>
            <date>2016-01-30 20:30:18 -0800</date>
            <delta_ts>2016-01-31 04:08:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-153470-20160131132952.patch</filename>
            <type>text/plain</type>
            <size>27766</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxZTA2YWJkNDQ5MWQw
MWQxNmJlNWI2NTQxNmZhNTYyN2ZiZGIzMC4uY2ZmZmIzNzQ2MmE4MDNhM2IxOGMxOTVjYTY2N2Ex
MGNmMzY5M2ZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAxLTMwICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciB1c2VzIGluIGRvbSAtIDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIEFzIGEgc3RlcCB0byByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCBy
ZWR1Y2VzIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2RvbS4gCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkb3B0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRNYXJrZXJUZXh0TWF0Y2g6Omluc3RhbmNlRm9yKToKKyAgICAgICAgKiBkb20vRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudCk6CisgICAg
ICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgorICAg
ICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vR2VuZXJpY0V2ZW50
UXVldWUuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRl
RXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaDoKKyAgICAgICAgKiBkb20vUGVu
ZGluZ1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1BvcFN0YXRl
RXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldCk6IERl
bGV0ZWQuIE5vYm9keSBjYWxscyB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAqIGRvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2ludCk6
CisgICAgICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZl
bnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50
OjpUZXh0RXZlbnQpOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFnbWVu
dCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBh
c3RlYm9hcmQpOgorCiAyMDE2LTAxLTMwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGRlYnVnIGJ1aWxkIGFm
dGVyIHIxOTU4OTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDA1ZTc3NTJhNWNiOTlhYTAz
ZDRiODZkYWU1MGJjM2YyMTNjYzNmMzMuLmEwMDkzMmYwNmQzMTQ3MDY3NzMyODVhOWZmMDYzZWVh
YzBkNGZjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTAwNSw3ICsxMDA1LDcgQEAg
UmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9v
bCBkZWVwLCBFeGNlcHRpb25Db2RlJgogfQogCiAKLVJlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRv
cHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0
cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKQEAgLTEwNDQsNyArMTA0NCw3IEBAIFJlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2Rl
KFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGFkb3B0SWZOZWVkZWQoc291cmNlLmdldCgpKTsKKyAgICBhZG9wdElmTmVl
ZGVkKHNvdXJjZSk7CiAKICAgICByZXR1cm4gc291cmNlOwogfQpAQCAtMjczMSw4ICsyNzMxLDgg
QEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgZGlzcGF0Y2hXaW5kb3dMb2Fk
RXZlbnQoKTsKICAgICBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50Tm90UGVyc2lz
dGVkKTsKICAgICBpZiAobV9wZW5kaW5nU3RhdGVPYmplY3QpCi0gICAgICAgIGVucXVldWVQb3Bz
dGF0ZUV2ZW50KG1fcGVuZGluZ1N0YXRlT2JqZWN0LnJlbGVhc2UoKSk7Ci0gICAgCisgICAgICAg
IGVucXVldWVQb3BzdGF0ZUV2ZW50KFdURk1vdmUobV9wZW5kaW5nU3RhdGVPYmplY3QpKTsKKwog
ICAgIGlmIChmKQogICAgICAgICBmLT5sb2FkZXIoKS5kaXNwYXRjaE9ubG9hZEV2ZW50cygpOwog
I2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKQEAgLTU1NTAsOSArNTU1MCw5IEBA
IHZvaWQgRG9jdW1lbnQ6OmVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRV
UkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMCiAgICAgZW5xdWV1ZVdpbmRvd0V2ZW50KEhhc2hDaGFu
Z2VFdmVudDo6Y3JlYXRlKG9sZFVSTCwgbmV3VVJMKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OmVu
cXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0
ZU9iamVjdCkKK3ZvaWQgRG9jdW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50KFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgc3RhdGVPYmplY3QpCiB7Ci0gICAgZW5xdWV1ZVdpbmRvd0V2
ZW50KFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShzdGF0ZU9iamVjdCwgbV9kb21XaW5kb3cgPyBtX2Rv
bVdpbmRvdy0+aGlzdG9yeSgpIDogbnVsbHB0cikpOworICAgIGVucXVldWVXaW5kb3dFdmVudChQ
b3BTdGF0ZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShzdGF0ZU9iamVjdCksIG1fZG9tV2luZG93ID8g
bV9kb21XaW5kb3ctPmhpc3RvcnkoKSA6IG51bGxwdHIpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIp
CkBAIC02ODMwLDcgKzY4MzAsNyBAQCBib29sIERvY3VtZW50OjpoYXNGb2N1cygpIGNvbnN0CiAj
aWYgRU5BQkxFKFdFQl9SRVBMQVkpCiB2b2lkIERvY3VtZW50OjpzZXRJbnB1dEN1cnNvcihQYXNz
UmVmUHRyPElucHV0Q3Vyc29yPiBjdXJzb3IpCiB7Ci0gICAgbV9pbnB1dEN1cnNvciA9IGN1cnNv
cjsKKyAgICBtX2lucHV0Q3Vyc29yID0gV1RGTW92ZShjdXJzb3IpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggODk0M2RiNzVlYWM4MTlhNDE0N2ViMTE1MTg3YjNmMzZhNWNm
NDAxYi4uNGQ2ODcwMTEwODA5NzMxYjdkNTMxNjZmMmIzZWNlY2E5ZjAwZWRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTQ2Niw3ICs0NjYsNyBAQCBwdWJsaWM6CiAgICAgRE9NU2VjdXJpdHlQ
b2xpY3kmIHNlY3VyaXR5UG9saWN5KCk7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxOb2RlPiBhZG9w
dE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQ
dHI8Tm9kZT4gYWRvcHROb2RlKE5vZGUqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
UmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVt
YmVkcygpOwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5xdWV1ZU92
ZXJmbG93RXZlbnQoUmVmPEV2ZW50PiYmKTsKICAgICB2b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50
KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICAgdm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2
ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTCk7Ci0gICAgdm9p
ZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c3RhdGVPYmplY3QpOworICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdCk7CiAgICAgdmlydHVhbCBEb2N1bWVudEV2
ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2V2
ZW50UXVldWU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWVkaWFDYW5TdGFydExp
c3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlci5jcHAKaW5kZXggMDVmMDgwZDY4MTFjN2ZmYTJlMzc0NWZlM2Y2OGU4YTNlNDU1NGYwNi4u
YmY4ZDQ5ZTJmMzI3NDljZjM3NDU5NjU4NzJjMmFkN2JiMjRkMmEyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIERvY3VtZW50TWFya2VyRGV0
YWlsczo6fkRvY3VtZW50TWFya2VyRGV0YWlscygpCiB7CiB9CiAKLWNsYXNzIERvY3VtZW50TWFy
a2VyRGVzY3JpcHRpb24gOiBwdWJsaWMgRG9jdW1lbnRNYXJrZXJEZXRhaWxzIHsKK2NsYXNzIERv
Y3VtZW50TWFya2VyRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgRG9jdW1lbnRNYXJrZXJEZXRh
aWxzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERvY3VtZW50TWFya2VyRGVzY3JpcHRpb24+
IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXggMTQ5YjA0ZWI5
MmQ2NmJkZTQ3MTdmZjUzNTU5OTk5NThlOTU2NWJhZS4uY2Q5MTZkOTk2MjVkMWFiZDhjMDhkYzNj
Mzc3ZmU2MWVlZTgxZWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xNzYsMTMgKzE3NiwxNCBA
QCB2b2lkIEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCiB7CiB9CiAKLXZvaWQgRXZlbnQ6OnNldFVu
ZGVybHlpbmdFdmVudChQYXNzUmVmUHRyPEV2ZW50PiB1ZSkKK3ZvaWQgRXZlbnQ6OnNldFVuZGVy
bHlpbmdFdmVudChFdmVudCogdW5kZXJseWluZ0V2ZW50KQogewogICAgIC8vIFByb2hpYml0IGNy
ZWF0aW9uIG9mIGEgY3ljbGUgLS0ganVzdCBkbyBub3RoaW5nIGluIHRoYXQgY2FzZS4KLSAgICBm
b3IgKEV2ZW50KiBlID0gdWUuZ2V0KCk7IGU7IGUgPSBlLT51bmRlcmx5aW5nRXZlbnQoKSkKLSAg
ICAgICAgaWYgKGUgPT0gdGhpcykKKyAgICBmb3IgKEV2ZW50KiBldmVudCA9IHVuZGVybHlpbmdF
dmVudDsgZXZlbnQ7IGV2ZW50ID0gZXZlbnQtPnVuZGVybHlpbmdFdmVudCgpKSB7CisgICAgICAg
IGlmIChldmVudCA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgIG1fdW5kZXJseWlu
Z0V2ZW50ID0gdWU7CisgICAgfQorICAgIG1fdW5kZXJseWluZ0V2ZW50ID0gdW5kZXJseWluZ0V2
ZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IGExMzk4
NzFlZTRkNDE3NWFlOTZjN2YyODliYmMwOTkxNzA5YTJhMDEuLmE1M2E4OGZiNmQ0OWVlNGU2M2Vl
Mjg4ZmJmMDMwODg5NzMzZGQ0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xNzMsNyArMTczLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q2FuY2VsQnViYmxlKGJvb2wgY2FuY2VsKSB7IG1fY2FuY2Vs
QnViYmxlID0gY2FuY2VsOyB9CiAKICAgICBFdmVudCogdW5kZXJseWluZ0V2ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV91bmRlcmx5aW5nRXZlbnQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFVuZGVybHlp
bmdFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgdm9pZCBzZXRVbmRlcmx5aW5nRXZlbnQo
RXZlbnQqKTsKIAogICAgIHZpcnR1YWwgRGF0YVRyYW5zZmVyKiBpbnRlcm5hbERhdGFUcmFuc2Zl
cigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5o
CmluZGV4IGYxODlkN2E0ZGYyYjg1ZDI3YWY3NDVjZmFlM2FhZTQ2ODBkYTkzNTIuLmJhNDNlZWRi
ZTQ5MjU0NWM2M2I1MGU0NGZiNmI5YWY2NzE1MjdmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNr
T3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVy
aWNFdmVudFF1ZXVlLmNwcAppbmRleCBkYmE4NTI3MGRiNDc5NGY2ZmFiMjNhMjZiMzlmMWNiNTk0
YjFkZDJlLi5jZDIwMWEzNjlmZDZkNGMzY2FlM2QxY2MyYzk3YjQyZjBjMWYzNDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgR2Vu
ZXJpY0V2ZW50UXVldWU6On5HZW5lcmljRXZlbnRRdWV1ZSgpCiB7CiB9CiAKLXZvaWQgR2VuZXJp
Y0V2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3ZvaWQg
R2VuZXJpY0V2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYgZXZlbnQpCiB7
CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTUzLDcgKzUzLDcgQEAg
dm9pZCBHZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQogICAgIGlmIChldmVudC0+dGFyZ2V0KCkgPT0gJm1fb3duZXIpCiAgICAgICAgIGV2ZW50
LT5zZXRUYXJnZXQobnVsbHB0cik7CiAKLSAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKGV2ZW50
KTsKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQpKTsKIAogICAgIGlm
IChtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmlj
RXZlbnRRdWV1ZS5oCmluZGV4IDJiNWU0OGE3MjBlODgwMmQ2OWRlNmEyY2Y2NDg2M2ExZmRiZjk0
MGYuLmQzYTAzOGE0YjVmN2IwZjc0OTEwZTc5Zjk0NmFmYWI5YjhiMGU4N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBHZW5lcmljRXZlbnRRdWV1ZShFdmVudFRhcmdldCYpOwogICAgIH5HZW5lcmlj
RXZlbnRRdWV1ZSgpOwogCi0gICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4p
OworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4mJik7CiAgICAgdm9pZCBjbG9z
ZSgpOwogCiAgICAgdm9pZCBjYW5jZWxBbGxFdmVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmNwcAppbmRleCA5NTBhNGIzNWY5YzRjYTJiOWFkMmMwOWNkODQ5YmVjMTRiYzE5ODM3Li42ZTQ1
NjEzYTMzN2NkZjlmNDE5YzNhMWQwNTk3Y2JmZGEwMmZmZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgU2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxh
dGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3QKICAg
ICAgICAgbV9zaGlmdEtleSA9IGtleVN0YXRlRXZlbnQtPnNoaWZ0S2V5KCk7CiAgICAgICAgIG1f
bWV0YUtleSA9IGtleVN0YXRlRXZlbnQtPm1ldGFLZXkoKTsKICAgICB9Ci0gICAgc2V0VW5kZXJs
eWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudCk7CisgICAgc2V0VW5kZXJseWluZ0V2ZW50KHVuZGVy
bHlpbmdFdmVudC5nZXQoKSk7CiAKICAgICBpZiAoaXM8TW91c2VFdmVudD4odGhpcy0+dW5kZXJs
eWluZ0V2ZW50KCkpKSB7CiAgICAgICAgIE1vdXNlRXZlbnQmIG1vdXNlRXZlbnQgPSBkb3duY2Fz
dDxNb3VzZUV2ZW50PigqdGhpcy0+dW5kZXJseWluZ0V2ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDRhYjUyZmJiYjljMTc3Y2Q4ZGU2ZjE5MDZlOWFjNDg4MDczMDFlYWMuLmZlNjE5ODExODY5
ZWI1OGZhZTkzMmQxNjViZTM0ODRjNGRkZDQyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTIxMjgs
NyArMjEyOCw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGludCBkZXRh
aWwsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVuCiB7CiAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudERp
c3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIFJlZjxVSUV2ZW50PiBldmVudCA9IFVJRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCBkZXRhaWwpOwotICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQo
dW5kZXJseWluZ0V2ZW50KTsKKyAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlp
bmdFdmVudC5nZXQoKSk7CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChldmVudCk7CiAgICAgcmV0
dXJuIGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5o
CmluZGV4IDhiZmRmNmJmMGJhZDMxMmEyYzU0MDI1ZTBlOTRiM2JmMDI1NjUyNTkuLmY4NWQ3NTc3
YzFiZTlkM2MyODM3NmUxMTZhNDM4ZWRiYTM2MmVjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJh
dG9yLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1Njcmlw
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuaAppbmRleCAwMjM2ZmU5N2Uw
OTIxMmViNjliNDI2ODY1ZGQyNjdiYTI2MTlmY2Q0Li4wNGQxYjIzZGIyZTRhNzcwZjE3YWUxMjkw
ODkyNTUxMDRlODk4YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1Nj
cmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmgKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BT
dGF0ZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAppbmRl
eCAxYmQ1YmU4ZGRhMTAxYTVkZjBjOWZjMWFjMzY4ZDk4NTYwZjAyMzFiLi43YmRjZmNkZDFhYmNi
NjljYmViYTUzNTg5OTY5ZTc3NjMxMmQ3ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9wU3RhdGVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZl
bnQuY3BwCkBAIC02NCw5ICs2NCw5IEBAIFJlZjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50
OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvcFN0YXRlRXZlbnQpOwogfQog
Ci1SZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUsIFBhc3NSZWZQdHI8SGlzdG9yeT4g
aGlzdG9yeSkKK1JlZjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50OjpjcmVhdGUoUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVkU3RhdGUsIFBhc3NSZWZQdHI8SGlz
dG9yeT4gaGlzdG9yeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb3BTdGF0ZUV2ZW50
KHNlcmlhbGl6ZWRTdGF0ZSwgaGlzdG9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBv
cFN0YXRlRXZlbnQoV1RGTW92ZShzZXJpYWxpemVkU3RhdGUpLCBoaXN0b3J5KSk7CiB9CiAKIFJl
ZjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuaAppbmRleCBjNjNiMzRhOTAyMTRhYWY0Y2I4NTBkZmFlNTMxNmUxZGFm
ZWNjZWVmLi42ZDQ3NDE4OWU0ODVhYTk0ODExY2U5MWM3M2MyOTg0YTQwY2ZjZTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgUG9wU3RhdGVF
dmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9wU3Rh
dGVFdmVudCgpOwogICAgIHN0YXRpYyBSZWY8UG9wU3RhdGVFdmVudD4gY3JlYXRlKCk7Ci0gICAg
c3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBQYXNzUmVmUHRyPEhpc3Rvcnk+KTsKKyAgICBzdGF0aWMgUmVmPFBvcFN0YXRl
RXZlbnQ+IGNyZWF0ZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBQYXNzUmVmUHRy
PEhpc3Rvcnk+KTsKICAgICBzdGF0aWMgUmVmPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogCiAgICAgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTdGF0ZSgpIGNvbnN0IHsgQVNTRVJU
KG1fc2VyaWFsaXplZFN0YXRlKTsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGQzMTBjODA3NTFi
NmJiNTBlNThkYTM3NjM2MzJjYzMxMjEwNGVmZTYuLjI4MDMzMTU5ZmFjYWZjY2QzZmI5OGY1Yjlm
OWU0ZTJhMzEwNTE4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCkBAIC0yMzYsMTUgKzIzNiw2IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9u
OjpwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzaGVldCkKICNlbmRpZgogfQogCi12b2lk
IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChQYXNzUmVmUHRyPENTU1N0
eWxlU2hlZXQ+IHNoZWV0KQotewotICAgIEFTU0VSVCghbV9jYWNoZWRTaGVldCk7Ci0gICAgQVNT
RVJUKCFtX2xvYWRpbmcpOwotICAgIG1fc2hlZXQgPSBzaGVldDsKLSAgICBzaGVldC0+c2V0VGl0
bGUobV90aXRsZSk7Ci0gICAgc2hlZXQtPnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsKLX0KLQog
dm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGlmICghc2hlZXQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCBkNDI5YTg3MmQ1ZWJj
NjFhYmIwNGUyY2JiMjkzZGJkNmUxM2Y3NmJkLi5jM2M1YTlkZDg4M2QzMDhmMzA3ZWQ1Yjc3OThm
NmI4NzIzZGVhYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oCkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgbG9jYWxI
cmVmKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEhyZWY7IH0KICAgICBTdHlsZVNoZWV0KiBzaGVl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldENTU1N0eWxl
U2hlZXQoUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0Pik7CiAKICAgICBib29sIGlzQ1NTKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NTUzsgfQogI2lmIEVOQUJMRShYU0xUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlQm91bmRhcnlQb2ludC5oCmluZGV4IDE5MDcxMDI3M2Y2NGI0OTg0ZWNmMzQ1NjZiZWEz
MmUyYjY3Zjc5MmUuLjI4ZTg4YzNjNjZhZDkyOWFmNWI0YWRkMGIyMjRiNGFmNmRjMmRlZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYW5nZUJvdW5kYXJ5UG9pbnQgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFJhbmdlQm91bmRhcnlQb2ludChQYXNzUmVmUHRyPE5vZGU+IGNvbnRh
aW5lcik7CisgICAgZXhwbGljaXQgUmFuZ2VCb3VuZGFyeVBvaW50KE5vZGUqIGNvbnRhaW5lcik7
CiAKICAgICBleHBsaWNpdCBSYW5nZUJvdW5kYXJ5UG9pbnQoY29uc3QgUmFuZ2VCb3VuZGFyeVBv
aW50Jik7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9j
aGlsZEJlZm9yZUJvdW5kYXJ5OwogfTsKIAotaW5saW5lIFJhbmdlQm91bmRhcnlQb2ludDo6UmFu
Z2VCb3VuZGFyeVBvaW50KFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyKQoraW5saW5lIFJhbmdl
Qm91bmRhcnlQb2ludDo6UmFuZ2VCb3VuZGFyeVBvaW50KE5vZGUqIGNvbnRhaW5lcikKICAgICA6
IG1fY29udGFpbmVyTm9kZShjb250YWluZXIpCiB7CiAgICAgQVNTRVJUKG1fY29udGFpbmVyTm9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCmluZGV4IDgyOWE4YzU1MzYxYjQwNjg4NjViYTRm
MDU2N2ExOTg4M2NkZGM5MTIuLjg1NGNiOTkyNzEyNjRjZmM5YTI2MTgwZDc2MzNmZTFmMWM1MzBj
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIFJlZjxUZXh0
RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoQWJzdHJhY3RWaWV3KiB2
aWV3LCBjb25zdCBTdHJpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcs
IGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShBYnN0cmFjdFZpZXcqIHZpZXcsIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKEFic3Ry
YWN0VmlldyogdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91
bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRleHRFdmVudCh2aWV3LCAiIiwgZGF0YSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRj
aFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGV4dEV2ZW50KHZpZXcsIGVtcHR5U3RyaW5nKCksIFdURk1vdmUoZGF0YSksIHNob3VsZFNt
YXJ0UmVwbGFjZSwgc2hvdWxkTWF0Y2hTdHlsZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykpOwog
fQogCiBSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoQWJzdHJhY3RWaWV3
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCkBAIC04MCwxMSArODAsMTEgQEAgVGV4dEV2ZW50
OjpUZXh0RXZlbnQoQWJzdHJhY3RWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRF
dmVudElucHV0VHlwZQogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVudChBYnN0cmFjdFZpZXcq
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBw
YXN0aW5nRnJhZ21lbnQsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1Rl
eHRFdmVudDo6VGV4dEV2ZW50KEFic3RyYWN0VmlldyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRh
LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc2hvdWxk
U21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKICAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRl
eHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwgbV9pbnB1dFR5cGUoVGV4
dEV2ZW50SW5wdXRQYXN0ZSkKICAgICAsIG1fZGF0YShkYXRhKQotICAgICwgbV9wYXN0aW5nRnJh
Z21lbnQocGFzdGluZ0ZyYWdtZW50KQorICAgICwgbV9wYXN0aW5nRnJhZ21lbnQoV1RGTW92ZShw
YXN0aW5nRnJhZ21lbnQpKQogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2Uoc2hvdWxkU21hcnRS
ZXBsYWNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKHNob3VsZE1hdGNoU3R5bGUpCiAgICAg
LCBtX21haWxCbG9ja3F1b3RlSGFuZGxpbmcobWFpbEJsb2NrcXVvdGVIYW5kbGluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RXZlbnQuaAppbmRleCAxYTJhZjU4ZTU0MDFiOGUwZWUwZDI3NjliNmI3OWIyNDJjY2Rm
MTE4Li5hYzU2YTMyMTFkNDA4ZTI4YTYwNjI2OWYwMTllNDU2ZTZkODkzYTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFdmVudC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZSgpOwogICAgICAgICBzdGF0aWMgUmVmPFRl
eHRFdmVudD4gY3JlYXRlKEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2
ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CiAgICAgICAgIHN0YXRpYyBS
ZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShBYnN0cmFjdFZpZXcqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAgc3RhdGlj
IFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoQWJzdHJhY3RWaWV3KiwgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwg
Ym9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAg
c3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoQWJzdHJhY3RWaWV3
KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxh
Y2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiAgICAg
ICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKEFic3RyYWN0VmlldyosIGNv
bnN0IFN0cmluZyYgZGF0YSk7CiAgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVG
b3JEaWN0YXRpb24oQWJzdHJhY3RWaWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCkBAIC03
Miw3ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGV4dEV2ZW50KCk7CiAK
ICAgICAgICAgVGV4dEV2ZW50KEFic3RyYWN0VmlldyosIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4
dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7Ci0gICAgICAgIFRleHRF
dmVudChBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4sIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5
bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoQWJzdHJhY3RW
aWV3KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9v
bCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVv
dGVIYW5kbGluZyk7CiAgICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dEV2ZW50KCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMzNhMTAyMmU1NDgzOTRm
YzQ0ZmVjYTlkNzBlMjQzMWYyNzdkNzRkMi4uNTU0ZDc3MDMyZjc0Y2MzOTUxOWEyMWYzZjU2NzA4
ZmVlYWRkNGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDY0LDEyICs0NjQs
MTIgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiBwYXN0aW5n
VGV4dCwgYm9vbCBzbWFydFJlcGxhY2UpCiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRF
dmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgcGFz
dGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOwogfQogCi12b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdt
ZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LCBib29sIHNt
YXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHJlc3Bl
Y3RzTWFpbEJsb2NrcXVvdGUpCit2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1
bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wg
bWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyByZXNwZWN0c01haWxCbG9ja3F1b3Rl
KQogewogICAgIE5vZGUqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsK
ICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5k
b3coKSwgcGFzdGluZ0ZyYWdtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUsIHJlc3BlY3Rz
TWFpbEJsb2NrcXVvdGUpKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFz
dGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9j
a3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhU
TUwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYzlkMTU2ZTYxNjJjMjdkZjg2ZWYyN2Fl
ZWZmYjc5NGIzNzA1YTU0ZS4uYjBhNTI1NTBhZDM5NThmZmY2MjRmYWQyOTc1NmE4MmQ5MzI5NjA4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zNDYsNyArMzQ2LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29u
c3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxB
c0lnbm9yZWQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpS
ZXNwZWN0QmxvY2txdW90ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFzRnJhZ21l
bnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpS
ZXNwZWN0QmxvY2txdW90ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFzUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsKIAogICAgIC8vIFRoaXMgaXMg
b25seSBjYWxsZWQgb24gdGhlIG1hYyB3aGVyZSBwYXN0ZSBpcyBpbXBsZW1lbnRlZCBwcmltYXJp
bHkgYXQgdGhlIFdlYktpdCBsZXZlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JH
dGsuY3BwCmluZGV4IDgzYzQ5ZThiOTVhZWU4NDc0NjUzNjE4NWE5Yjk1MTFiZTRmYjY5NjguLjY0
ZTZmNTE5ZTFmMTdjOGNhMGIwNzllN2JhN2FkM2FkYWYwZjkwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxh
aW5UZXh0LCBNYQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7CiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoKnBh
c3RlYm9hcmQsIG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0
KTsKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJh
bmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQo
ZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hv
c2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBwYXN0ZUFzRnJh
Z21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3Rl
Ym9hcmQoKnBhc3RlYm9hcmQpLCBjaG9zZVBsYWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGlu
Zyk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRVUkwoRWxlbWVudCYg
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCAxMmEx
MzcxNGNmY2ExOTJiNGQ1MDhiMTdlNzRmOGJjOTY1MmY2Yjk3Li44MDQwZjQ0Yzg4ODk5OWVhNGEw
ZmRiMDBiYzZhNGU4YmJmOGQwZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9h
cmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgTWEKICAgICB9
CiAKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJh
bmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQo
ZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFs
c2UsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJh
Z21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBh
c3RlYm9hcmQpLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiB9CiAKIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZAogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoYXR0cmlidXRl
ZFN0cmluZyk7CiAgICAgICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChm
cmFnbWVudCwgc2VsZWN0ZWRSYW5nZSgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAg
ICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBmYWxzZSwgZmFsc2UsIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpOworICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJl
bGVhc2VOb25OdWxsKCksIGZhbHNlLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIHRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJp
bmddOwogICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBzZWxlY3RlZFJhbmdlKCku
Z2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KaW5kZXggNGIzYzY0MjkxMmQ5M2Y2ZjE4ZjhkYzQ2MmU3ZDczNGQxZmRm
MTg4Ni4uNWE1MjE5OGY1ZTZlNWY4YjhmZjhkZTAzZTVjZTkwZTU5ZjVlNzJiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFs
bG93UGxhaW5UZXh0LCBNYQogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBhbGxvd1BsYWlu
VGV4dCwgY2hvc2VQbGFpblRleHQpOwogCiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2Vy
dEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAg
ICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVi
b2FyZCgqcGFzdGVib2FyZCksIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVw
bGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcpOwogCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQpAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0
ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgaWYg
KFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVi
b2FyZChwYXN0ZWJvYXJkLCAqcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5UZXh0KSkgewogICAgICAg
ICBtYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQoKm5vZGUsICpmcmFnbWVudCk7CiAg
ICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvblBhc3RlZCkpCi0gICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQu
cmVsZWFzZSgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFs
c2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOworICAgICAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVw
bGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZzo6SWdub3JlQmxvY2txdW90ZSk7CiAgICAgfQogCiAgICAgY2xpZW50KCktPnNldEluc2Vy
dGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgRWRpdG9y
OjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkCiAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXND
b250ZW50UmljaGx5RWRpdGFibGUoKSkgewogICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhhdHRyaWJ1dGVkU3Ry
aW5nKTsKICAgICAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KGZyYWdt
ZW50LCBzZWxlY3RlZFJhbmdlKCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCi0gICAgICAg
ICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGZhbHNlLCBmYWxzZSwgbWFpbEJsb2NrcXVv
dGVIYW5kbGluZyk7CisgICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFz
ZU5vbk51bGwoKSwgZmFsc2UsIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICB9
IGVsc2UgewogICAgICAgICBTdHJpbmcgdGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107
CiAgICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0KHRleHQsIHNlbGVjdGVkUmFuZ2UoKS5nZXQo
KSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3dpbi9F
ZGl0b3JXaW4uY3BwCmluZGV4IGE4YWQ2N2NhYTg5NjI1MDRiYjc5MzZmMTk0MDc2Y2FjMzk4MjUz
MzMuLjIxNWQ2Zjg4YzJlMDQ2MjZjYjhlOGRmMjAyZTIzMDRlNTBhMzczMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy93aW4vRWRpdG9yV2luLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFs
bG93UGxhaW5UZXh0LCBNYQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7CiAgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudCht
X2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCk7CiAgICAgaWYg
KGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9y
SW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBj
YW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0
LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUGxhdGZvcm1EcmFnRGF0YT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGRhNzY4NDViYzFmNmFlNTI3ZmFlNTI5NzhjZGFlYTI4
NzVjNjExNzkuLjJhZjViZWNmMTc1ODE4MjBmYjA3ODA5ZGEzMmUwMTgzYmY3YzBiYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTMyNiw3ICsxMzI2LDcg
QEAgc3RhdGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRpdmVQYXJ0KE5TU3RyaW5nICpyZWxh
dGl2ZVBhcnQpCiAKICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9k
b2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2Ug
YWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgIGlmIChmcmFnbWVudCAmJiBbc2Vs
ZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2Ug
Z2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pCi0gICAgICAgIGNvcmVGcmFt
ZS0+ZWRpdG9yKCkucGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21h
cnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoKmNvcmUoZnJhZ21lbnQpLCBbc2VsZiBf
Y2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKIAogICAg
IFt3ZWJWaWV3IF9zZXRJbnNlcnRpb25QYXN0ZWJvYXJkOm5pbF07CiAgICAgW3dlYlZpZXcgcmVs
ZWFzZV07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>