<?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>112225</bug_id>
          
          <creation_ts>2013-03-12 20:26:53 -0700</creation_ts>
          <short_desc>Replace static_casts with to* functions for document types</short_desc>
          <delta_ts>2013-03-13 13:31:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly 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="Abhishek Arya">inferno</reporter>
          <assigned_to name="Abhishek Arya">inferno</assigned_to>
          <cc>buildbot</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854026</commentid>
    <comment_count>0</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-12 20:26:53 -0700</bug_when>
    <thetext>Replace static_casts with to* functions for document types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854038</commentid>
    <comment_count>1</comment_count>
      <attachid>192866</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-12 21:12:42 -0700</bug_when>
    <thetext>Created attachment 192866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854044</commentid>
    <comment_count>2</comment_count>
      <attachid>192867</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-12 21:29:26 -0700</bug_when>
    <thetext>Created attachment 192867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854045</commentid>
    <comment_count>3</comment_count>
      <attachid>192867</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-12 21:38:12 -0700</bug_when>
    <thetext>Comment on attachment 192867
Patch

Attachment 192867 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17160215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854046</commentid>
    <comment_count>4</comment_count>
      <attachid>192867</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-12 21:38:51 -0700</bug_when>
    <thetext>Comment on attachment 192867
Patch

Attachment 192867 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17010936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854053</commentid>
    <comment_count>5</comment_count>
      <attachid>192867</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-12 21:55:17 -0700</bug_when>
    <thetext>Comment on attachment 192867
Patch

Attachment 192867 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17080442</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854054</commentid>
    <comment_count>6</comment_count>
      <attachid>192868</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-12 21:56:22 -0700</bug_when>
    <thetext>Created attachment 192868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854058</commentid>
    <comment_count>7</comment_count>
      <attachid>192868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-12 22:07:01 -0700</bug_when>
    <thetext>Comment on attachment 192868
Patch

Attachment 192868 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17060722</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854059</commentid>
    <comment_count>8</comment_count>
      <attachid>192868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-12 22:09:29 -0700</bug_when>
    <thetext>Comment on attachment 192868
Patch

Attachment 192868 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17060725</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854086</commentid>
    <comment_count>9</comment_count>
      <attachid>192868</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-12 23:49:23 -0700</bug_when>
    <thetext>Comment on attachment 192868
Patch

Attachment 192868 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17208050

New failing tests:
userscripts/user-script-plugin-document.html
http/tests/security/contentSecurityPolicy/object-src-url-allowed.html
plugins/return-error-from-new-stream-callback-in-full-frame-plugin.html
plugins/plugin-document-back-forward.html
fast/frames/iframe-plugin-load-remove-document-crash.html
plugins/iframe-plugin-bgcolor.html
http/tests/security/contentSecurityPolicy/object-src-url-blocked.html
fast/loader/reload-zero-byte-plugin.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854092</commentid>
    <comment_count>10</comment_count>
      <attachid>192875</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-13 00:15:59 -0700</bug_when>
    <thetext>Created attachment 192875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854384</commentid>
    <comment_count>11</comment_count>
      <attachid>192875</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-13 10:17:53 -0700</bug_when>
    <thetext>Comment on attachment 192875
Patch

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

Please be sure to run tests by a debug build yourself before landing it.

&gt; Source/WebCore/html/ImageDocument.h:88
&gt; +// This will catch anyone doing an unnecessary cast.
&gt; +void toImageDocument(const ImageDocument*);

I&apos;m not sure if this is really useful.

&gt; Source/WebCore/html/MediaDocument.h:71
&gt; +// This will catch anyone doing an unnecessary cast.
&gt; +void toMediaDocument(const MediaDocument*);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854399</commentid>
    <comment_count>12</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-13 10:45:48 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 192875 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192875&amp;action=review
&gt; 
&gt; Please be sure to run tests by a debug build yourself before landing it.

Sure.

&gt; 
&gt; &gt; Source/WebCore/html/ImageDocument.h:88
&gt; &gt; +// This will catch anyone doing an unnecessary cast.
&gt; &gt; +void toImageDocument(const ImageDocument*);
&gt; 
&gt; I&apos;m not sure if this is really useful.
&gt; 

actually it helped twice yesterday since compile will fail if something is already the same type and we try to call static_cast on it.

&gt; &gt; Source/WebCore/html/MediaDocument.h:71
&gt; &gt; +// This will catch anyone doing an unnecessary cast.
&gt; &gt; +void toMediaDocument(const MediaDocument*);
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854402</commentid>
    <comment_count>13</comment_count>
      <attachid>192875</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-13 10:52:19 -0700</bug_when>
    <thetext>Comment on attachment 192875
Patch

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

&gt; Source/WebCore/Modules/notifications/Notification.cpp:261
&gt;      ASSERT_WITH_SECURITY_IMPLICATION(context-&gt;isDocument());

This is no longer necessary (here, and elsewhere). Do you mind removing these extra assertions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854404</commentid>
    <comment_count>14</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-13 10:53:30 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 192875 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192875&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/notifications/Notification.cpp:261
&gt; &gt;      ASSERT_WITH_SECURITY_IMPLICATION(context-&gt;isDocument());
&gt; 
&gt; This is no longer necessary (here, and elsewhere). Do you mind removing these extra assertions?

Yes, forgot some of those, will remove before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854502</commentid>
    <comment_count>15</comment_count>
      <attachid>192968</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-13 12:52:41 -0700</bug_when>
    <thetext>Created attachment 192968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854572</commentid>
    <comment_count>16</comment_count>
      <attachid>192968</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 13:31:22 -0700</bug_when>
    <thetext>Comment on attachment 192968
Patch

Clearing flags on attachment: 192968

Committed r145745: &lt;http://trac.webkit.org/changeset/145745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854573</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 13:31:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192866</attachid>
            <date>2013-03-12 21:12:42 -0700</date>
            <delta_ts>2013-03-12 21:23:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112225-20130312210840.patch</filename>
            <type>text/plain</type>
            <size>94306</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMzOGFmNGQ1NDdmOWRm
ZWM3ZWViZmU4Yjc3MjM1NDIyMzExMWRhYi4uNGVlZDcyYTdlNjgwZDUyZWIyMjcyMGI1ZGFmNzRh
ZDkxZWFjNGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEzLTAzLTEyICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zIGZvciBkb2N1bWVudCB0eXBlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRvKiBoZWxwZXIgZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAg
ICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0
cnVjdHVyZS4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRvY3VtZW50KToKKyAgICAgICAgLi4u
LmxvdCBvZiBmaWxlcy4KKworMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGggdG8qIGhlbHBl
ciBmdW5jdGlvbnMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTIxNjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM0ZjFmOTkxY2U4Mjk5OGI2NDNlZWFhN2E0NTRk
NzBiN2Q2NDg2MjEuLmYzYmU5ZmJlMDRhNTIzMWVkZGFhZDg5Njk0ZTJlOTM0YTNhYzU3MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGlu
ZmVybm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGgg
dG8qIGZ1bmN0aW9ucyBmb3IgZG9jdW1lbnQgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTURvY3VtZW50Lm1tOiBSZW1vdmUgdGhlIHJlZHVuZGFudCBoZWxwZXIuCisKIDIw
MTMtMDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggZjk4N2Qw
ZmJjZDExNDhmOGEzN2VlNjc5YmM2ZWJkYzhmODc4N2EyNC4uOTgyYjhkNDdhYTdhOWY0ZTkxYzY2
NzdiYjViNzA0N2ZjMTZlMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBHZW9sb2NhdGlv
bjo6fkdlb2xvY2F0aW9uKCkKIERvY3VtZW50KiBHZW9sb2NhdGlvbjo6ZG9jdW1lbnQoKSBjb25z
dAogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0K
IAogRnJhbWUqIEdlb2xvY2F0aW9uOjpmcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IGQwMTIwZjYwYTg5YWRmZmI3
ZDE2NWM5YWFiNzNmOWY3NmYzMTEwYjAuLjRiMDJiMTE2NGQ0MGE0MTljMzY3Zjk0ZDIzZWViYzIz
NmRhZmFkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBib29sIGlzQ29udGV4dFZhbGlkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSB8fCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgaWYgKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCkgJiYg
ZG9jdW1lbnQtPnBhZ2UoKTsKICAgICB9CiAjaWYgIUVOQUJMRShXT1JLRVJTKQpAQCAtODQsNyAr
ODQsNyBAQCBzdGF0aWMgU3RyaW5nIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIEFTU0VSVChpc0NvbnRleHRWYWxpZChjb250
ZXh0KSk7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAgICByZXR1cm4g
ZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5ncm91cFNldHRpbmdzKCktPmluZGV4ZWREQkRhdGFi
YXNlUGF0aCgpOwogICAgIH0KICNpZiBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNmYxOWVhZmYyNmRmMTU4NmU2YzE4ZmRiYjIyYmFjYjAxMWU2OWRlZS4uN2Y4ZmVlMjg3MjY3
NDM3OWJhMGUxNGU5ZDdkNTVmNzkwM2M4MTdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cgogICAgICwgbV9zdG9wcGVkKGZhbHNl
KQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCkp
IHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGI5
NDk0MDAyYTkyZjRjZTFjZmM5ZmMzYjNiY2YzMmFlMzY4Y2QzNzQuLjQ2NDdjMTZlNDVkZTgxZDQx
OWJmMDkxMzU5NjllODE2Y2IzYTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMTE5LDcgKzExOSw3
IEBAIERvY3VtZW50KiBVc2VyTWVkaWFSZXF1ZXN0Ojpvd25lckRvY3VtZW50KCkKIHsKICAgICBp
ZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIHJldHVybiB0
b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCmluZGV4IDUyZWM2MThkNTlkZTE4YTNkNDM1NGQyODFhNTk3YTZhNGY0MGYw
MzcuLmUxOTU5NTAzZDdkYjIwMmE3NzA4ZjQyOGI0ZGEwNTRhMGUzODJlMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAsIG1fdGFz
a1RpbWVyKGFkb3B0UHRyKG5ldyBUaW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3RpZmljYXRp
b246OnRhc2tUaW1lckZpcmVkKSkpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9
IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KS0+ZG9tV2luZG93KCkpOworICAgIG1fbm90aWZpY2F0aW9uQ2Vu
dGVyID0gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyh0b0RvY3Vt
ZW50KGNvbnRleHQpLT5kb21XaW5kb3coKSk7CiAgICAgCiAgICAgQVNTRVJUKG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKSk7CiAgICAgbV90YXNrVGltZXItPnN0YXJ0T25lU2hvdCgwKTsK
QEAgLTE3MSw5ICsxNzEsOSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgLy8gcHJl
dmVudCBkb3VibGUtc2hvd2luZwogICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3RpZmlj
YXRpb25DZW50ZXItPmNsaWVudCgpKSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAg
ICAgIGlmICghc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
LT5wYWdlKCkpCisgICAgICAgIGlmICghdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLT5wYWdlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChOb3RpZmljYXRp
b25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQp
IHsKKyAgICAgICAgaWYgKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20odG9Eb2N1bWVudChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNz
aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJt
aXNzaW9uQWxsb3dlZCkgewogICAgICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI2MCw4ICsyNjAsOCBAQCB2b2lkIE5vdGlm
aWNhdGlvbjo6dGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uPiogdGltZXIpCiBjb25z
dCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29u
dGV4dCktPnBhZ2UoKSk7Ci0gICAgcmV0dXJuIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9u
Q29udHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkp
LT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsKKyAgICBBU1NFUlQodG9Eb2N1
bWVudChjb250ZXh0KS0+cGFnZSgpKTsKKyAgICByZXR1cm4gcGVybWlzc2lvblN0cmluZyhOb3Rp
ZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHRvRG9jdW1lbnQoY29udGV4dCktPnBhZ2UoKSktPmNs
aWVudCgpLT5jaGVja1Blcm1pc3Npb24oY29udGV4dCkpOwogfQogCiBjb25zdCBTdHJpbmcmIE5v
dGlmaWNhdGlvbjo6cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Np
b24gcGVybWlzc2lvbikKQEAgLTI4Niw4ICsyODYsOCBAQCBjb25zdCBTdHJpbmcmIE5vdGlmaWNh
dGlvbjo6cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcGVy
bQogdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
PiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250
ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNv
bnRleHQpLT5wYWdlKCkpOwotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xpZW50KCktPnJlcXVlc3RQZXJt
aXNzaW9uKGNvbnRleHQsIGNhbGxiYWNrKTsKKyAgICBBU1NFUlQodG9Eb2N1bWVudChjb250ZXh0
KS0+cGFnZSgpKTsKKyAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHRvRG9jdW1lbnQo
Y29udGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lvbihjb250ZXh0LCBj
YWxsYmFjayk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hHcmFtbWFyLmNwcAppbmRleCA1MGExNDA2MDA1NmRlMzFlNjk1ZGQ0MDQ1NzM1MmMx
MmNlNzk3NWFmLi43MmEwYWFlMDhkNjRiN2RlMmM3NGRjMGJlMjE3NTI5MDAyMjg1M2EyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IFNwZWVjaEdyYW1tYXI6OmNy
ZWF0ZShjb25zdCBLVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpCiB2b2lkIFNwZWVjaEdyYW1tYXI6
OnNldFNyYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBTdHJpbmcmIHNyYykKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKICAgICBtX3NyYyA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChzcmMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAK
aW5kZXggOTg1M2VmN2EwNDA0NGNjYTBjNzlkNjAyMDYxMDE0MTJmNjkxNjE3ZS4uOTUzYjUxMjJi
YjkxZDMwODczYmQ0ZDk1ZGIxNjliMDFiMjhhODI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcApAQCAtNDksNyArNDksNyBA
QCBTcGVlY2hHcmFtbWFyKiBTcGVlY2hHcmFtbWFyTGlzdDo6aXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KSBjb25zdAogdm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRkRnJvbVVyaShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHNyYywg
ZG91YmxlIHdlaWdodCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKICAgICBtX2dyYW1tYXJzLmFwcGVuZChTcGVlY2hHcmFtbWFyOjpjcmVhdGUoZG9jdW1lbnQt
PmNvbXBsZXRlVVJMKHNyYyksIHdlaWdodCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggYmVkYTgyNzhmYzNm
NmQzYjk1OWM3YTZmY2QwMGU4MzdmNzgxYzU3ZC4uNjVkMjcwNzk3MzcwOTI4NDE4N2QxYjIyMzY2
OTE5MzRhZjYyMDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIFNwZWVjaFJlY29nbml0
aW9uOjpTcGVlY2hSZWNvZ25pdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgICwgbV9zdGFydGVkKGZhbHNlKQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzRG9jdW1lbnQoKSk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwCmluZGV4IDNmZTM2MjczOWIwNGI4YzdlMDg2YTNlMTZmNDdjODZjYjQ5ZDk4ZWIuLmUyMjAx
MmI0YzQxM2QwNTZiYTQyNDlhY2E1ZTZmZjNkZTNkOThhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAt
NDMsNyArNDMsNyBAQCBQYXNzUmVmUHRyPE9mZmxpbmVBdWRpb0NvbnRleHQ+IE9mZmxpbmVBdWRp
b0NvbnRleHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7
CiAKICAgICAvLyBGSVhNRTogb2ZmbGluZSBjb250ZXh0cyBoYXZlIGxpbWl0YXRpb25zIG9uIHN1
cHBvcnRlZCBzYW1wbGUtcmF0ZXMuCiAgICAgLy8gQ3VycmVudGx5IGFsbCBBdWRpb0NvbnRleHRz
IG11c3QgaGF2ZSB0aGUgc2FtZSBzYW1wbGUtcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAppbmRleCAwZTgxOGFl
ZGM1ZGYyM2IxYzQ0ZGYxZDFkODk3MDk5NjljNzI1ZTM3Li43OThiMzk5MTFkNDZjZjcwYmUwNTc0
NmU0YWI0M2FlZDZiNWMyZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9v
bCBEYXRhYmFzZUNvbnRleHQ6OnN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVy
KiBjbGVhbnVwU3luYykKIGJvb2wgRGF0YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNz
KCkgY29uc3QKIHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlmICghZG9j
dW1lbnQtPnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0YWJhc2VBY2Nlc3NJ
blByaXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIx
OCw3ICsyMTgsNyBAQCBib29sIERhdGFiYXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2Vzcygp
IGNvbnN0CiB2b2lkIERhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0
IFN0cmluZyYgbmFtZSwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMpCiB7CiAgICAgaWYgKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOwogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkp
CiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShkb2N1bWVudC0+ZnJhbWUoKSwgbmFtZSwgZGV0YWlscyk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk1ZjQ1ZWE1MWRhNmY4NjE1Njlm
ZjEzY2RkYTM3ZGY0N2RkOTMyMGMuLmMyOTEwOTU0ZDU5MjI2ZTUwZTBlZmY3OTcyNGRiZmU1NmI0
Mjk2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNjYsNyArNjYsNyBA
QCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlKFNjcmlwdAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQogCiAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNEb2N1bWVudCgp
KTsKLSAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCksIGNsaWVudCk7CisgICAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw6OmNy
ZWF0ZSh0b0RvY3VtZW50KGNvbnRleHQpLCBjbGllbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCmluZGV4IDE2NTQ1YTQxMTI5NmJjN2UyZjU2ODJjZGMxZTc2MTZiZjg2NTM2NzIuLmMzM2M3
NDcxMDY1N2JmMzdhM2Y0NzkwYjJhM2E4ODc2Y2MxOTY5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAg
dm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwcm90b2NvbHMsIEV4Y2UKICAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGNo
ZWNrIHRoZSBpc29sYXRlZCB3b3JsZCdzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IG9uY2Ugd2Vi
a2l0Lm9yZy9iLzEwNDUyMCBpcyBzb2x2ZWQuCiAgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZTsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSA9
IGRvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQoKS0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5KCk7CiAgICAgfQogICAgIGlmICghc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5ICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Nvbm5lY3RUb1NvdXJjZShtX3VybCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAKaW5kZXggZmQ4ZDM2ZGU1ZjQ1NmJiODNlOGUwODg3OTJjZTY4OGYyMWVmNzk0My4u
Y2RjM2JjNGRkYzkzMmIzMWMyNDk0NTljOTljYjc1NDU2OTk4OTI1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHAKQEAgLTE5OSw3ICsxOTksNyBAQCBDU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50
SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiAKICAgICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRo
ZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKICAgICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkp
IHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPiht
X2NvbnRleHQpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fY29u
dGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShkb2N1bWVudCwgdXJsKTsKICAgICAgICAgaWYgKCFjb29raWUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgZmllbGRzLmFwcGVuZCgiQ29va2llOiAiICsgY29va2llKTsKQEAgLTI1MSw3ICsy
NTEsNyBAQCBQYXNzUmVmUHRyPFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q+IFdlYlNvY2tldEhh
bmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdAogCiAgICAgS1VSTCB1cmwgPSBodHRwVVJM
Rm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1
bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4obV9jb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVu
dChtX2NvbnRleHQpOwogICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoZG9jdW1lbnQsIHVybCk7CiAgICAgICAgIGlmICghY29va2llLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJlcXVlc3QtPmFkZEhlYWRlckZpZWxkKCJDb29raWUiLCBjb29raWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMTQzYzhm
MmIwYTdhZmY3NWQ0MDEyMjc2Y2Y3ZTg5MjZmYjQ2ZjIyMC4uYjE2ZGZkMjMyN2FmZDEyNDQwNTVh
YTA4MzU3ZTE3M2E5ZDgyZWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6cmVzdW1lKCkKIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiAgICAg
OiBtX3dvcmtlckNsaWVudFdyYXBwZXIoY2xpZW50V3JhcHBlcikKICAgICAsIG1fbG9hZGVyUHJv
eHkobG9hZGVyUHJveHkpCi0gICAgLCBtX21haW5XZWJTb2NrZXRDaGFubmVsKFdlYlNvY2tldENo
YW5uZWw6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLCB0aGlzKSkKKyAg
ICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHRvRG9j
dW1lbnQoY29udGV4dCksIHRoaXMpKQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZSkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNDFlOWNh
MTcyM2RjNTdiNmFmZWUwODYwZjljNmZkMjZhMDI4NGQxYi4uZTVmMDU4OTE5YmQ1MzA4ZTk0ZDUz
YTgxMDE1NDkwMjRlMTBlOGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yODAxLDcgKzI4
MDEsNyBAQCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
cmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSBjb25zdAogICAgIGlmICghZG9jIHx8ICFkb2MtPmlzU1ZH
RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgU1ZHU1ZHRWxlbWVudCog
cm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGRvYyktPnJvb3RFbGVtZW50
KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50KGRvYykt
PnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlclJvb3QgPSByb290RWxlbWVudC0+cmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVJlcXVlc3RTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKaW5kZXgg
MzJkNGVkYzlmMjMzYmM0YTk1ZDFkZGE0MDFjNDdhYTY3YjhjMmFkMS4uNDFkMzM2ZWU2MTEyMzk1
NWFiNjQxMjM3MmI4MTE0NjFmMWE5YmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NUmVxdWVzdFN0YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICAs
IG1fZXhlYygwKQogICAgIHsKICAgICAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiAgICAgICAgICAgICBtX2V4ZWMgPSBzY3JpcHRTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBkb2N1bWVudC0+cGFnZSgpKTsKICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFC
TEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9Db250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcAppbmRleCA2MWQ3ODdkNGZlMjE1MDE5MjJmMTEyMmYwMzQyMzcyODcw
MjNjNjdlLi4xMjllNjVkMWQ4Y2IyZDljNzQ3Zjg4ODU2ZTUyZjllMzU1YTA1NjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0Nv
bnRleHRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNBdWRpb0NvbnRleHQoCiAgICAgaWYgKCFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkF1ZGlvQ29udGV4dCBjb25z
dHJ1Y3RvciBjYWxsZWQgaW4gYSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgd2hpY2ggaXMgbm90
IGEgZG9jdW1lbnQiKSk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICBSZWZQdHI8QXVk
aW9Db250ZXh0PiBhdWRpb0NvbnRleHQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCmluZGV4IGFmNjk5ODM5NzkzNDgwMTBlNTIzMmRkYjA5N2U2M2M5NTVl
ZTAwNWMuLmJiMGQ4OWM4MDMwNzBhMzAyZjM1OWU0ODA5YzllOTUxMjk0MzZiMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC04Miw3ICs4Miw3IEBAIGNs
YXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgcHVibGljOgogICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICAgICAgcmV0dXJuIHRv
RG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgfQogCiAgICAgcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IGQ1YTk1YjE5OGNlN2E3YTRhODFiYjIzM2QwODNhMTQwNjkxM2ExMjYuLjkx
ZmZhYjgwMDY5NzAzZjNhNjEyZWExNGI4MTIwZjY0ZjQxYWU2OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTExMyw3ICsxMTMs
NyBAQCBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChEb2N1bWVudCogZG9j
dW1lbnQsIEpTQzo6RXhlY1N0YXRlKiBleGVjKQogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01H
bG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgZXhlYyk7CisgICAg
ICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCksIGV4ZWMpOwogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgaWYgKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQpAQCAtMTMyLDcgKzEzMiw3IEBAIEpT
RE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCwg
RE9NV3JhcHBlcldvcmxkKiB3b3JsCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9i
amVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBET01X
cmFwcGVyV29ybGQqIHdvcmxkKQogewogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIHdvcmxkKTsKKyAgICAgICAg
cmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3QodG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KSwgd29ybGQpOwogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgaWYgKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDI1YjUzMzkxYmI1Yzg2NzMzNjMx
MWE5ODA0ZDRkMzYzYmEwZWEyYWIuLmYyZDkyYjRiMmY5MGU0YzRlYTUyYTlhNDU0OTY3YmYwNmJi
OGI0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1l
bnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgQXRv
bWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIChzdGF0aWNfY2Fz
dDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCktPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5h
bWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkpKSB7
CisgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgKHRvSFRNTERvY3VtZW50KGRvY3Vt
ZW50KS0+aGFzTmFtZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhhc0Vs
ZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0
Q3VzdG9tKHRoaXNPYmplY3QsIG5hbWVkSXRlbUdldHRlcik7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIGJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgp
LT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewogICAg
ICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgKHN0
YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21pY1By
b3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhhc0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVydHlO
YW1lKSkpIHsKKyAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiAodG9IVE1MRG9jdW1l
bnQoZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8fCBkb2N1bWVu
dC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICAgICAg
c2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgbmFtZWRJdGVtR2V0dGVyKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBKU0RPTVdp
bmRvdzo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHIKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkt
PmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgp
KSB7CiAgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IGZpbmRB
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFt
ZSAmJiAoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0o
YXRvbWljUHJvcGVydHlOYW1lKSB8fCBkb2N1bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQ
cm9wZXJ0eU5hbWUpKSkgeworICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmICh0b0hU
TUxEb2N1bWVudChkb2N1bWVudCktPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8
IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkpKSB7CiAgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRo
aXNPYmplY3QsIG5hbWVkSXRlbUdldHRlcik7CiAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERl
c2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggM2M2ODkzYjAwODc5NDkwNTNmZmYzM2Q1
YzM0MWY1MThhMDYyYThlNC4uZTY4ODVlMWYwMDdmMTk2NmZlNzUxNWJmYWEzMjgzZDA4Mzg0Y2E5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIEpTSFRNTERvY3VtZW50OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgUHJvcAogSlNW
YWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNIVE1MRG9jdW1l
bnQqIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MRG9jdW1lbnQqPihhc09iamVjdChzbG90QmFzZSkp
OwotICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
Pih0aGlzT2JqLT5pbXBsKCkpOworICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSB0b0hUTUxE
b2N1bWVudCh0aGlzT2JqLT5pbXBsKCkpOwogCiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBj
b2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIApAQCAtODksNyArODksNyBAQCBKU1ZhbHVlIEpT
SFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICh2KQogICAg
ICAgICByZXR1cm4gdjsKIAotICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBz
dGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKCkpLT5hbGwoKSk7CisgICAgcmV0dXJuIHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIHRvSFRNTERvY3VtZW50KGltcGwoKSktPmFsbCgpKTsK
IH0KIAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVu
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVy
IGJyb3dzZXJzLCBwYXNzIG9wZW4gY2FsbHMgd2l0aCBtb3JlIHRoYW4gMiBwYXJhbWV0ZXJzIHRv
IHRoZSB3aW5kb3cuCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDIpIHsKLSAgICAg
ICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKS0+ZnJh
bWUoKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gdG9IVE1MRG9jdW1lbnQoaW1wbCgpKS0+ZnJh
bWUoKTsKICAgICAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxs
KiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50V29ybGQoZXhlYykp
OwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBKU1ZhbHVl
IEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBEb2N1bWVudCogYWN0
aXZlRG9jdW1lbnQgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PmltcGwoKS0+ZG9jdW1lbnQoKTsKIAogICAgIC8vIEluIHRoZSBjYXNlIG9mIHR3byBwYXJhbWV0
ZXJzIG9yIGZld2VyLCBkbyBhIG5vcm1hbCBkb2N1bWVudCBvcGVuLgotICAgIHN0YXRpY19jYXN0
PEhUTUxEb2N1bWVudCo+KGltcGwoKSktPm9wZW4oYWN0aXZlRG9jdW1lbnQpOworICAgIHRvSFRN
TERvY3VtZW50KGltcGwoKSktPm9wZW4oYWN0aXZlRG9jdW1lbnQpOwogICAgIHJldHVybiB0aGlz
OwogfQogCkBAIC0xNTcsMTMgKzE1NywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG9jdW1lbnRX
cml0ZShFeGVjU3RhdGUqIGV4ZWMsIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIE5ld2xpbgogCiBK
U1ZhbHVlIEpTSFRNTERvY3VtZW50Ojp3cml0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgZG9j
dW1lbnRXcml0ZShleGVjLCBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKCkpLCBEb05v
dEFkZE5ld2xpbmUpOworICAgIGRvY3VtZW50V3JpdGUoZXhlYywgdG9IVE1MRG9jdW1lbnQoaW1w
bCgpKSwgRG9Ob3RBZGROZXdsaW5lKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAog
SlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6d3JpdGVsbihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
ZG9jdW1lbnRXcml0ZShleGVjLCBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKCkpLCBE
b0FkZE5ld2xpbmUpOworICAgIGRvY3VtZW50V3JpdGUoZXhlYywgdG9IVE1MRG9jdW1lbnQoaW1w
bCgpKSwgRG9BZGROZXdsaW5lKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApp
bmRleCA4NzQ0OWFmNzEyMzZmN2U3ZDJmZWQ0OWI5MTVjMTgzMDQ3NGQyYzAyLi4zZGY2NjQ0YzRi
OTY5YWYxOWIxMTVmODg2Y2E5OTU4Mjg4MTBhMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAtODIsNyArODIsNyBAQCBK
U09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGlmIChtX2NvZGUuaXNOdWxsKCkgfHwgbV9ldmVu
dFBhcmFtZXRlck5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihleGVjdXRpb25Db250ZXh0KTsK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGV4ZWN1dGlvbkNvbnRleHQpOwog
CiAgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCA5OWYyZDU1MjJiY2Y5
MGEwNDlkMDI0YjQ1MmI2ZjNlMGM5MDA1YjQ0Li4wZjc0YWE1MWQxN2QyZTk2YTM2MzljNmI1MGZm
ZTIyZDIyZmQwYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNy
ZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iagogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAg
ICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgdGhlIGRvY3VtZW50IGl0c2VsZiBpbiB0aGUg
cGVyLWRvY3VtZW50IGRpY3Rpb25hcnkKLSAgICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHRvRG9jdW1lbnQobm9kZSkpOwogICAgICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBEb2N1bWVudFR5cGUsIG5vZGUp
OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcAppbmRleCBmZTUxYzg0ZTQzMzkyNWFkMjUxY2RlYjExOWJjYmU5Y2M4
NGM4OTNiLi5hOGMwYzgzYTBkNjdjYzNhYjljNjk0MTQwMzQxNzljNjE3NjQ1ZTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgU2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGZ1bmN0aW9uLCBET01XcmFwcGVyV28KIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpl
eGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgZXhlY3V0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpKTsKKyAgICAgICAgZXhlY3V0ZSh0b0RvY3VtZW50KGNvbnRleHQpKTsKICNpZiBF
TkFCTEUoV09SS0VSUykKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQtPmlzV29y
a2VyQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZWYyMGY5ZmVlZDNjZDRmM2E2Mjg2NzA5ZmY3MDU0NTlm
OTM2ZTkyZi4uOGZlZDE4ZTBjZDhlMDU2ZTQ2YzU0MTg4OWFkNDYwOTQ4YzY3ZjYyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTMyMjAsNyArMzIyMCw3IEBAIEVORAogICAgICAgICAgICAgbXkgJGVuYWJsZUZ1bmN0aW9u
ID0gR2V0Q29udGV4dEVuYWJsZUZ1bmN0aW9uKCRydW50aW1lRnVuYy0+c2lnbmF0dXJlKTsKICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRydW50aW1lRnVuYy0+c2lnbmF0dXJlKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiAke2VuYWJsZUZ1bmN0aW9ufShz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkge1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkg
JiYgJHtlbmFibGVGdW5jdGlvbn0odG9Eb2N1bWVudChjb250ZXh0KSkpIHtcbiIpOwogICAgICAg
ICAgICAgbXkgJG5hbWUgPSAkcnVudGltZUZ1bmMtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCIke25hbWV9IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoJHtp
bnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7bmFtZX1NZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAw
YTRjYzMzM2EyOTIyMTM0YzNkODUyZmQzMmRkY2U2MjBiZjJjZDE0Li5lNzJkMTZlMDQ5YzhjMTEx
MzNkMDk4YmYzNWIzZTY1MWIyYzJiOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMzE5NSwxMCArMzE5NSwx
MCBAQCB2b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVz
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdAogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2ln
bmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
cHJvdG8tPkNyZWF0aW9uQ29udGV4dCgpKTsKLSAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5p
c0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDFF
bmFibGVkKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkpKSB7CisgICAgaWYgKGNvbnRl
eHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpICYmIENvbnRleHRGZWF0dXJlczo6ZW5hYmxlZFBl
ckNvbnRleHRNZXRob2QxRW5hYmxlZCh0b0RvY3VtZW50KGNvbnRleHQpKSkgewogICAgICAgICBw
cm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZW5hYmxlZFBlckNvbnRleHRNZXRob2Qx
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQ
ZXJDb250ZXh0TWV0aG9kMU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2ln
bmF0dXJlKS0+R2V0RnVuY3Rpb24oKSk7CiAgICAgfQotICAgIGlmIChjb250ZXh0ICYmIGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxlZChz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkgeworICAgIGlmIChjb250ZXh0ICYmIGNv
bnRleHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxl
ZCh0b0RvY3VtZW50KGNvbnRleHQpKSkgewogICAgICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiZW5hYmxlZFBlckNvbnRleHRNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMk1ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJlKS0+R2V0RnVuY3Rpb24o
KSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZjk1ZTJhYTEzNzVlNDIwNDIxZDRkMjcxOGEyMTBh
Mzg1MTQ0NjA3NC4uMjdlODAxNTFjNTI1NzZlOTRjMWY2ZTA0ZjdlMjg0ZmEyMTQwZjIwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dENsaWVudE1lc3NhZ2VMb29wKFBhc3NPd25QdHI8Q2xpZW50TWVzc2FnZUxvb3A+IGMKIHZvaWQg
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpjb21waWxlU2NyaXB0KFNjcmlwdFN0YXRlKiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgU3RyaW5n
KiBzY3JpcHRJZCwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKQogewogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0ZS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmZyYW1lKCk7CisgICAgUmVmUHRyPEZy
YW1lPiBwcm90ZWN0ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+ZnJhbWUo
KTsKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29tcGlsZVNjcmlwdChzdGF0ZSwgZXhwcmVzc2lv
biwgc291cmNlVVJMLCBzY3JpcHRJZCwgZXhjZXB0aW9uTWVzc2FnZSk7CiAgICAgaWYgKCFzY3Jp
cHRJZC0+aXNOdWxsKCkpCiAgICAgICAgIG1fY29tcGlsZWRTY3JpcHRVUkxzLnNldCgqc2NyaXB0
SWQsIHNvdXJjZVVSTCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXI6OnJ1blNjcmlwdChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgc2NyaXB0
SWQKICAgICBTdHJpbmcgc291cmNlVVJMID0gbV9jb21waWxlZFNjcmlwdFVSTHMudGFrZShzY3Jp
cHRJZCk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gc3RhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBGcmFtZSogZnJhbWUg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFtZSgp
OworICAgIEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkt
PmZyYW1lKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZTsKICAg
ICBpZiAoZnJhbWUpCiAgICAgICAgIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEV2YWx1YXRlU2NyaXB0KGZyYW1lLCBzb3VyY2VVUkwsIFRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2VkSW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggZTVhZTdjM2E0MWRlNDFmMjIyZDg4
MzhjYzFmZDVlZWQ4YTZlM2U2My4uYWUyZjE3MjYzNGNhZWY5ODQ4Y2VjNTRkM2JiOTFiMjI5YzZj
MmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24u
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIFNjaGVkdWxlZEFjdGlvbjo6flNjaGVkdWxlZEFjdGlvbigp
CiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRnJh
bWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAg
ICAgICAgRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+ZnJhbWUoKTsKICAgICAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFmcmFtZS0+
c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGM1MDUzYmE5Y2M5ZmM1ZWIz
ZGU3YzZhYzg3MTlmYTRmMWNhMjU3YjQuLmViOGFjNGEyMTZlZTNlZWNkZDc0ZmQwNTYxYzU3NmI3
NDQwODExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAt
MjYxLDcgKzI2MSw3IEBAIEZyYW1lKiB0b0ZyYW1lSWZOb3REZXRhY2hlZCh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0KQogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUm
IHdvcmxkQ29udGV4dCkKIHsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAg
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5m
cmFtZSgpKQorICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+
ZnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiB3b3JsZENvbnRleHQuYWRqdXN0ZWRDb250ZXh0
KGZyYW1lLT5zY3JpcHQoKSk7CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgfSBlbHNlIGlmIChj
b250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkgewpAQCAtMjc1LDcgKzI3NSw3IEBAIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgV29ybGRDCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CiAg
ICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKSkgeworICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+ZnJhbWUoKSkgewogICAgICAg
ICAgICAgLy8gRklYTUU6IFN0b3JlIHRoZSBET01XcmFwcGVyV29ybGQgZm9yIHRoZSBtYWluIHdv
cmxkIGluIHRoZSB2ODo6Q29udGV4dCBzbyBjYWxsZXJzCiAgICAgICAgICAgICAvLyB0aGF0IGFy
ZSBsb29raW5nIHVwIHRoZWlyIHdvcmxkIHdpdGggRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdv
cmxkKHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpCiAgICAgICAgICAgICAvLyB3b24ndCBlbmQg
dXAgcGFzc2luZyBudWxsIGhlcmUgd2hlbiBsYXRlciB0cnlpbmcgdG8gZ2V0IHRoZWlyIHY4OjpD
b250ZXh0IGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEV2
ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3Rl
bmVyLmNwcAppbmRleCA4NzFjMzI4YjI1M2FhOTMyY2YxMjI4ZTIxOTNlNGQwMGJmNGU2OGEwLi5j
YjgwZjMyNjQyOWNlNDJlZTU3YWM2MTZhNjRkOTdmNTAwNmUxZDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKLSAgICBGcmFtZSogZnJh
bWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpOworICAgIEZyYW1l
KiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggYTc0ZTVi
MDliMmI0Mzg1OTk2NzY0MTI5MjBmMDJiYjhlZjNjNjVkZC4uOTI5YjUwMzYyYTYxNzg0YTA2Mjg3
YzBmZDBmYTEwMDJhMmU0Mjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ28KICAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRv
RG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKQEAgLTExMywxMyArMTEzLDEzIEBAIHZvaWQg
VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKGhhc0V4aXN0aW5nTGlzdGVuZXJPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiAhc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93SW5saW5lRXZlbnRIYW5kbGVycyhtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbi5tX2xpbmUpKQor
ICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgIXRvRG9jdW1lbnQoY29udGV4dCktPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lubGluZUV2ZW50SGFuZGxlcnMobV9zb3VyY2VV
UkwsIG1fcG9zaXRpb24ubV9saW5lKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwogCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
Ci0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJh
bWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0b0RvY3VtZW50KGNvbnRleHQpLT5mcmFtZSgpOwog
ICAgIEFTU0VSVChmcmFtZSk7CiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVT
Y3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggZmI3NDJiNGM3N2JhOGMxMjgzODc2ZGI2YWNkOWYwNWI2YjYzZmRmOC4uNTk1
YmRmODk5ZmRmY2Y2M2EzMWU5MDIwZDBlMDhlYTAxMmNiNzZlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBA
IC00ODMsNyArNDgzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1l
ZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICBEb2N1bWVudCog
ZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CiAKICAgICBpZiAoZG9jICYmIGRvYy0+aXNIVE1MRG9j
dW1lbnQoKSkgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jKS0+
aGFzTmFtZWRJdGVtKHByb3BOYW1lLmltcGwoKSkgfHwgZG9jLT5oYXNFbGVtZW50V2l0aElkKHBy
b3BOYW1lLmltcGwoKSkpIHsKKyAgICAgICAgaWYgKHRvSFRNTERvY3VtZW50KGRvYyktPmhhc05h
bWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFzRWxlbWVudFdpdGhJZChwcm9wTmFt
ZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGl0ZW1zID0g
ZG9jLT53aW5kb3dOYW1lZEl0ZW1zKHByb3BOYW1lKTsKICAgICAgICAgICAgIGlmICghaXRlbXMt
PmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChpdGVtcy0+aGFzRXhhY3RseU9uZUl0
ZW0oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERv
Y3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERv
Y3VtZW50Q3VzdG9tLmNwcAppbmRleCA2MDhlNzA4NGVlMDVmMWY1NjI5YzQ4ZTNlNmFmNWM2ZjY0
MDI0NDg3Li4zZDcxZWE2ODEzODc0MGIzMzk0NTkxN2RiYTAwZGY3MjczMmRkOWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0
b20uY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKERv
Y3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGUKIHsKICAg
ICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGltcGwtPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAg
IHJldHVybiB3cmFwKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gd3JhcCh0b0hUTUxEb2N1bWVudChpbXBs
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChp
bXBsLT5pc1NWR0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PFNW
R0RvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJl
dHVybiB3cmFwKHRvU1ZHRG9jdW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiAjZW5kaWYKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50
OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYg
KHdyYXBwZXIuSXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCA3YzJmZjlkZWVjMWNlODI1MWU5YWIzMGY4OGI3
ODUwYjRjOTMwNzQ4Li5jMTdmNmUzMDQyNGFiNDAxODQxNTdkNTc0ZDlhMTAzOTk2ZDZiNjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9t
LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChOb2Rl
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwKICAgICBjYXNl
IE5vZGU6OkNPTU1FTlRfTk9ERToKICAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8Q29t
bWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIHdyYXAo
dG9Eb2N1bWVudChpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5v
ZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8
RG9jdW1lbnRUeXBlKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCmluZGV4IDdiMzgzMWI3ZTI2ZTA4MTk3YmUzNWVmOGI0M2ExZDVmMTllZjdmNmUuLjVj
Y2Q3YWNkN2FmMGVmZTIxMjFjMTNiOTAyMzViMDFhMmU3MTMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgaW5saW5lIEV4Y2Vw
dGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUq
IG5ldwogICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwogCiAgICAgaWYgKG9s
ZENoaWxkICYmIG5ld1BhcmVudC0+aXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBpZiAoIXN0
YXRpY19jYXN0PERvY3VtZW50Kj4obmV3UGFyZW50KS0+Y2FuUmVwbGFjZUNoaWxkKG5ld0NoaWxk
LCBvbGRDaGlsZCkpCisgICAgICAgIGlmICghdG9Eb2N1bWVudChuZXdQYXJlbnQpLT5jYW5SZXBs
YWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKSkKICAgICAgICAgICAgIHJldHVybiBISUVSQVJD
SFlfUkVRVUVTVF9FUlI7CiAgICAgfSBlbHNlIGlmICghaXNDaGlsZFR5cGVBbGxvd2VkKG5ld1Bh
cmVudCwgbmV3Q2hpbGQpKQogICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDg0
NGUwZThiM2Q5OWYyMjlmY2MyZjIzMzRkNDAzNTI1NGI1NjQwODMuLmNlMWJlZTJjMmM4MWJhNjNl
NGM0NTc4MGJjNzRhODZmMTM2MTkxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7IH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0
b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggZDhiMGNkOTA1NTA2NWYzNzhkYTY3ODFhZWIy
MDE3ZDNiM2E3YTZmYS4uNDg4NjNiYjE1YTAwOGZlZTQ1MDgxOWM4ZDZlZTIyMThhYmE3YmQ3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKQEAgLTE2
NCw3ICsxNjQsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYQogCiBpbmxpbmUgRG9jdW1lbnQq
IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZG9jdW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0
dXJuIHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggYzU4NDdhZmQ4MjBhMjE3ZDQ4MTE0MDk5OTA0MGFiZTk3YjBm
N2VlNi4uOWQ1ZTc0ZTZjMjIwMDUxNjA2YjM3YTk4OGQ0MWQ0ZGJmZjRjNjlmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0yODY0LDcgKzI4NjQsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9j
ZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCkK
ICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc2V0Q29va2llIHdvcmsgb24gWE1MIGRvY3VtZW50cyB0
b287IGUuZy4gaW4gY2FzZSBvZiA8aHRtbDptZXRhIC4uLi4uPgogICAgICAgICBpZiAoaXNIVE1M
RG9jdW1lbnQoKSkgewogICAgICAgICAgICAgLy8gRXhjZXB0aW9uIChmb3Igc2FuZGJveGVkIGRv
Y3VtZW50cykgaWdub3JlZC4KLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+
KHRoaXMpLT5zZXRDb29raWUoY29udGVudCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgICAg
ICB0b0hUTUxEb2N1bWVudCh0aGlzKS0+c2V0Q29va2llKGNvbnRlbnQsIElHTk9SRV9FWENFUFRJ
T04pOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwg
ImNvbnRlbnQtbGFuZ3VhZ2UiKSkKICAgICAgICAgc2V0Q29udGVudExhbmd1YWdlKGNvbnRlbnQp
OwpAQCAtNTc1NSw3ICs1NzU1LDcgQEAgTm9kZSogZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1lbnQo
RG9jdW1lbnQqIGRvYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgTm9kZSogbm9kZSA9IGRvYy0+
Zm9jdXNlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUgJiYgZG9jLT5pc1BsdWdpbkRvY3VtZW50KCkp
IHsKLSAgICAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdpbkRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
UGx1Z2luRG9jdW1lbnQqPihkb2MpOworICAgICAgICBQbHVnaW5Eb2N1bWVudCogcGx1Z2luRG9j
dW1lbnQgPSB0b1BsdWdpbkRvY3VtZW50KGRvYyk7CiAgICAgICAgIG5vZGUgPSAgcGx1Z2luRG9j
dW1lbnQtPnBsdWdpbk5vZGUoKTsKICAgICB9CiAgICAgaWYgKCFub2RlICYmIGRvYy0+aXNIVE1M
RG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTQxYTA1ZGUxMzQ4MTJhODUzZGNm
NTBhYTIwOWFmM2FlZGEwN2ZlYi4uMzNiZTgwMzIxNjdlYjNkODdhZmE5NjJjOTBhNmQ3ZGRhNzNi
ODMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyMTQsNyArMTIxNCw3IEBAIHByaXZhdGU6
CiAgICAgdHlwZWRlZiB2b2lkICgqQXJndW1lbnRzQ2FsbGJhY2spKGNvbnN0IFN0cmluZyYga2V5
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVudCosIHZvaWQqIGRhdGEp
OwogICAgIHZvaWQgcHJvY2Vzc0FyZ3VtZW50cyhjb25zdCBTdHJpbmcmIGZlYXR1cmVzLCB2b2lk
KiBkYXRhLCBBcmd1bWVudHNDYWxsYmFjayk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKQEAgLTE1ODMsNiArMTU4MywzMyBAQCBpbmxpbmUgY29uc3QgRG9jdW1lbnQqIERvY3VtZW50
Ojp0ZW1wbGF0ZURvY3VtZW50KCkgY29uc3QKIH0KICNlbmRpZgogCitpbmxpbmUgRG9jdW1lbnQq
IHRvRG9jdW1lbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwor
fQorCitpbmxpbmUgY29uc3QgRG9jdW1lbnQqIHRvRG9jdW1lbnQoY29uc3QgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIHJldHVybiB0b0RvY3VtZW50KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOworfQorCitpbmxpbmUgRG9jdW1lbnQqIHRvRG9jdW1lbnQoTm9k
ZSogbm9kZSkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8
fCBub2RlLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihub2RlKTsKK30KKworaW5saW5lIGNvbnN0IERvY3VtZW50KiB0b0RvY3VtZW50KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5v
ZGUgfHwgbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQobm9k
ZSk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3Nhcnkg
Y2FzdC4KK3ZvaWQgdG9Eb2N1bWVudChjb25zdCBEb2N1bWVudCopOworCiAvLyBQdXQgdGhlc2Ug
bWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlv
biwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgogCiBpbmxpbmUgYm9vbCBOb2Rl
Ojppc0RvY3VtZW50Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmlu
ZGV4IGNkMWQ0ODUzNDY5OWJhODU5YTFmMzNhMWJkMmM2ZjkxY2I4NGUzODQuLmJjOTE3N2JjNWEx
YTE0M2E0ZjE0MDNkZTlkMjE2MmIzNWYzZmRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5
cGUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgRG9jdW1lbnRUeXBlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zCiAgICAgLy8g
T3VyIGRvY3VtZW50IG5vZGUgY2FuIGJlIG51bGwgaWYgd2Ugd2VyZSBjcmVhdGVkIGJ5IGEgRE9N
SW1wbGVtZW50YXRpb24uICBXZSB1c2UgdGhlIHBhcmVudCgpIGluc3RlYWQuCiAgICAgQVNTRVJU
KHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRG9jdW1lbnROb2RlKCkpOwogICAgIGlm
IChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKSB7Ci0gICAg
ICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHBhcmVudE5vZGUoKSk7
CisgICAgICAgIERvY3VtZW50KiBkb2MgPSB0b0RvY3VtZW50KHBhcmVudE5vZGUoKSk7CiAgICAg
ICAgIGlmICghZG9jLT5kb2N0eXBlKCkpCiAgICAgICAgICAgICBkb2MtPnNldERvY1R5cGUodGhp
cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDY2MzA0OWFiMDE0YzI3NjE5ODk1
OTU1MjVjOTQ2YTU3M2YwYTU5N2YuLjlkMzgwNDMwYzliMzY4MWE4MzA1YjlmMTdkZTc3ZTNiNzVh
YmU0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIxOTksNyArMjE5OSw3IEBAIEF0b21p
Y1N0cmluZyBFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG4tPmlzRG9jdW1lbnROb2RlKCkpIHsKICAgICAg
ICAgICAgIC8vIGNoZWNraW5nIHRoZSBNSU1FIGNvbnRlbnQtbGFuZ3VhZ2UKLSAgICAgICAgICAg
IHZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPihuKS0+Y29udGVudExhbmd1YWdl
KCk7CisgICAgICAgICAgICB2YWx1ZSA9IHRvRG9jdW1lbnQobiktPmNvbnRlbnRMYW5ndWFnZSgp
OwogICAgICAgICB9CiAKICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKQEAgLTI2ODIsMTAg
KzI2ODIsMTAgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29u
c3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG8KICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFvbGROYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3Vt
ZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbShvbGROYW1lKTsKKyAgICAgICAgdG9I
VE1MRG9jdW1lbnQoZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbShvbGROYW1lKTsKIAogICAg
IGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVu
dCo+KGRvY3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CisgICAgICAgIHRvSFRNTERv
Y3VtZW50KGRvY3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiB9CiAKIHZvaWQgRWxl
bWVudDo6dXBkYXRlRXh0cmFOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKQEAgLTI2OTQsMTAgKzI2OTQsMTAg
QEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVFeHRyYU5hbWVkSXRlbVJlZ2lzdHJhdGlvbihjb25zdCBB
dG9taWNTdHJpbmcmIG9sZElkLCBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW9s
ZElkLmlzRW1wdHkoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1l
bnQoKSktPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG9sZElkKTsKKyAgICAgICAgdG9IVE1MRG9jdW1l
bnQoZG9jdW1lbnQoKSktPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG9sZElkKTsKIAogICAgIGlmICgh
bmV3SWQuaXNFbXB0eSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1
bWVudCgpKS0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOworICAgICAgICB0b0hUTUxEb2N1bWVu
dChkb2N1bWVudCgpKS0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiBFbGVtZW50OjplbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xs
ZWN0aW9uVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggYzExZDIw
ZjEyZGEzZWJkYjYwZGU3OWFhMGE5MDg0OGRmYjUwN2QxNy4uYzA5M2VjMWI5ZmNjYWY5OWI5ZmYx
NWQyOWFlMTk0ZDVhYTk5MjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0y
MDcsNyArMjA3LDcgQEAgYm9vbCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50
KiBldmVudCkKICAgICBpZiAoIXByZWZpeGVkVHlwZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAg
ICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KTsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4
dCk7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQtPmRvbVdpbmRvdygpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGxpc3RlbmVyUHJlZml4ZWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIGlm
IChsaXN0ZW5lclVucHJlZml4ZWRWZWN0b3IpCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBFdmVu
dFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCwgRXZlbnRUYXJnZXREYXRh
KiBkLCBFdmVudExpc3QKICAgICBpZiAodXNlckV2ZW50V2FzSGFuZGxlZCkgewogICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwogICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCk7CisgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQp
OwogICAgICAgICAgICAgZG9jdW1lbnQtPnJlc2V0TGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVz
dGFtcCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0Nv
bGxlY3Rpb24uY3BwCmluZGV4IDJiYjk0MGM4OWVlMTVlMzk5ZjM2MTk3ZGE2OTE2OGNkYjZkNTAw
ZDcuLjEyZDMxOWFjZTBkMmM0ZDk2OThjMGFkMTIwN2U3YjYzZTk5ZGM4NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBE
b2N1bWVudCogTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIEFTU0VSVCghY29udGV4dCB8fCBjb250
ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNv
bnRleHQpOworICAgIHJldHVybiB0b0RvY3VtZW50KGNvbnRleHQpOwogfQogCiBQYXNzUmVmUHRy
PERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IE5hbWVkRmxvd0NvbGxlY3Rpb246OmNyZWF0ZUNTU09N
U25hcHNob3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDNjYjBlNmY3MjFkODc5MzQxZTZlYTg0Y2Mz
N2ZkMzIxZGRjZWI4NGQuLmUwZjk2MzI2ODY4YmQ5NWI0ZmY5MGY2NGFmYTlmMzMwMGVlMTYwOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIGJvb2wgTm9kZTo6aXNEZWZh
dWx0TmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJTWF5YmVFbXB0eSkg
Y29uc3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoRWxlbWVudCogZGUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAg
IGlmIChFbGVtZW50KiBkZSA9IHRvRG9jdW1lbnQodGhpcyktPmRvY3VtZW50RWxlbWVudCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBkZS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVS
SSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRU5USVRZX05PREU6
CkBAIC0xNTI1LDcgKzE1MjUsNyBAQCBTdHJpbmcgTm9kZTo6bG9va3VwUHJlZml4KGNvbnN0IEF0
b21pY1N0cmluZyAmbmFtZXNwYWNlVVJJKSBjb25zdAogICAgICAgICBjYXNlIEVMRU1FTlRfTk9E
RToKICAgICAgICAgICAgIHJldHVybiBsb29rdXBOYW1lc3BhY2VQcmVmaXgobmFtZXNwYWNlVVJJ
LCBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50ICo+KHRoaXMpKTsKICAgICAgICAgY2FzZSBET0NV
TUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgRG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAo
RWxlbWVudCogZGUgPSB0b0RvY3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZGUtPmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkpOwogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgpAQCAtMTU4
Myw3ICsxNTgzLDcgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJp
bmcgJnByZWZpeCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoRWxlbWVudCog
ZGUgPSBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQo
KSkKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBkZSA9IHRvRG9jdW1lbnQodGhpcyktPmRvY3Vt
ZW50RWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBkZS0+bG9va3VwTmFtZXNwYWNl
VVJJKHByZWZpeCk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2Ug
RU5USVRZX05PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwCmlu
ZGV4IDA3MDkzMzA4OGUyNWRlODNjYTA3MGRkNDFiOWE3YmMxZTU5NTAyNjcuLmQ2M2VlMzk3ZjEx
ZmU3YTNkNjA0ZTEzMGY4MWYzNzUzNjRhMTc5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaW5k
b3dFdmVudENvbnRleHQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdpbmRvd0V2ZW50Q29udGV4dDo6
V2luZG93RXZlbnRDb250ZXh0KEV2ZW50KiBldmVudCwgUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBj
b25zCiAgICAgaWYgKCF0b3BMZXZlbENvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV93aW5kb3cgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRvcExl
dmVsQ29udGFpbmVyKS0+ZG9tV2luZG93KCk7CisgICAgbV93aW5kb3cgPSB0b0RvY3VtZW50KHRv
cExldmVsQ29udGFpbmVyKS0+ZG9tV2luZG93KCk7CiAgICAgbV90YXJnZXQgPSB0b3BFdmVudENv
bnRleHQgPyB0b3BFdmVudENvbnRleHQtPnRhcmdldCgpIDogbm9kZS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCBlM2FiYjk1
Nzg5M2ZiYzc3MTUzNmM0M2U2OWQ1YzI5YmFjN2Y0Yzk4Li4wNTgxMWVhMDAxMDIxMDg4YzExYjRl
MDZkMzQwMzYwMTdkOTRiNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcApAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3QgTm9kZSogbm9k
CiAgICAgICAgIGFwcGVuZENvbW1lbnQocmVzdWx0LCBzdGF0aWNfY2FzdDxjb25zdCBDb21tZW50
Kj4obm9kZSktPmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6RE9DVU1F
TlRfTk9ERToKLSAgICAgICAgYXBwZW5kWE1MRGVjbGFyYXRpb24ocmVzdWx0LCBzdGF0aWNfY2Fz
dDxjb25zdCBEb2N1bWVudCo+KG5vZGUpKTsKKyAgICAgICAgYXBwZW5kWE1MRGVjbGFyYXRpb24o
cmVzdWx0LCB0b0RvY3VtZW50KG5vZGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5oCmluZGV4IDJhYWE3OThhZWFmZjc4MTAyZWQ0NDExOWU4OTY4OGVlNzQyODI3
MTMuLjUxNDIwNzI1OGY2MmU2YjVlODFjMzZlYmUyZmUzZjAxZGQxNzkzODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMTA3LDYgKzEwNywyMSBAQCBpbmxpbmUgYm9vbCBIVE1M
RG9jdW1lbnQ6Omhhc0V4dHJhTmFtZWRJdGVtKEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpCiAgICAg
cmV0dXJuIG1fZXh0cmFOYW1lZEl0ZW1Db3VudHMuY29udGFpbnMobmFtZSk7CiB9CiAKK2lubGlu
ZSBIVE1MRG9jdW1lbnQqIHRvSFRNTERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwgZG9jdW1lbnQt
PmlzSFRNTERvY3VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
Pihkb2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBIVE1MRG9jdW1lbnQqIHRvSFRNTERvY3Vt
ZW50KGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRG9jdW1lbnQqPihkb2N1bWVudCk7Cit9
CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4K
K3ZvaWQgdG9IVE1MRG9jdW1lbnQoY29uc3QgSFRNTERvY3VtZW50Kik7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggZTZjM2UyZmFiNTA1NzZhNzc4
ZTUwOWQ2NGEyOGQxYjA4ZjQ5NDU1MC4uMjUyNTIyZWQ0ZmY0ZjNhM2U3MWY1M2Y2YjEwMjdlYWIz
OGUwOTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIFNWR0RvY3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1l
bnQ6OmdldFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIERvY3Vt
ZW50KiBkb2MgPSBjb250ZW50RG9jdW1lbnQoKTsKICAgICBpZiAoZG9jICYmIGRvYy0+aXNTVkdE
b2N1bWVudCgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2Mp
OworICAgICAgICByZXR1cm4gdG9TVkdEb2N1bWVudChkb2MpOwogICAgIC8vIFNwZWM6IGh0dHA6
Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCNJbnRlcmZhY2VHZXRTVkdEb2N1bWVudAog
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDRkODY0OGJkMGFiNzgxMTI3YTczMTc0
Mzc3MDRkNDdlN2RlMzY5YWQuLjhiMDE3ZTZhODYwNDg4ZmFlOTIwNjk1ZTk5YjE3NTM4MzUyODdk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiB7CiAgICAgaWYgKG5hbWUgPT0gbmFt
ZUF0dHIpIHsKICAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpICYmICFpc0luU2hhZG93VHJlZSgpKSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQo
KSk7CisgICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1MRG9jdW1lbnQo
dGhpcy0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1l
ZEl0ZW0obV9uYW1lKTsKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRFeHRyYU5hbWVkSXRlbSh2
YWx1ZSk7CiAgICAgICAgIH0KQEAgLTExMyw3ICsxMTMsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IEhUTUxJRnJhbWVFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZQogewogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgcmVzdWx0ID0gSFRNTEZy
YW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAgICAgaWYgKGlu
c2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQo
KSAmJiAhaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgIHN0YXRpY19j
YXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGRFeHRyYU5hbWVkSXRlbShtX25hbWUp
OworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+YWRkRXh0cmFOYW1lZEl0ZW0o
bV9uYW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9p
ZCBIVE1MSUZyYW1lRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9u
UG9pbnQpCiB7CiAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9tKGluc2VydGlv
blBvaW50KTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiBkb2N1bWVu
dCgpLT5pc0hUTUxEb2N1bWVudCgpICYmICFpbnNlcnRpb25Qb2ludC0+aXNJblNoYWRvd1RyZWUo
KSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92
ZUV4dHJhTmFtZWRJdGVtKG1fbmFtZSk7CisgICAgICAgIHRvSFRNTERvY3VtZW50KGRvY3VtZW50
KCkpLT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX25hbWUpOwogfQogCiBib29sIEhUTUxJRnJhbWVF
bGVtZW50OjpzaG91bGREaXNwbGF5U2VhbWxlc3NseSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBjZjhlYWU2YmMwMTg2ODg2Y2JmNzIxODllZmJl
NGY0ZjM5YWMyOGE1Li5hYzVjMGIyZjA4N2Y2OTQ2ODM5OTM4M2MwYjkxNWU1OTQ1ZjNiMjE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM2MjQsNyArMzYy
NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRy
YWNrcyhNZWRpYVBsYXllciopCiAgICAgLy8gVGhpcyBpcyBub3JtYWxseSBhY2NlcHRhYmxlIGV4
Y2VwdCB3aGVuIHdlIGFyZSBpbiBhIHN0YW5kYWxvbmUKICAgICAvLyBNZWRpYURvY3VtZW50LiBJ
ZiBzbywgdGVsbCB0aGUgZG9jdW1lbnQgd2hhdCBoYXMgaGFwcGVuZWQuCiAgICAgaWYgKG93bmVy
RG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCkpIHsKLSAgICAgICAgTWVkaWFEb2N1bWVudCog
bWVkaWFEb2N1bWVudCA9IHN0YXRpY19jYXN0PE1lZGlhRG9jdW1lbnQqPihvd25lckRvY3VtZW50
KCkpOworICAgICAgICBNZWRpYURvY3VtZW50KiBtZWRpYURvY3VtZW50ID0gdG9NZWRpYURvY3Vt
ZW50KG93bmVyRG9jdW1lbnQoKSk7CiAgICAgICAgIG1lZGlhRG9jdW1lbnQtPm1lZGlhRWxlbWVu
dFNhd1Vuc3VwcG9ydGVkVHJhY2tzKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBmNGQ2NzU4MmQ0OWVhY2Q1NGEzMzcyMjM5NGNjOGU3
NWUyNjM3YzAzLi4yNGUxOTI5Mjg0OWJkYzljOGVkYWE3MWVhNWFiYjRjZmMzZDE2NTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNDQyLDcgKzQ0Miw3
IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCiAgICAgICAg
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogICAgIGlmIChpc05hbWVkSXRl
bSAhPSB3YXNOYW1lZEl0ZW0gJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAg
ICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4o
dGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSB0b0hU
TUxEb2N1bWVudCh0aGlzLT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGlzTmFtZWRJdGVtKSB7
CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKGdldE5hbWVBdHRyaWJ1dGUoKSk7
CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0oZ2V0SWRBdHRyaWJ1dGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCBkYTI0ZmE2YzEzNzBm
MzZkNDQzN2UyNGRhNmY4ZDdiMjE5MzNmYTk2Li4zMzFkYWEzNzY3YjFhMzkwOTBiZGQ0Y2Y5NGJh
Y2I3ZWI2NGZjZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgSW1hZ2VEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlRG9jdW1lbnQqPihSYXdE
YXRhRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KCkpOworICAgICAgICByZXR1cm4gdG9JbWFnZURv
Y3VtZW50KFJhd0RhdGFEb2N1bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiAgICAgfQogICAgIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKaW5kZXggZmFmOTIwNzBmZjQw
MjU0ODk0NmU3YTY4MDE1ZWUxMjQxNGM4MjIyMy4uZjZmOTk4ZTgwZGM4NmUyZDBiZmIwODRhNjkz
ZjM0MTZhZGZhZTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKQEAgLTcxLDcg
KzcxLDIyIEBAIHByaXZhdGU6CiAgICAgLy8gV2hldGhlciB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHNo
cnVuayBvciBub3QKICAgICBib29sIG1fc2hvdWxkU2hyaW5rSW1hZ2U7CiB9OwotICAgIAorCitp
bmxpbmUgSW1hZ2VEb2N1bWVudCogdG9JbWFnZURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
K3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwgZG9j
dW1lbnQtPmlzSW1hZ2VEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VE
b2N1bWVudCo+KGRvY3VtZW50KTsKK30KKworaW5saW5lIGNvbnN0IEltYWdlRG9jdW1lbnQqIHRv
SW1hZ2VEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0ltYWdlRG9j
dW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEltYWdlRG9jdW1lbnQqPihk
b2N1bWVudCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNl
c3NhcnkgY2FzdC4KK3ZvaWQgdG9JbWFnZURvY3VtZW50KGNvbnN0IEltYWdlRG9jdW1lbnQqKTsK
KwogfQogCiAjZW5kaWYgLy8gSW1hZ2VEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5oCmluZGV4IDJkODEyOTYzYmYxMWZiZWE2ZDFjNWM2MGVlNzYxY2MyODY0MjE4N2UuLmVj
Nzc3YWVkYmUzODdiMzY2ZDQ5ZDRjNmMxN2ZhY2UxYTg5OGMxYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFEb2N1bWVudC5oCkBAIC01NCw3ICs1NCwyMiBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8
TWVkaWFEb2N1bWVudD4gbV9yZXBsYWNlTWVkaWFFbGVtZW50VGltZXI7CiB9OwotICAgIAorCitp
bmxpbmUgTWVkaWFEb2N1bWVudCogdG9NZWRpYURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
K3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwgZG9j
dW1lbnQtPmlzTWVkaWFEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFE
b2N1bWVudCo+KGRvY3VtZW50KTsKK30KKworaW5saW5lIGNvbnN0IE1lZGlhRG9jdW1lbnQqIHRv
TWVkaWFEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc01lZGlhRG9j
dW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1lZGlhRG9jdW1lbnQqPihk
b2N1bWVudCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNl
c3NhcnkgY2FzdC4KK3ZvaWQgdG9NZWRpYURvY3VtZW50KGNvbnN0IE1lZGlhRG9jdW1lbnQqKTsK
KwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXgg
Yzk5ZTM1MDk5M2MzMjlmODk3MjkyYzkyNTIwZjEwOGVkZjgzYTY1Ni4uOGVkNTY3MmI3ZWFhMDMw
MTAwYzVlZGQ4NWMyYTgyYjZiMjc3MWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1
bWVudC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3Jl
YXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIG1fZW1iZWRF
bGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIGxvYWRlci0+d3JpdGVyKCktPm1pbWVUeXBl
KCkpOwogCi0gICAgc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+c2V0
UGx1Z2luTm9kZShtX2VtYmVkRWxlbWVudCk7CisgICAgdG9QbHVnaW5Eb2N1bWVudChkb2N1bWVu
dCgpKS0+c2V0UGx1Z2luTm9kZShtX2VtYmVkRWxlbWVudCk7CiAKICAgICBib2R5LT5hcHBlbmRD
aGlsZChlbWJlZEVsZW1lbnQsIElHTk9SRV9FWENFUFRJT04pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5oCmluZGV4IGNjZGVlM2Y5YzM5ZGQ1ZDAxNWMxN2JkNWJmNWY0MTgyYzk1
NzY5YTAuLjQ1N2ZlNThiMjg1ODAyMThkNTEwZTc1NTUxM2UxMDFkYTg2NDI5NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIGlu
bGluZSBQbHVnaW5Eb2N1bWVudCogdG9QbHVnaW5Eb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRv
Y3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbHVn
aW5Eb2N1bWVudCo+KGRvY3VtZW50KTsKKyAgICByZXR1cm4gdG9QbHVnaW5Eb2N1bWVudChkb2N1
bWVudCk7CiB9CiAKIGlubGluZSBjb25zdCBQbHVnaW5Eb2N1bWVudCogdG9QbHVnaW5Eb2N1bWVu
dChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKaW5kZXggYjIxOTQzYmQ5MjVkZThjYWIxZDRiZGZiNmYyYTExNTE1ZDZk
MzMwNS4uNWVlM2QyMjM3ZjRhNDAxNTNmN2QwODg5YmVhM2YwZGY0ZjgxZGEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBA
IFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGRvdWJsZSBzdGFydCwgZG91YmxlCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwg
bV9wYXVzZU9uRXhpdChmYWxzZSkKICAgICAsIG1fc25hcFRvTGluZXModHJ1ZSkKLSAgICAsIG1f
Y3VlQmFja2dyb3VuZEJveChIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCkpKQorICAgICwgbV9jdWVCYWNrZ3JvdW5kQm94KEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUodG9Eb2N1bWVudChjb250ZXh0KSkpCiAgICAgLCBtX2Rpc3BsYXlUcmVlU2hvdWxk
Q2hhbmdlKHRydWUpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNE
b2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4
IDg5ZGQyNTIxNmYxZDI0OTQxN2JjYjBhYzc3ODIxOTZiYTNmZmFlZTQuLmI1YzVjZjRlZDBhMDlh
N2NhNDhhMDdmMTJhOWVhMzUxNWZjNWFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHByb3RlY3RlZDoKIAogICAgIFRleHRU
cmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5k
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCi0gICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7IH0KKyAgICBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIHsgcmV0dXJuIHRvRG9jdW1lbnQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZUJveD4gY3JlYXRlRGlzcGxheVRyZWUoKTsKICAgICBQYXNzUmVmUHRyPFRleHRU
cmFja0N1ZUJveD4gZGlzcGxheVRyZWVJbnRlcm5hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDJkMGYzODFkOWZmMTA1NDUzOThhYmZmNWM0NTMy
MTRkYTkwMjZiOTguLmQzODNhODRhZDI2NmQwNTJmNGFkY2E0YTIxNGNkMTZjYjVmMTJhN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTI0NCw3ICsy
NDQsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+ICBXZWJWVFRQYXJzZXI6OmNyZWF0
ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChjbwogICAgICAgICByZXR1cm4gMDsKIAogICAg
IEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKICAgICAKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIG1fY3VycmVu
dE5vZGUgPSBmcmFnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IGVlZTdkNGYxZWY1NjBkZTViY2UwNTJkOTQzZmM2OTkyN2YzNmJj
MGEuLjEwOTBmZTUwODk0OGExY2IyNTk0YjNkYzg4MTQzZmVkYzQ5MDVmMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMzc4LDcgKzM3
OCw3IEBAIERvY3VtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RG9jdW1lbnQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgICAgICplcnJvclN0cmluZyA9ICJE
b2N1bWVudCBpcyBub3QgYXZhaWxhYmxlIjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5vZGUpOworICAgIHJldHVybiB0b0RvY3Vt
ZW50KG5vZGUpOwogfQogCiBFbGVtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWxlbWVu
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCkBAIC03MzMsNyArNzMzLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkgPyBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KG5vZGUpIDogbm9kZS0+b3duZXJEb2N1bWVudCgpOworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkgPyB0b0RvY3VtZW50
KG5vZGUpIDogbm9kZS0+b3duZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJOb3Qg
YW4gSFRNTCBkb2N1bWVudCI7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNTQsNyArMTM1NCw3IEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAjZW5kaWYKIAogICAgIH0gZWxzZSBpZiAobm9kZS0+
aXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG5vZGUpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0Rv
Y3VtZW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0RG9jdW1lbnRVUkwoZG9jdW1lbnRVUkxT
dHJpbmcoZG9jdW1lbnQpKTsKICAgICAgICAgdmFsdWUtPnNldEJhc2VVUkwoZG9jdW1lbnRCYXNl
VVJMU3RyaW5nKGRvY3VtZW50KSk7CiAgICAgICAgIHZhbHVlLT5zZXRYbWxWZXJzaW9uKGRvY3Vt
ZW50LT54bWxWZXJzaW9uKCkpOwpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdW5zaWduZWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVyQ2hpbGROb2RlQ291bnQoTm9kZSogbm9kZSkKIE5vZGUqIEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9k
ZS0+aXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG5vZGUpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KG5vZGUpOwogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm93bmVyRWxlbWVudCgp
OwogICAgIH0KICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA0
YmRhZDU3NmFmMTQwNDg4MGNhMDE4MzA5MWVkMjk4ZjMwNGY5MGEzLi5mZjBmMGI4NjNjNmY5Y2Vm
OWVkMGFlMThkOTg2MWY3ZWM4Mzg5YmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IHN0YXRpYyBGcmFtZSogZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gMDsKICAgICBpZiAo
Y29udGV4dC0+aXNEb2N1bWVudCgpKQotICAgICAgICBmcmFtZSA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCktPmZyYW1lKCk7CisgICAgICAgIGZyYW1lID0gdG9Eb2N1bWVudChjb250
ZXh0KS0+ZnJhbWUoKTsKICAgICByZXR1cm4gZnJhbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA1M2Q4ZmZh
MzI5OTgwNjdjMjAxZDM4ODRmZjNiMjljZDUxMDNjMTJiLi5iNGE4MzIyZDEzZjc3YzFiYzVmNGI4
YjUzYWI0NTU2MzM5ODRkNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0yMDU2LDcgKzIwNTYsNyBAQCBpbmxpbmUg
SW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50
aW5nQWdlbnRzRm9yQ29udAogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7
CisgICAgICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSh0b0RvY3VtZW50KGNv
bnRleHQpLT5wYWdlKCkpOwogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIHJldHVybiBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KGNvbnRleHQpOwogI2Vsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCmluZGV4IDNjNzA1ZmZmZTMwM2Q3ODU3NzA4MTcw
YzA3MzA5MWY2ZGY0ZDVkYzcuLjUxZWEyNWU4YmI4NDMzMDUwMjg2Nzg1YjU1N2JjMDJlNjNkODM5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcApAQCAtMTMwLDcgKzEzMCw3
IEBAIHZvaWQgUHJlcmVuZGVyZXI6OnJlc3VtZSgpCiBEb2N1bWVudCogUHJlcmVuZGVyZXI6OmRv
Y3VtZW50KCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3Vt
ZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKIH0KIAogUHJlcmVuZGVyZXJDbGllbnQqIFByZXJlbmRlcmVyOjpjbGllbnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCAyNmJjOGNiMWRiOWJk
YTQ3NTBkOTQzZTlmN2FmNGNlZWVmZmJiZWYwLi4wMGExZDhmZTY3NGZjNjQxZTE2M2YyZDNmYTAz
ZGZlNWJlOTI2MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNr
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpkZXByZWNhdGVkRGlk
UmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjCiB2b2lkIFRleHRU
cmFja0xvYWRlcjo6Y29yc1BvbGljeVByZXZlbnRlZExvYWQoKQogewogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3Jp
Z2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5LiIpKSk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgY29uc29sZU1lc3NhZ2UpOwogICAgIG1fc3RhdGUgPSBGYWlsZWQ7CiB9CkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRDdWVEYXRhID09IHJlc291cmNl
KTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3Vt
ZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgaWYgKCFtX2Nyb3NzT3JpZ2luTW9k
ZS5pc051bGwoKQogICAgICAgICAmJiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJl
cXVlc3QocmVzb3VyY2UtPnJlc3BvbnNlKCkudXJsKCkpCiAgICAgICAgICYmICFyZXNvdXJjZS0+
cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSkgewpA
QCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY3Vl
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCkpKTsKIAog
ICAgIGlmICghY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNTNlMzQ3ODM0OWI0N2Q0ZjUxMjM0MmE3NjM4
M2UwMDM2NzcwNWVjMC4uZTMwMThiMzU2YjNiMDhkOTUzY2M1ZmExOGYyOGM5NDZmY2ZkNDkyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJT
KQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKLSAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBvcHRpb25zKTsK
KyAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUodG9Eb2N1bWVudChj
b250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykK
QEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKIAogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIHJlcXVl
c3QsIGNsaWVudCwgb3B0aW9ucyk7CisgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KHRvRG9jdW1lbnQoY29udGV4dCksIHJlcXVlc3QsIGNsaWVu
dCwgb3B0aW9ucyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA0NDYxODg5M2Qy
ZThlODk0YTZhOTdlMmQzMDg4OGRiZGU1YmI2YmE3Li5iYWRlNmU5NjdiZjJkYTVmZDc0YzdmNTQz
ZWU3ODYzNDdjMTA4YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyKFNjcmlw
dEV4ZWMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogCiAgICAgT3duUHRyPFJlc291cmNl
UmVxdWVzdD4gcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Q6OmFkb3B0KHJlcXVlc3REYXRhKSk7CiAg
ICAgcmVxdWVzdC0+c2V0SFRUUFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDU5YzZmNTFkOGYy
ODM4MmIyYTdkMjM1NGY2ODM5MzljOTczYTI3OTEuLjYzYzIwZDI1MjVjNTE4YjdmOGNkZGQ2MDQx
ZDAyZWNmMTllYjc4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKQEAgLTE0MzIsNyArMTQzMiw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5Ojpjb3B5U3RhdGVGcm9tKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSogb3RoZXIpCiB2
b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcm
IGhlYWRlciwgSGVhZGVyVHlwZSB0eXBlKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
ICAgICAgICAgaWYgKGRvY3VtZW50LT5kb21XaW5kb3coKSkKICAgICAgICAgICAgIEZlYXR1cmVP
YnNlcnZlcjo6b2JzZXJ2ZShkb2N1bWVudC0+ZG9tV2luZG93KCksIGdldEZlYXR1cmVPYnNlcnZl
clR5cGUodHlwZSkpOwogICAgIH0KQEAgLTE2NzYsNyArMTY3Niw3IEBAIHZvaWQgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0
LCBjb25zdCBTCiAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZTRkMDI1NjMxYmIwNjYyN2I1
NWI0MGQ1NzBjODc3Y2E3ZGJmODBlMi4uZjRjOWYxYTg4ZmQzNDNjODBmNTk0MjdkNWI4YTBmZWY3
YzkxNmUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtOTIwLDcgKzkyMCw3IEBA
IHZvaWQgRE9NV2luZG93Ojpmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIGJvb2wgYWxsb3dGb2N1cyA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvcjo6d2luZG93
Rm9jdXNBbGxvd2VkKCkgfHwgIW1fZnJhbWUtPnNldHRpbmdzKCktPndpbmRvd0ZvY3VzUmVzdHJp
Y3RlZCgpOwogICAgIGlmIChjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgICAgIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IHRvRG9j
dW1lbnQoY29udGV4dCk7CiAgICAgICAgIGlmIChvcGVuZXIoKSAmJiBhY3RpdmVEb2N1bWVudC0+
ZG9tV2luZG93KCkgPT0gb3BlbmVyKCkpCiAgICAgICAgICAgICBhbGxvd0ZvY3VzID0gdHJ1ZTsK
ICAgICB9CkBAIC05NzMsNyArOTczLDcgQEAgdm9pZCBET01XaW5kb3c6OmNsb3NlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAgICBpZiAoY29udGV4dCkgewogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAgICBEb2N1bWVudCogYWN0
aXZlRG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAgICBpZiAoIWFjdGl2ZURv
Y3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCBEb2N1
bWVudCogRE9NV2luZG93Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWNv
bnRleHQgfHwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChjb250ZXh0KTsKIH0K
IAogUGFzc1JlZlB0cjxTdHlsZU1lZGlhPiBET01XaW5kb3c6OnN0eWxlTWVkaWEoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA4NGFiOTViMmM4NTFjYzZj
MTBkMmU2YTdkY2IyYmUxYmU2MTgyMTU1Li5jY2M0Y2Y2NTVhMThjODgzZDQzYWM3MDQwNDlhNzcw
NzgxNWYyMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDE0
LDcgKzQxNCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxv
YWQoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGJvb2wgcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJh
Z3MgPSBmYWxzZTsKIAogICAgIGlmIChkb2MgJiYgZG9jLT5pc1BsdWdpbkRvY3VtZW50KCkpIHsK
LSAgICAgICAgY29uc3QgV2lkZ2V0KiB3aWRnZXQgPSBzdGF0aWNfY2FzdDxQbHVnaW5Eb2N1bWVu
dCo+KGRvYyktPnBsdWdpbldpZGdldCgpOworICAgICAgICBjb25zdCBXaWRnZXQqIHdpZGdldCA9
IHRvUGx1Z2luRG9jdW1lbnQoZG9jKS0+cGx1Z2luV2lkZ2V0KCk7CiAgICAgICAgIGNvbnN0IFBs
dWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3ID0gKHdpZGdldCAmJiB3aWRnZXQtPmlzUGx1Z2luVmll
d0Jhc2UoKSkgPyBzdGF0aWNfY2FzdDxjb25zdCBQbHVnaW5WaWV3QmFzZSo+KHdpZGdldCkgOiAw
OwogCiAgICAgICAgIGlmIChwbHVnaW5WaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDk0YTg0MDI0YzMyNGI3ZmJhNTEwM2YwMGRhNmRkZmZhMjQ2NGY3YWUuLmZmMTQ0
OTc0YmNiMjU2YmEwNTk4ZTA5YmY2MmJmNTBhZThkMzNhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTY2NCwxMCArNjY0LDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZXZlCiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NW
R0RvY3VtZW50KCkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1l
LT5kb2N1bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgeworICAgICAgICAmJiB0b1NWR0Rv
Y3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpLT56b29tQW5kUGFuRW5hYmxlZCgpKSB7CiAgICAg
ICAgIGlmIChldmVudC5ldmVudCgpLnNoaWZ0S2V5KCkgJiYgc2luZ2xlQ2xpY2spIHsKICAgICAg
ICAgICAgIG1fc3ZnUGFuID0gdHJ1ZTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR0RvY3Vt
ZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnN0YXJ0UGFuKG1fZnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIHRv
U1ZHRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSktPnN0YXJ0UGFuKG1fZnJhbWUtPnZpZXco
KS0+d2luZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTY5NCw3ICsxNjk0LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgbW91c2VFdmVudCwgSGkKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKG1fc3Zn
UGFuKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1l
bnQoKSktPnVwZGF0ZVBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0
S25vd25Nb3VzZVBvc2l0aW9uKSk7CisgICAgICAgIHRvU1ZHRG9jdW1lbnQobV9mcmFtZS0+ZG9j
dW1lbnQoKSktPnVwZGF0ZVBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9s
YXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNl
bmRpZgpAQCAtMTg0Myw3ICsxODQzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICNpZiBF
TkFCTEUoU1ZHKQogICAgIGlmIChtX3N2Z1BhbikgewogICAgICAgICBtX3N2Z1BhbiA9IGZhbHNl
OwotICAgICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkp
LT51cGRhdGVQYW4obV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbikpOworICAgICAgICB0b1NWR0RvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50
KCkpLT51cGRhdGVQYW4obV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtu
b3duTW91c2VQb3NpdGlvbikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggMTYyMmEwYzBjM2E3NzJjOGNkMzBk
ZTc2ZGIwNjdhZTc0YWU1ZjA4My4uYzZjYTBjOWQ5ZTIxZjU1ZWRkNTIzZGZiYjgyNjk2MDg5Yzlm
MTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
UGFzc1JlZlB0cjxFdmVudFNvdXJjZT4gRXZlbnRTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb24KICAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGNo
ZWNrIHRoZSBpc29sYXRlZCB3b3JsZCdzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IG9uY2Ugd2Vi
a2l0Lm9yZy9iLzEwNDUyMCBpcyBzb2x2ZWQuCiAgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZTsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1
bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQo
Y29udGV4dCk7CiAgICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSA9IGRvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQoKS0+c2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgfQogICAgIGlmICghc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFjb250ZXh0LT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UoZnVsbFVSTCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA2ZjU5ZTEzZTVmOTBhNDBhYjRkN2RlNWYwMGMy
MzBmMmY4YTE3NzFiLi5lODExZWExMzM1NGZkZDA4YmZhNTcxNDJkOTYwODYxZmZjN2YwYmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC04NDgsNyArODQ4LDcg
QEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2EKICAgICBOb2RlKiBjb250YWluZXIgPSBmb2N1c2Vk
RG9jdW1lbnQ7CiAKICAgICBpZiAoY29udGFpbmVyLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAg
ICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRhaW5lciktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICB0b0RvY3VtZW50KGNvbnRhaW5lciktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAgICAKICAgICAvLyBGaWd1
cmUgb3V0IHRoZSBzdGFydGluZyByZWN0LgogICAgIExheW91dFJlY3Qgc3RhcnRpbmdSZWN0OwpA
QCAtODY5LDcgKzg2OSw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJl
Y3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgICAgIHN0YXJ0
aW5nUmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKGNvbnRhaW5lciwgdHJ1ZSAv
KiBpZ25vcmUgYm9yZGVyICovKTsKICAgICAgICAgY29udGFpbmVyID0gc2Nyb2xsYWJsZUVuY2xv
c2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjb250YWlu
ZXIpOwogICAgICAgICBpZiAoY29udGFpbmVyICYmIGNvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUo
KSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGFpbmVyKS0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgICAgICAgICB0b0RvY3VtZW50
KGNvbnRhaW5lciktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAg
IH0gd2hpbGUgKCFjb25zdW1lZCAmJiBjb250YWluZXIpOwogCiAgICAgcmV0dXJuIGNvbnN1bWVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlY2QxNzUyYmUzZmQwNGNmODE5NTYwODMyN2E1ZmFj
OTk5YjU1YzZmLi4yZThkMWJlM2U2MWM1OTUyZDYzNWI4YjVjZWNhY2EwYTJlNjI5M2RkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTMxLDcgKzkzMSw3IEBAIHZvaWQgRnJhbWU6OnNldFBhZ2VB
bmRUZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21GYWN0b3IsIGZsb2F0IHRleHRab29tRmFj
dG9yCiAgICAgLy8gUmVzcGVjdCBTVkdzIHpvb21BbmRQYW49ImRpc2FibGVkIiBwcm9wZXJ0eSBp
biBzdGFuZGFsb25lIFNWRyBkb2N1bWVudHMuCiAgICAgLy8gRklYTUU6IEhvdyB0byBoYW5kbGUg
Y29tcG91bmQgZG9jdW1lbnRzICsgem9vbUFuZFBhbj0iZGlzYWJsZWQiPyBOZWVkcyBTVkcgV0cg
Y2xhcmlmaWNhdGlvbi4KICAgICBpZiAoZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSkgewotICAg
ICAgICBpZiAoIXN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jdW1lbnQpLT56b29tQW5kUGFu
RW5hYmxlZCgpKQorICAgICAgICBpZiAoIXRvU1ZHRG9jdW1lbnQoZG9jdW1lbnQpLT56b29tQW5k
UGFuRW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDFmNTdlMGMyNzRjN2YzYjkwM2E3YzZjNjQxOTgwMWZh
ZTU1NzY5M2IuLmY2YWJiMTk3MzU4NGM5Y2I4ZmFkMTE4YzZhYmY0YjRiY2ZkYjQ4YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE3OTIsNyArMTc5Miw3IEBAIGJvb2wgRnJhbWVW
aWV3OjpzY3JvbGxUb0FuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpCiAKICNpZiBFTkFCTEUoU1ZH
KQogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkpIHsKLSAgICAg
ICAgaWYgKFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9m
cmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKFNWR1NWR0Vs
ZW1lbnQqIHN2ZyA9IHRvU1ZHRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVt
ZW50KCkpIHsKICAgICAgICAgICAgIHN2Zy0+c2V0dXBJbml0aWFsVmlldyhuYW1lLCBhbmNob3JO
b2RlKTsKICAgICAgICAgICAgIGlmICghYW5jaG9yTm9kZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDg3ZDg1MDZkNzM0Y2Y3OTY2MWMx
NDQ0MTJkYzFiMDQ2NjE0MTM4ZTQuLjU4YWVmYzQyN2I4YTRhMGQxYTEzNmZkN2ViYmNmMGZiZWRm
ZDMwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQg
SGlzdG9yeTo6Z28oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50IGRpc3RhbmNl
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERv
Y3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7
CisgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gdG9Eb2N1bWVudChjb250ZXh0KTsKICAg
ICBpZiAoIWFjdGl2ZURvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKaW5kZXggMzM4YzM4OTkzODYwNDlmN2ZmZDY3MTY3
ZDRjMzhkYTBkYzg3NTkzMi4uNjAwN2ZjNzdhNzYzZWVhMTJkNzA0N2I1ZGE3NmQwYTZjOGMwNzg4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTM3MSw3
ICszNzEsNyBAQCBib29sIHNjcm9sbEluRGlyZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChjb250YWluZXIpOwogICAgIGlmIChj
b250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiBzY3JvbGxJbkRpcmVj
dGlvbihzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRhaW5lciktPmZyYW1lKCksIGRpcmVjdGlv
bik7CisgICAgICAgIHJldHVybiBzY3JvbGxJbkRpcmVjdGlvbih0b0RvY3VtZW50KGNvbnRhaW5l
ciktPmZyYW1lKCksIGRpcmVjdGlvbik7CiAKICAgICBpZiAoIWNvbnRhaW5lci0+cmVuZGVyQm94
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBOb2RlKiBzY3Jv
bGxhYmxlRW5jbG9zaW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihGb2N1c0Rp
cmVjdGlvbiBkaXJlYwogICAgIE5vZGUqIHBhcmVudCA9IG5vZGU7CiAgICAgZG8gewogICAgICAg
ICBpZiAocGFyZW50LT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICAgICAgcGFyZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihwYXJlbnQpLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5vd25lckVs
ZW1lbnQoKTsKKyAgICAgICAgICAgIHBhcmVudCA9IHRvRG9jdW1lbnQocGFyZW50KS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpOwogICAgIH0gd2hpbGUgKHBhcmVudCAmJiAh
Y2FuU2Nyb2xsSW5EaXJlY3Rpb24ocGFyZW50LCBkaXJlY3Rpb24pICYmICFwYXJlbnQtPmlzRG9j
dW1lbnROb2RlKCkpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIGJvb2wgY2FuU2Nyb2xsSW5EaXJlY3Rp
b24oY29uc3QgTm9kZSogY29udGFpbmVyLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGNvbnRhaW5lcik7CiAgICAgaWYgKGNvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUo
KSkKLSAgICAgICAgcmV0dXJuIGNhblNjcm9sbEluRGlyZWN0aW9uKHN0YXRpY19jYXN0PGNvbnN0
IERvY3VtZW50Kj4oY29udGFpbmVyKS0+ZnJhbWUoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgcmV0
dXJuIGNhblNjcm9sbEluRGlyZWN0aW9uKHRvRG9jdW1lbnQoY29udGFpbmVyKS0+ZnJhbWUoKSwg
ZGlyZWN0aW9uKTsKIAogICAgIGlmICghaXNTY3JvbGxhYmxlTm9kZShjb250YWluZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC01MjEsNyArNTIxLDcgQEAgTGF5b3V0UmVjdCBub2RlUmVj
dEluQWJzb2x1dGVDb29yZGluYXRlcyhOb2RlKiBub2RlLCBib29sIGlnbm9yZUJvcmRlcikKICAg
ICBBU1NFUlQobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpICYmICFub2RlLT5kb2N1bWVudCgpLT52
aWV3KCktPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkp
Ci0gICAgICAgIHJldHVybiBmcmFtZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihub2RlKS0+ZnJhbWUoKSk7CisgICAgICAgIHJldHVybiBmcmFtZVJlY3RJ
bkFic29sdXRlQ29vcmRpbmF0ZXModG9Eb2N1bWVudChub2RlKS0+ZnJhbWUoKSk7CiAgICAgTGF5
b3V0UmVjdCByZWN0ID0gcmVjdFRvQWJzb2x1dGVDb29yZGluYXRlcyhub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpLCBub2RlLT5ib3VuZGluZ0JveCgpKTsKIAogICAgIC8vIEZvciBhdXRob3JzIHRo
YXQgdXNlIGJvcmRlciBpbnN0ZWFkIG9mIG91dGxpbmUgaW4gdGhlaXIgQ1NTLCB3ZSBjb21wZW5z
YXRlIGJ5IGlnbm9yaW5nIHRoZSBib3JkZXIgd2hlbiBjYWxjdWxhdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4IGY2Y2JhMjUxNTVlMGM4YTE2ZmQ1YTk1Zjk3
ODUzYjVjZDhjMzZjNTYuLjI2NjA3ZDQxMjBiYjRmOTYxNzA3ZDJjZGRhZjNhOTFmNjZjNDU1ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKQEAgLTIyNyw3ICsyMjcs
NyBAQCBzdGF0aWMgaW5saW5lIE5vZGUqIHBhcmVudFNoYWRvd0hvc3RPck93bmVyKGNvbnN0IE5v
ZGUqIG5vZGUpCiAgICAgaWYgKE5vZGUqIGFuY2VzdG9yID0gbm9kZS0+cGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpKQogICAgICAgICByZXR1cm4gYW5jZXN0b3I7CiAgICAgaWYgKG5vZGUtPmlzRG9j
dW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+
KG5vZGUpLT5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIHRvRG9jdW1lbnQobm9kZSkt
Pm93bmVyRWxlbWVudCgpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZTE5
NjU3MjUxZDQ4NzA3ODc3YmYzYzNiYmIxOTc0MjZmMTY2MTU4My4uOGE4MTA1NTc3NmM0MzEyODMw
YjM1NGIwMmUwNmZiZjQyNDZkZWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBA
IHN0YXRpYyB2b2lkIGFjY3VtdWxhdGVEb2N1bWVudEV2ZW50VGFyZ2V0UmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiByZWN0cywgY29uc3QgRG9jCiAgICAgICAgIH0KIAogICAgICAgICBpZiAodG91Y2hU
YXJnZXQtPmlzRG9jdW1lbnROb2RlKCkgJiYgdG91Y2hUYXJnZXQgIT0gZG9jdW1lbnQpIHsKLSAg
ICAgICAgICAgIGFjY3VtdWxhdGVEb2N1bWVudEV2ZW50VGFyZ2V0UmVjdHMocmVjdHMsIHN0YXRp
Y19jYXN0PGNvbnN0IERvY3VtZW50Kj4odG91Y2hUYXJnZXQpKTsKKyAgICAgICAgICAgIGFjY3Vt
dWxhdGVEb2N1bWVudEV2ZW50VGFyZ2V0UmVjdHMocmVjdHMsIHRvRG9jdW1lbnQodG91Y2hUYXJn
ZXQpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBhYTZiMDM0NjA5ODA2NWVhMTA1MmIwNWZkMThk
OTExMTY5N2NmMWFiLi43MTk1ZTUwMmUyYWYyNmQ1ODk2ZGI0NDFmODA1OWNmNjEzZWRiZGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xNTQsNyArMTU0LDcg
QEAgUmVuZGVyVGV4dDo6UmVuZGVyVGV4dChOb2RlKiBub2RlLCBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHN0cikKICAgICAvLyBGSVhNRTogU29tZSBjbGllbnRzIG9mIFJlbmRlclRleHQgKGFuZCBz
dWJjbGFzc2VzKSBwYXNzIERvY3VtZW50IGFzIG5vZGUgdG8gY3JlYXRlIGFub255bW91cyByZW5k
ZXJlci4KICAgICAvLyBUaGV5IHNob3VsZCBiZSBzd2l0Y2hlZCB0byBwYXNzaW5nIG51bGwgYW5k
IHVzaW5nIHNldERvY3VtZW50Rm9yQW5vbnltb3VzLgogICAgIGlmIChub2RlICYmIG5vZGUtPmlz
RG9jdW1lbnROb2RlKCkpCi0gICAgICAgIHNldERvY3VtZW50Rm9yQW5vbnltb3VzKHN0YXRpY19j
YXN0PERvY3VtZW50Kj4obm9kZSkpOworICAgICAgICBzZXREb2N1bWVudEZvckFub255bW91cyh0
b0RvY3VtZW50KG5vZGUpKTsKIAogICAgIG1faXNBbGxBU0NJSSA9IG1fdGV4dC5jb250YWluc09u
bHlBU0NJSSgpOwogICAgIG1fY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoID0gY29tcHV0ZUNhblVz
ZVNpbXBsZUZvbnRDb2RlUGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwCmluZGV4IDExOTFmNjE2MWVlMzMzYWY2NzA2NmU4OWE0NjA4MzZkNzIy
ZmQyZDkuLmQzZjhkNzQ2MGE3M2JhMjhhMDVjMmUwYmUwNDA1ODRjZGFjOWVhMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTgyNCw3ICs4
MjQsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVNlbGVjdGlvbihUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyT2JqZWN0KiBvKQogICAgIGlmICghbiB8fCAhbi0+aXNEb2N1bWVudE5vZGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obik7CisgICAgRG9jdW1lbnQqIGRvYyA9IHRvRG9jdW1lbnQobik7CiAgICAgRnJhbWUqIGZy
YW1lID0gZG9jLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0RvY3VtZW50LmgKaW5kZXggYTYzNzg3MjE4ZTY4MWRhMTkzN2ExYTgyMGFmOWIx
ZDAzZWU4YjdiYi4uNTI3ZWFiODhhNWZhMzYzZmQ0ZjdkZDNmMmIwYTNmMmFmNzk1YTg0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKQEAgLTU4LDYgKzU4LDIxIEBAIHByaXZhdGU6CiAgICAg
RmxvYXRQb2ludCBtX3RyYW5zbGF0ZTsKIH07CiAKK2lubGluZSBTVkdEb2N1bWVudCogdG9TVkdE
b2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGRvY3VtZW50KTsKK30KKworaW5saW5l
IGNvbnN0IFNWR0RvY3VtZW50KiB0b1NWR0RvY3VtZW50KGNvbnN0IERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwg
ZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFNWR0RvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25l
IGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvU1ZHRG9jdW1lbnQoY29uc3QgU1ZH
RG9jdW1lbnQqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDQwMTM0
ODQ1MzE2NmVhN2Y0NDk0MmVjOGQ0YjAyZTI3YTM3MzdiMGEuLjBjOGJhNDAxMmI0ZGQ1N2IwNDgx
NjQ2NGMwNjE3NTJiYTU0OTQwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFNWR0ltYWdlOjpzZXRDb250YWluZXJTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1l
bnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRvU1ZHRG9jdW1lbnQoZnJh
bWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKICAgICBSZW5kZXJTVkdSb290KiByZW5kZXJlciA9IHRvUmVuZGVyU1ZH
Um9vdChyb290RWxlbWVudC0+cmVuZGVyZXIoKSk7CkBAIC04NCw3ICs4NCw3IEBAIEludFNpemUg
U1ZHSW1hZ2U6OnNpemUoKSBjb25zdAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4g
SW50U2l6ZSgpOwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAg
U1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZy
YW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290
RWxlbWVudCA9IHRvU1ZHRG9jdW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgp
OwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKQEAg
LTIxMyw3ICsyMTMsNyBAQCBSZW5kZXJCb3gqIFNWR0ltYWdlOjplbWJlZGRlZENvbnRlbnRCb3go
KSBjb25zdAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gMDsKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RF
bGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gdG9SZW5kZXJCb3gocm9vdEVsZW1lbnQt
PnJlbmRlcmVyKCkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIGJvb2wgU1ZHSW1hZ2U6Omhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVt
ZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3Vt
ZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0g
dG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYg
KCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiByb290RWxl
bWVudC0+aW50cmluc2ljV2lkdGgoKS5pc1BlcmNlbnQoKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBi
b29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
RG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZH
RWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKS0+
cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHJvb3RFbGVtZW50LT5pbnRyaW5zaWNIZWlnaHQoKS5pc1BlcmNlbnQo
KTsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFNWR0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbgogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWlu
RnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNW
R0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NW
R0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSkt
PnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBTVkdJbWFnZTo6c3RhcnRBbmltYXRpb24oYm9vbCAv
KiBjYXRjaFVwSWZOZWNlc3NhcnkgKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
bjsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0Vs
ZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9j
dW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQg
PSB0b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBp
ZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgcm9vdEVsZW1lbnQtPnVucGF1
c2VBbmltYXRpb25zKCk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBTVkdJbWFnZTo6c3RvcEFu
aW1hdGlvbigpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RF
bGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50
KQogICAgICAgICByZXR1cm47CiAgICAgcm9vdEVsZW1lbnQtPnBhdXNlQW5pbWF0aW9ucygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDZjYjE0Njc1ZDQxZWY0OTAzMjRm
OTM5M2YzYTRhNmY2ZGQ4ZmQwMzMuLmQxMWMzMDM2MGE2NDQ1M2NhNDI0MDAyN2M2YjdmY2UwYWYy
NjM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI4Miw3ICsyODIs
NyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQpCiAKIERvY3VtZW50
KiBJbnRlcm5hbHM6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1cm4g
dG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCiBGcmFtZSogSW50ZXJu
YWxzOjpmcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNv
cmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMDk4MWRhODY0MDRjNjY5MTUxZTcxM2IxOGE0NmRjNzhl
NGJlYWJhYi4uOGQxODA2N2EwMTE1YjY5MjE2NmQ1Y2NmNzliNTBjNDVhZjQ0Njg4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYgY29u
dGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKHNjcmlwdENvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgSW50ZXJuYWxzOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRDb250ZXh0
KSkpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUodG9Eb2N1bWVudChzY3JpcHRDb250ZXh0KSkp
KTsKIH0KIAogdm9pZCByZXNldEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCkK
QEAgLTU2LDcgKzU2LDcgQEAgdm9pZCByZXNldEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
c2NyaXB0Q29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBQYWdlKiBwYWdlID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihzY3JpcHRDb250ZXh0KS0+ZnJhbWUoKS0+cGFnZSgpOworICAgIFBhZ2Uq
IHBhZ2UgPSB0b0RvY3VtZW50KHNjcmlwdENvbnRleHQpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAg
SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKHBhZ2UpOwogICAgIEludGVybmFsU2V0
dGluZ3M6OmZyb20ocGFnZSktPnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCBiNmMw
MDE0NWJkYjgyYTU1YWQ5NDY2Yzk3YzBjOTNiNjI5MzRlNTBjLi4xNDkxMDhhYmI2NmYyYzMyNWUx
NDc0OWExNWJiNWViYzc5MGUwZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy92
OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgaW5qZWN0SW50
ZXJuYWxzT2JqZWN0KHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCkKIAogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKHNjcmlwdENvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgY29u
dGV4dC0+R2xvYmFsKCktPlNldCh2ODo6U3RyaW5nOjpOZXcoSW50ZXJuYWxzOjppbnRlcm5hbHNJ
ZCksIHRvVjgoSW50ZXJuYWxzOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRD
b250ZXh0KSksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgY29udGV4dC0+R2V0SXNvbGF0ZSgp
KSk7CisgICAgICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KEludGVy
bmFsczo6aW50ZXJuYWxzSWQpLCB0b1Y4KEludGVybmFsczo6Y3JlYXRlKHRvRG9jdW1lbnQoc2Ny
aXB0Q29udGV4dCkpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIGNvbnRleHQtPkdldElzb2xh
dGUoKSkpOwogfQogCiB2b2lkIHJlc2V0SW50ZXJuYWxzT2JqZWN0KHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCByZXNldEludGVybmFsc09iamVj
dCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQtPmlzRG9jdW1l
bnQoKSk7Ci0gICAgUGFnZSogcGFnZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29u
dGV4dCktPmZyYW1lKCktPnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0gdG9Eb2N1bWVudChzY3Jp
cHRDb250ZXh0KS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEludGVybmFsczo6cmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZShwYWdlKTsKICAgICBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKHBhZ2UpLT5yZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01IVE1MQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAK
aW5kZXggNTUwMDAyNTc5Y2ViOTkyYzdlM2M3NDM3NTRlZGRkOTc0NWI4YThiYy4uMDVkYjU1YTY0
MWI5MWM0MzkyN2FkYTEwNDkwMzIyNDk1ZDU1OWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxD
bGFzc2VzLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTERvY3VtZW50OjpVUkwoCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gQlN0cmluZyhzdGF0aWNfY2FzdDxIVE1MRG9jdW1l
bnQqPihtX2RvY3VtZW50KS0+dXJsKCkpLnJlbGVhc2UoKTsKKyAgICAqcmVzdWx0ID0gQlN0cmlu
Zyh0b0hUTUxEb2N1bWVudChtX2RvY3VtZW50KS0+dXJsKCkpLnJlbGVhc2UoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAKQEAgLTI2MSw3ICsyNjEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxEb2N1bWVudDo6Ym9keSgKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1f
ZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBIVE1MRG9jdW1lbnQqIGh0bWxEb2MgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihtX2Rv
Y3VtZW50KTsKKyAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2MgPSB0b0hUTUxEb2N1bWVudChtX2Rv
Y3VtZW50KTsKICAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGRvbUVsZW1lbnQ7CiAgICAgZG9tRWxl
bWVudC5hZG9wdFJlZihET01IVE1MRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UoaHRtbERvYy0+Ym9k
eSgpKSk7CiAgICAgaWYgKGRvbUVsZW1lbnQpCkBAIC0zMDQsNyArMzA0LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9jdW1lbnQ6OmZvcm1zKAogICAgIGlmICghbV9kb2N1
bWVudCB8fCAhbV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAotICAgIEhUTUxEb2N1bWVudCogaHRtbERvYyA9IHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KG1fZG9jdW1lbnQpOworICAgIEhUTUxEb2N1bWVudCogaHRtbERvYyA9IHRvSFRNTERv
Y3VtZW50KG1fZG9jdW1lbnQpOwogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZm9ybXMgPSBo
dG1sRG9jLT5mb3JtcygpOwogICAgICpjb2xsZWN0aW9uID0gRE9NSFRNTENvbGxlY3Rpb246OmNy
ZWF0ZUluc3RhbmNlKGZvcm1zLmdldCgpKTsKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURv
Y3VtZW50Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NRG9jdW1lbnQubW0KaW5kZXggOTlmNTE1MDIxZDRmMTI1ZTMxNDZkMDY0NDE2YzYw
ZjA2MjM1NmRkNy4uZjM1NWRhOGJmNWY4OTM3YjQxMDM5NzZlMGZjYzExOWI3ODM0YjM5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KQEAgLTM0LDEyICszNCw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KIAot
c3RhdGljIGlubGluZSBXZWJDb3JlOjpEb2N1bWVudCogdG9Eb2N1bWVudChXZWJDb3JlOjpOb2Rl
KiBub2RlKQotewotICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0RvY3VtZW50Tm9kZSgpKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnQqPihub2RlKTsKLX0KLQog
QGltcGxlbWVudGF0aW9uIFdLRE9NRG9jdW1lbnQKIAogLSAoV0tET01FbGVtZW50ICopY3JlYXRl
RWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192867</attachid>
            <date>2013-03-12 21:29:26 -0700</date>
            <delta_ts>2013-03-12 21:56:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112225-20130312212524.patch</filename>
            <type>text/plain</type>
            <size>94568</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMzOGFmNGQ1NDdmOWRm
ZWM3ZWViZmU4Yjc3MjM1NDIyMzExMWRhYi4uNGVlZDcyYTdlNjgwZDUyZWIyMjcyMGI1ZGFmNzRh
ZDkxZWFjNGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEzLTAzLTEyICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zIGZvciBkb2N1bWVudCB0eXBlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRvKiBoZWxwZXIgZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAg
ICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0
cnVjdHVyZS4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRvY3VtZW50KToKKyAgICAgICAgLi4u
LmxvdCBvZiBmaWxlcy4KKworMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGggdG8qIGhlbHBl
ciBmdW5jdGlvbnMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTIxNjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM0ZjFmOTkxY2U4Mjk5OGI2NDNlZWFhN2E0NTRk
NzBiN2Q2NDg2MjEuLmYzYmU5ZmJlMDRhNTIzMWVkZGFhZDg5Njk0ZTJlOTM0YTNhYzU3MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGlu
ZmVybm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGgg
dG8qIGZ1bmN0aW9ucyBmb3IgZG9jdW1lbnQgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTURvY3VtZW50Lm1tOiBSZW1vdmUgdGhlIHJlZHVuZGFudCBoZWxwZXIuCisKIDIw
MTMtMDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggZjk4N2Qw
ZmJjZDExNDhmOGEzN2VlNjc5YmM2ZWJkYzhmODc4N2EyNC4uNjIwMmQyOWVhZjBiMjVlNWVhNWIx
NjIyZGJjYWY2MTJhNTg1ZGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTI1Myw4ICsyNTMsNyBAQCBHZW9sb2NhdGlv
bjo6fkdlb2xvY2F0aW9uKCkKIAogRG9jdW1lbnQqIEdlb2xvY2F0aW9uOjpkb2N1bWVudCgpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
fQogCiBGcmFtZSogR2VvbG9jYXRpb246OmZyYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggZDAxMjBmNjBhODlhZGZm
YjdkMTY1YzlhYWI3M2Y5Zjc2ZjMxMTBiMC4uNGIwMmIxMTY0ZDQwYTQxOWMzNjdmOTRkMjNlZWJj
MjM2ZGFmYWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJvb2wgaXNDb250ZXh0VmFsaWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoY29udGV4dC0+
aXNEb2N1bWVudCgpIHx8IGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICBpZiAoY29u
dGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKSAm
JiBkb2N1bWVudC0+cGFnZSgpOwogICAgIH0KICNpZiAhRU5BQkxFKFdPUktFUlMpCkBAIC04NCw3
ICs4NCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGlzQ29udGV4dFZhbGlkKGNv
bnRleHQpKTsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIHJldHVy
biBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmdyb3VwU2V0dGluZ3MoKS0+aW5kZXhlZERCRGF0
YWJhc2VQYXRoKCk7CiAgICAgfQogI2lmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApp
bmRleCA2ZjE5ZWFmZjI2ZGYxNTg2ZTZjMThmZGJiMjJiYWNiMDExZTY5ZGVlLi40ZWE2ZTUwNGM1
MjVlZjE3M2QxMmJjZGI2NGY0ZjM3ZjE2MzA3NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMTM5
LDggKzEzOSw3IEBAIFJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAgICAgLCBtX3NjaGVkdWxlZEV2
ZW50VGltZXIodGhpcywgJlJUQ1BlZXJDb25uZWN0aW9uOjpzY2hlZHVsZWRFdmVudFRpbWVyRmly
ZWQpCiAgICAgLCBtX3N0b3BwZWQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAg
ICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggYjk0OTQwMDJhOTJmNGNlMWNmYzlmYzNiM2JjZjMyYWUz
NjhjZDM3NC4uNjYzMTkzYzM5NzIzMDhkNzY3MzkwZDIwYzBhMmJjNjVkN2M1NmU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgTWVkaWFDb25zdHJhaW50cyogVXNlck1lZGlh
UmVxdWVzdDo6dmlkZW9Db25zdHJhaW50cygpIGNvbnN0CiBEb2N1bWVudCogVXNlck1lZGlhUmVx
dWVzdDo6b3duZXJEb2N1bWVudCgpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgICAgICByZXR1cm4gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA1MmVjNjE4
ZDU5ZGUxOGEzZDQzNTRkMjgxYTU5N2E2YTRmNDBmMDM3Li42YTQzZWYwN2NkMTBhNGFhNGNjYmQy
MDI5NjcyYzdiOTZjNDQ4MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTA5LDggKzEwOSw3IEBAIE5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLCBtX3N0YXRlKElkbGUpCiAgICAgLCBtX3Rhc2tUaW1l
cihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90aWZpY2F0aW9uOjp0
YXNrVGltZXJGaXJlZCkpKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBET01X
aW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCktPmRvbVdpbmRvdygpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9
IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnModG9Eb2N1bWVudChj
b250ZXh0KS0+ZG9tV2luZG93KCkpOwogICAgIAogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCkpOwogICAgIG1fdGFza1RpbWVyLT5zdGFydE9uZVNob3QoMCk7CkBAIC0x
NzEsOSArMTcwLDkgQEAgdm9pZCBOb3RpZmljYXRpb246OnNob3coKQogICAgIC8vIHByZXZlbnQg
ZG91YmxlLXNob3dpbmcKICAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0aW9u
Q2VudGVyLT5jbGllbnQoKSkgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICBp
ZiAoIXN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFn
ZSgpKQorICAgICAgICBpZiAoIXRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+
cGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7Cisg
ICAgICAgIGlmIChOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHRvRG9jdW1lbnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bkFsbG93ZWQpIHsKICAgICAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjAsOCArMjU5LDggQEAgdm9pZCBOb3RpZmljYXRp
b246OnRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVyKQogY29uc3QgU3Ry
aW5nJiBOb3RpZmljYXRpb246OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
LT5wYWdlKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xp
ZW50KCktPmNoZWNrUGVybWlzc2lvbihjb250ZXh0KSk7CisgICAgQVNTRVJUKHRvRG9jdW1lbnQo
Y29udGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbSh0b0RvY3VtZW50KGNvbnRleHQpLT5wYWdlKCkpLT5jbGllbnQo
KS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsKIH0KIAogY29uc3QgU3RyaW5nJiBOb3RpZmlj
YXRpb246OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBl
cm1pc3Npb24pCkBAIC0yODYsOCArMjg1LDggQEAgY29uc3QgU3RyaW5nJiBOb3RpZmljYXRpb246
OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBlcm0KIHZv
aWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+
aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+cGFnZSgpKTsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lv
bihjb250ZXh0LCBjYWxsYmFjayk7CisgICAgQVNTRVJUKHRvRG9jdW1lbnQoY29udGV4dCktPnBh
Z2UoKSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbSh0b0RvY3VtZW50KGNvbnRl
eHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+cmVxdWVzdFBlcm1pc3Npb24oY29udGV4dCwgY2FsbGJh
Y2spOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaEdyYW1tYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoR3JhbW1hci5jcHAKaW5kZXggNTBhMTQwNjAwNTZkZTMxZTY5NWRkNDA0NTczNTJjMTJjZTc5
NzVhZi4uNzJhMGFhZTA4ZDY0YjdkZTJjNzRkYzBiZTIxNzUyOTAwMjI4NTNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUo
Y29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQogdm9pZCBTcGVlY2hHcmFtbWFyOjpzZXRT
cmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3Qg
U3RyaW5nJiBzcmMpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiAgICAgbV9zcmMgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoc3JjKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCmluZGV4
IDk4NTNlZjdhMDQwNDRjY2EwYzc5ZDYwMjA2MTAxNDEyZjY5MTYxN2UuLjk1M2I1MTIyYmI5MWQz
MDg3M2JkNGQ5NWRiMTY5YjAxYjI4YTgyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU3Bl
ZWNoR3JhbW1hciogU3BlZWNoR3JhbW1hckxpc3Q6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkg
Y29uc3QKIHZvaWQgU3BlZWNoR3JhbW1hckxpc3Q6OmFkZEZyb21VcmkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJs
ZSB3ZWlnaHQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAg
ICAgbV9ncmFtbWFycy5hcHBlbmQoU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGRvY3VtZW50LT5jb21w
bGV0ZVVSTChzcmMpLCB3ZWlnaHQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IGJlZGE4Mjc4ZmMzZjZkM2I5
NTljN2E2ZmNkMDBlODM3Zjc4MWM1N2QuLjY1ZDI3MDc5NzM3MDkyODQxODdkMWIyMjM2NjkxOTM0
YWY2MjA5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBTcGVlY2hSZWNvZ25pdGlvbjo6
U3BlZWNoUmVjb2duaXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAs
IG1fc3RhcnRlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApp
bmRleCAzZmUzNjI3MzliMDRiOGM3ZTA4NmEzZTE2ZjQ3Yzg2Y2I0OWQ5OGViLi5lMjIwMTJiNGM0
MTNkMDU2YmE0MjQ5YWNhNWU2ZmYzZGUzZDk4YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTQzLDcg
KzQzLDcgQEAgUGFzc1JlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQXVkaW9Db250
ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogCiAg
ICAgLy8gRklYTUU6IG9mZmxpbmUgY29udGV4dHMgaGF2ZSBsaW1pdGF0aW9ucyBvbiBzdXBwb3J0
ZWQgc2FtcGxlLXJhdGVzLgogICAgIC8vIEN1cnJlbnRseSBhbGwgQXVkaW9Db250ZXh0cyBtdXN0
IGhhdmUgdGhlIHNhbWUgc2FtcGxlLXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggMGU4MThhZWRjNWRm
MjNiMWM0NGRmMWQxZDg5NzA5OTY5YzcyNWUzNy4uNzk4YjM5OTExZDQ2Y2Y3MGJlMDU3NDZlNGFi
NDNhZWQ2YjVjMmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgRGF0
YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xl
YW51cFN5bmMpCiBib29sIERhdGFiYXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcygpIGNv
bnN0CiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7
Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9E
b2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBpZiAoIWRvY3VtZW50
LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2
YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTgsNyAr
MjE4LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJhc2VBY2Nlc3MoKSBjb25z
dAogdm9pZCBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJp
bmcmIG5hbWUsIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzKQogewogICAgIGlmIChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQogICAg
ICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEo
ZG9jdW1lbnQtPmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5NWY0NWVhNTFkYTZmODYxNTY5ZmYxM2Nk
ZGEzN2RmNDdkZDkzMjBjLi5jMjkxMDk1NGQ1OTIyNmU1MGUwZWZmNzk3MjRkYmZlNTZiNDI5NjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmNyZWF0ZShTY3JpcHQKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0g
ICAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpLCBjbGllbnQpOworICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUo
dG9Eb2N1bWVudChjb250ZXh0KSwgY2xpZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCAxNjU0NWE0MTEyOTZiYzdlMmY1NjgyY2RjMWU3NjE2YmY4NjUzNjcyLi5jMzNjNzQ3MTA2
NTdiZjM3YTNmNDc5MGIyYTNhODg3NmNjMTk2OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQg
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcHJvdG9jb2xzLCBFeGNlCiAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjaGVjayB0
aGUgaXNvbGF0ZWQgd29ybGQncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvbmNlIHdlYmtpdC5v
cmcvYi8xMDQ1MjAgaXMgc29sdmVkLgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2U7CiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1
bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSgpOwogICAgIH0KICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UobV91cmwpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCmluZGV4IGZkOGQzNmRlNWY0NTZiYjgzZThlMDg4NzkyY2U2ODhmMjFlZjc5NDMuLmNkYzNi
YzRkZGM5MzJiMzFjMjQ5NDU5Yzk5Y2I3NTQ1Njk5ODkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKSBjb25zdAogCiAgICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGlj
YXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250
ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX2NvbnRleHQp
OwogICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
ZG9jdW1lbnQsIHVybCk7CiAgICAgICAgIGlmICghY29va2llLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGZpZWxkcy5hcHBlbmQoIkNvb2tpZTogIiArIGNvb2tpZSk7CkBAIC0yNTEsNyArMjUxLDcg
QEAgUGFzc1JlZlB0cjxXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0PiBXZWJTb2NrZXRIYW5kc2hh
a2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QKIAogICAgIEtVUkwgdXJsID0gaHR0cFVSTEZvckF1
dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQo
KSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9j
b250ZXh0KTsKICAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGRvY3VtZW50LCB1cmwpOwogICAgICAgICBpZiAoIWNvb2tpZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXF1ZXN0LT5hZGRIZWFkZXJGaWVsZCgiQ29va2llIiwgY29va2llKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE0M2M4ZjJiMGE3
YWZmNzVkNDAxMjI3NmNmN2U4OTI2ZmI0NmYyMjAuLmIxNmRmZDIzMjdhZmQxMjQ0MDU1YWEwODM1
N2UxNzNhOWQ4MmVlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OnJlc3VtZSgpCiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
Y2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIDogbV93
b3JrZXJDbGllbnRXcmFwcGVyKGNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxv
YWRlclByb3h5KQotICAgICwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbChXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgdGhpcykpCisgICAgLCBt
X21haW5XZWJTb2NrZXRDaGFubmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSh0b0RvY3VtZW50
KGNvbnRleHQpLCB0aGlzKSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDQxZTljYTE3MjNk
YzU3YjZhZmVlMDg2MGY5YzZmZDI2YTAyODRkMWIuLmU1ZjA1ODkxOWJkNTMwOGU5NGQ1M2E4MTAx
NTQ5MDI0ZTEwZThhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMjgwMSw3ICsyODAxLDcg
QEAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90
ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIWRvYyB8fCAhZG9jLT5pc1NWR0RvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2MpLT5yb290RWxlbWVudCgpOwor
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChkb2MpLT5yb290
RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXJSb290ID0gcm9vdEVsZW1lbnQtPnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01SZXF1ZXN0U3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVJlcXVlc3RTdGF0ZS5oCmluZGV4IDMyZDRl
ZGM5ZjIzM2JjNGE5NWQxZGRhNDAxYzQ3YWE2N2I4YzJhZDEuLjQxZDMzNmVlNjExMjM5NTVhYjY0
MTIzNzJiODExNDYxZjFhOWJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVJlcXVlc3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVJlcXVlc3RTdGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2V4
ZWMoMCkKICAgICB7CiAgICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9j
dW1lbnQoKSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAg
ICAgICAgICAgbV9leGVjID0gc2NyaXB0U3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgZG9jdW1lbnQtPnBhZ2UoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKFdP
UktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
dGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggNjFkNzg3ZDRmZTIxNTAxOTIyZjExMjJmMDM0MjM3Mjg3MDIzYzY3
ZS4uMTI5ZTY1ZDFkOGNiMmQ5Yzc0N2Y4ODg1NmU1MmY5ZTM1NWEwNTYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQXVkaW9Db250ZXh0
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KAogICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJBdWRpb0NvbnRleHQgY29uc3RydWN0
b3IgY2FsbGVkIGluIGEgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IHdoaWNoIGlzIG5vdCBhIGRv
Y3VtZW50IikpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgUmVmUHRyPEF1ZGlvQ29u
dGV4dD4gYXVkaW9Db250ZXh0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAppbmRleCBhZjY5OTgzOTc5MzQ4MDEwZTUyMzJkZGIwOTdlNjNjOTU1ZWUwMDVj
Li5iYjBkODljODAzMDcwYTMwMmYzNTllNDgwOWM5ZTk1MTI5NDM2YjFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtODIsNyArODIsNyBAQCBjbGFzcyBE
T01TdHJpbmdMaXN0OwogICAgIHB1YmxpYzoKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0b0RvY3Vt
ZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAppbmRleCBkNWE5NWIxOThjZTdhN2E0YTgxYmIyMzNkMDgzYTE0MDY5MTNhMTI2Li45MWZmYWI4
MDA2OTcwM2YzYTYxMmVhMTRiODEyMGY2NGY0MWFlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAg
SlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFs
T2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLCBleGVjKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBKU0RPTUds
b2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChEb2N1bWVudCogZG9jdW1lbnQsIERPTVdy
YXBwZXJXb3JsZCogd29ybAogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCkKIHsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCB3b3JsZCk7CisgICAgICAgIHJldHVy
biB0b0pTRE9NR2xvYmFsT2JqZWN0KHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCks
IHdvcmxkKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyNWI1MzM5MWJiNWM4NjczMzYzMTFhOTgw
NGQ0ZDM2M2JhMGVhMmFiLi5mMmQ5MmI0YjJmOTBlNGM0ZWE1MmE5YTQ1NDk2N2JmMDZiYjhiNGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCk7
CiAgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIEF0b21pY1N0
cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IGZpbmRBdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKTsKLSAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiAoc3RhdGljX2Nhc3Q8SFRN
TERvY3VtZW50Kj4oZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8
fCBkb2N1bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgeworICAg
ICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmICh0b0hUTUxEb2N1bWVudChkb2N1bWVudCkt
Pmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50
V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzT2JqZWN0LCBuYW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KQEAgLTMzNiw3ICszMzYsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZwog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAg
QXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIChzdGF0aWNf
Y2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCktPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0
eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkp
KSB7CisgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgKHRvSFRNTERvY3VtZW50KGRv
Y3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhh
c0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIG5hbWVkSXRlbUdldHRlcik7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLT5mcmFt
ZSgpLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewog
ICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYg
KHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21p
Y1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhhc0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVy
dHlOYW1lKSkpIHsKKyAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiAodG9IVE1MRG9j
dW1lbnQoZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8fCBkb2N1
bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBuYW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlIHwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNjNjg5M2IwMDg3OTQ5MDUzZmZmMzNkNWMzNDFm
NTE4YTA2MmE4ZTQuLmU2ODg1ZTFmMDA3ZjE5NjZmZTc1MTViZmFhMzI4M2QwODM4NGNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBKU0hUTUxEb2N1bWVudDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIFByb3AKIEpTVmFsdWUg
SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSFRNTERvY3VtZW50KiB0
aGlzT2JqID0ganNDYXN0PEpTSFRNTERvY3VtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAg
ICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
c09iai0+aW1wbCgpKTsKKyAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1MRG9jdW1l
bnQodGhpc09iai0+aW1wbCgpKTsKIAogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY29sbGVj
dGlvbiA9IGRvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAKQEAgLTg5LDcgKzg5LDcgQEAgSlNWYWx1ZSBKU0hUTUxE
b2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAodikKICAgICAgICAg
cmV0dXJuIHY7CiAKLSAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKS0+YWxsKCkpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCB0b0hUTUxEb2N1bWVudChpbXBsKCkpLT5hbGwoKSk7CiB9CiAK
IHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93
c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUg
d2luZG93LgogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAyKSB7Ci0gICAgICAgIEZy
YW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGltcGwoKSktPmZyYW1lKCk7
CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHRvSFRNTERvY3VtZW50KGltcGwoKSktPmZyYW1lKCk7
CiAgICAgICAgIGlmIChmcmFtZSkgewogICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd3Jh
cHBlciA9IHRvSlNET01XaW5kb3dTaGVsbChmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKICAg
ICAgICAgICAgIGlmICh3cmFwcGVyKSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgSlNWYWx1ZSBKU0hU
TUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgRG9jdW1lbnQqIGFjdGl2ZURv
Y3VtZW50ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCktPmRvY3VtZW50KCk7CiAKICAgICAvLyBJbiB0aGUgY2FzZSBvZiB0d28gcGFyYW1ldGVycyBv
ciBmZXdlciwgZG8gYSBub3JtYWwgZG9jdW1lbnQgb3Blbi4KLSAgICBzdGF0aWNfY2FzdDxIVE1M
RG9jdW1lbnQqPihpbXBsKCkpLT5vcGVuKGFjdGl2ZURvY3VtZW50KTsKKyAgICB0b0hUTUxEb2N1
bWVudChpbXBsKCkpLT5vcGVuKGFjdGl2ZURvY3VtZW50KTsKICAgICByZXR1cm4gdGhpczsKIH0K
IApAQCAtMTU3LDEzICsxNTcsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUo
RXhlY1N0YXRlKiBleGVjLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBOZXdsaW4KIAogSlNWYWx1
ZSBKU0hUTUxEb2N1bWVudDo6d3JpdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGRvY3VtZW50
V3JpdGUoZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKSwgRG9Ob3RBZGRO
ZXdsaW5lKTsKKyAgICBkb2N1bWVudFdyaXRlKGV4ZWMsIHRvSFRNTERvY3VtZW50KGltcGwoKSks
IERvTm90QWRkTmV3bGluZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFs
dWUgSlNIVE1MRG9jdW1lbnQ6OndyaXRlbG4oRXhlY1N0YXRlKiBleGVjKQogewotICAgIGRvY3Vt
ZW50V3JpdGUoZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKSwgRG9BZGRO
ZXdsaW5lKTsKKyAgICBkb2N1bWVudFdyaXRlKGV4ZWMsIHRvSFRNTERvY3VtZW50KGltcGwoKSks
IERvQWRkTmV3bGluZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
ODc0NDlhZjcxMjM2ZjdlN2QyZmVkNDliOTE1YzE4MzA0NzRkMmMwMi4uM2RmNjY0NGM0Yjk2OWFm
MTliMTE1Zjg4NmNhOTk1ODI4ODEwYTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNPYmpl
Y3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGV4ZWMKICAgICBpZiAobV9jb2RlLmlzTnVsbCgpIHx8IG1fZXZlbnRQYXJh
bWV0ZXJOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oZXhlY3V0aW9uQ29udGV4dCk7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChleGVjdXRpb25Db250ZXh0KTsKIAogICAg
IGlmICghZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggOTlmMmQ1NTIyYmNmOTBhMDQ5
ZDAyNGI0NTJiNmYzZTBjOTAwNWI0NC4uMGY3NGFhNTFkMTdkMmU5NmEzNjM5YzZiNTBmZmUyMmQy
MmZkMGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVX
cmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmoKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgICAgICAv
LyB3ZSBkb24ndCB3YW50IHRvIGNhY2hlIHRoZSBkb2N1bWVudCBpdHNlbGYgaW4gdGhlIHBlci1k
b2N1bWVudCBkaWN0aW9uYXJ5Ci0gICAgICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSkpOworICAgICAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0b0RvY3VtZW50KG5vZGUpKTsKICAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRG9jdW1lbnRUeXBlLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKaW5kZXggZmU1MWM4NGU0MzM5MjVhZDI1MWNkZWIxMTliY2JlOWNjODRjODkz
Yi4uYThjMGM4M2EwZDY3Y2MzYWI5YzY5NDE0MDM0MTc5YzYxNzY0NWU0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5p
c0RvY3VtZW50KCkpCi0gICAgICAgIGV4ZWN1dGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KSk7CisgICAgICAgIGV4ZWN1dGUodG9Eb2N1bWVudChjb250ZXh0KSk7CiAjaWYgRU5BQkxF
KFdPUktFUlMpCiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5pc1dvcmtlckNv
bnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCmluZGV4IGVmMjBmOWZlZWQzY2Q0ZjNhNjI4NjcwOWZmNzA1NDU5ZjkzNmU5
MmYuLjhmZWQxOGUwY2Q4ZTA1NmU0NmM1NDE4ODlhZDQ2MDk0OGM2N2Y2MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0z
MjIwLDcgKzMyMjAsNyBAQCBFTkQKICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IEdl
dENvbnRleHRFbmFibGVGdW5jdGlvbigkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CiAgICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY29u
dGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgJHtlbmFibGVGdW5jdGlvbn0oc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpICYmICR7
ZW5hYmxlRnVuY3Rpb259KHRvRG9jdW1lbnQoY29udGV4dCkpKSB7XG4iKTsKICAgICAgICAgICAg
IG15ICRuYW1lID0gJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiJHtuYW1lfSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IGRlZmF1bHRTaWduYXR1cmUpLT5HZXRGdW5jdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMGE0Y2Mz
MzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNlNjIwYmYyY2QxNC4uZTcyZDE2ZTA0OWM4YzExMTMzZDA5
OGJmMzViM2U2NTFiMmMyYjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTMxOTUsMTAgKzMxOTUsMTAgQEAg
dm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHByb3QKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVy
ZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHByb3Rv
LT5DcmVhdGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1
bWVudCgpICYmIENvbnRleHRGZWF0dXJlczo6ZW5hYmxlZFBlckNvbnRleHRNZXRob2QxRW5hYmxl
ZChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkgeworICAgIGlmIChjb250ZXh0ICYm
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmVuYWJsZWRQZXJDb250
ZXh0TWV0aG9kMUVuYWJsZWQodG9Eb2N1bWVudChjb250ZXh0KSkpIHsKICAgICAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMSIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29u
dGV4dE1ldGhvZDFNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVy
ZSktPkdldEZ1bmN0aW9uKCkpOwogICAgIH0KLSAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5p
c0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpIHsKKyAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0
LT5pc0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQodG9E
b2N1bWVudChjb250ZXh0KSkpIHsKICAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDJNZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGY5NWUyYWExMzc1ZTQyMDQyMWQ0ZDI3MThhMjEwYTM4NTE0
NDYwNzQuLjI3ZTgwMTUxYzUyNTc2ZTk0YzFmNmUwNGY3ZTI4NGZhMjE0MGYyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRDbGll
bnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1lc3NhZ2VMb29wPiBjCiB2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y29tcGlsZVNjcmlwdChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFN0cmluZyogc2Ny
aXB0SWQsIFN0cmluZyogZXhjZXB0aW9uTWVzc2FnZSkKIHsKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc3RhdGUtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFtZSgpOworICAgIFJlZlB0cjxGcmFtZT4g
cHJvdGVjdCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmZyYW1lKCk7CiAg
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbXBpbGVTY3JpcHQoc3RhdGUsIGV4cHJlc3Npb24sIHNv
dXJjZVVSTCwgc2NyaXB0SWQsIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIGlmICghc2NyaXB0SWQt
PmlzTnVsbCgpKQogICAgICAgICBtX2NvbXBpbGVkU2NyaXB0VVJMcy5zZXQoKnNjcmlwdElkLCBz
b3VyY2VVUkwpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpydW5TY3JpcHQoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkCiAg
ICAgU3RyaW5nIHNvdXJjZVVSTCA9IG1fY29tcGlsZWRTY3JpcHRVUkxzLnRha2Uoc2NyaXB0SWQp
OwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IHN0YXRlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+ZnJhbWUoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFt
ZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWU7CiAgICAgaWYg
KGZyYW1lKQogICAgICAgICBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxF
dmFsdWF0ZVNjcmlwdChmcmFtZSwgc291cmNlVVJMLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3Np
dGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGU1YWU3YzNhNDFkZTQxZjIyMmQ4ODM4Y2Mx
ZmQ1ZWVkOGE2ZTNlNjMuLmFlMmYxNzI2MzRjYWVmOTg0OGNlYzU0ZDNiYjkxYjIyOWM2YzJlYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcApA
QCAtNzgsNyArNzgsNyBAQCBTY2hlZHVsZWRBY3Rpb246On5TY2hlZHVsZWRBY3Rpb24oKQogdm9p
ZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIEZyYW1lKiBm
cmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7CisgICAgICAg
IEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgICAgIGlm
ICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZnJhbWUtPnNjcmlw
dCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBjNTA1M2JhOWNjOWZjNWViM2RlN2M2
YWM4NzE5ZmE0ZjFjYTI1N2I0Li5lYjhhYzRhMjE2ZWUzZWVjZGQ3NGZkMDU2MWM1NzZiNzQ0MDgx
MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTI2MSw3
ICsyNjEsNyBAQCBGcmFtZSogdG9GcmFtZUlmTm90RGV0YWNoZWQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3Js
ZENvbnRleHQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUo
KSkKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1l
KCkpCiAgICAgICAgICAgICByZXR1cm4gd29ybGRDb250ZXh0LmFkanVzdGVkQ29udGV4dChmcmFt
ZS0+c2NyaXB0KCkpOwogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIH0gZWxzZSBpZiAoY29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFdvcmxkQwogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewogICAgIGlm
IChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdG9yZSB0aGUgRE9NV3JhcHBlcldvcmxkIGZvciB0aGUgbWFpbiB3b3JsZCBp
biB0aGUgdjg6OkNvbnRleHQgc28gY2FsbGVycwogICAgICAgICAgICAgLy8gdGhhdCBhcmUgbG9v
a2luZyB1cCB0aGVpciB3b3JsZCB3aXRoIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZCh2
ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKQogICAgICAgICAgICAgLy8gd29uJ3QgZW5kIHVwIHBh
c3NpbmcgbnVsbCBoZXJlIHdoZW4gbGF0ZXIgdHJ5aW5nIHRvIGdldCB0aGVpciB2ODo6Q29udGV4
dCBiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggODcxYzMyOGIyNTNhYTkzMmNmMTIyOGUyMTkzZTRkMDBiZjRlNjhhMC4uY2I4MGYz
MjY0MjljZTQyZWU1N2FjNjE2YTY0ZDk3ZjUwMDZlMWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IFY4RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgRnJhbWUqIGZyYW1lID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJh
bWUgPSB0b0RvY3VtZW50KGNvbnRleHQpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGE3NGU1YjA5YjJi
NDM4NTk5Njc2NDEyOTIwZjAyYmI4ZWYzYzY1ZGQuLjkyOWI1MDM2MmE2MTc4NGEwNjI4N2MwZmQw
ZmExMDAyYTJlNDI3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvCiAgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0b0RvY3Vt
ZW50KGNvbnRleHQpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCkBAIC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIFY4TGF6
eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmIChoYXNFeGlzdGluZ0xpc3RlbmVyT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgIXN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lu
bGluZUV2ZW50SGFuZGxlcnMobV9zb3VyY2VVUkwsIG1fcG9zaXRpb24ubV9saW5lKSkKKyAgICBp
ZiAoY29udGV4dC0+aXNEb2N1bWVudCgpICYmICF0b0RvY3VtZW50KGNvbnRleHQpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKG1fc291cmNlVVJMLCBt
X3Bvc2l0aW9uLm1fbGluZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKIAogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAg
IEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7
CisgICAgRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+ZnJhbWUoKTsKICAgICBB
U1NFUlQoZnJhbWUpOwogICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IGZiNzQyYjRjNzdiYThjMTI4Mzg3NmRiNmFjZDlmMDViNmI2M2ZkZjguLjU5NWJkZjg5
OWZkZmNmNjNhMzFlOTAyMGQwZTA4ZWEwMTJjYjc2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDgz
LDcgKzQ4Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQcm9w
ZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgRG9jdW1lbnQqIGRvYyA9
IGZyYW1lLT5kb2N1bWVudCgpOwogCiAgICAgaWYgKGRvYyAmJiBkb2MtPmlzSFRNTERvY3VtZW50
KCkpIHsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvYyktPmhhc05h
bWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFzRWxlbWVudFdpdGhJZChwcm9wTmFt
ZS5pbXBsKCkpKSB7CisgICAgICAgIGlmICh0b0hUTUxEb2N1bWVudChkb2MpLT5oYXNOYW1lZEl0
ZW0ocHJvcE5hbWUuaW1wbCgpKSB8fCBkb2MtPmhhc0VsZW1lbnRXaXRoSWQocHJvcE5hbWUuaW1w
bCgpKSkgewogICAgICAgICAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGRvYy0+
d2luZG93TmFtZWRJdGVtcyhwcm9wTmFtZSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW1zLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXRlbXMtPmhhc0V4YWN0bHlPbmVJdGVtKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dEN1c3RvbS5jcHAKaW5kZXggNjA4ZTcwODRlZTA1ZjFmNTYyOWM0OGUzZTZhZjVjNmY2NDAyNDQ4
Ny4uM2Q3MWVhNjgxMzg3NDBiMzM5NDU5MTdkYmEwMGRmNzI3MzJkZDlhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNw
cApAQCAtOTMsMTAgKzkzLDEwIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChEb2N1bWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRlCiB7CiAgICAgQVNT
RVJUKGltcGwpOwogICAgIGlmIChpbXBsLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gd3JhcChzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIHdyYXAodG9IVE1MRG9jdW1lbnQoaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoaW1wbC0+
aXNTVkdEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gd3JhcChzdGF0aWNfY2FzdDxTVkdEb2N1
bWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4g
d3JhcCh0b1NWR0RvY3VtZW50KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2Vu
ZGlmCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6Y3Jl
YXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmICh3cmFw
cGVyLklzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUN1c3RvbS5jcHAKaW5kZXggN2MyZmY5ZGVlYzFjZTgyNTFlOWFiMzBmODhiNzg1MGI0
YzkzMDc0OC4uYzE3ZjZlMzA0MjRhYjQwMTg0MTU3ZDU3NGQ5YTEwMzk5NmQ2YjY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAK
QEAgLTE0OSw3ICsxNDksNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoTm9kZSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgY2FzZSBOb2Rl
OjpDT01NRU5UX05PREU6CiAgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PENvbW1lbnQq
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX05PREU6Ci0gICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiB3cmFwKHRvRG9j
dW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpE
T0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PERvY3Vt
ZW50VHlwZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA3YjM4MzFiN2UyNmUwODE5N2JlMzVlZjhiNDNhMWQ1ZjE5ZWY3ZjZlLi41Y2NkN2Fj
ZDdhZjBlZmUyMTIxYzEzYjkwMjM1YjAxYTJlNzEzMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25D
b2RlIGNoZWNrQWNjZXB0Q2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXcK
ICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKIAogICAgIGlmIChvbGRDaGls
ZCAmJiBuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKCFzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG5ld1BhcmVudCktPmNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xk
Q2hpbGQpKQorICAgICAgICBpZiAoIXRvRG9jdW1lbnQobmV3UGFyZW50KS0+Y2FuUmVwbGFjZUNo
aWxkKG5ld0NoaWxkLCBvbGRDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOwogICAgIH0gZWxzZSBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZChuZXdQYXJlbnQs
IG5ld0NoaWxkKSkKICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCA4NDRlMGU4
YjNkOTlmMjI5ZmNjMmYyMzM0ZDQwMzUyNTRiNTY0MDgzLi5jZTFiZWUyYzJjODFiYTYzZTRjNDU3
ODBiYzc0YTg2ZjEzNjE5MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
fkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcigpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOyB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdG9Eb2N1
bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CiAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IGQ4YjBjZDkwNTUwNjVmMzc4ZGE2NzgxYWViMjAxN2Qz
YjNhN2E2ZmEuLjQ4ODYzYmIxNWEwMDhmZWU0NTA4MTljOGQ2ZWUyMjE4YWJhN2JkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC0xNjQsNyAr
MTY0LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKIAogaW5saW5lIERvY3VtZW50KiBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJldHVybiB0
b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IGM1ODQ3YWZkODIwYTIxN2Q0ODExNDA5OTkwNDBhYmU5N2IwZjdlZTYu
LjlkNWU3NGU2YzIyMDA1MTYwNmIzN2E5ODhkNDFkNGRiZmY0YzY5ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtMjg2NCw3ICsyODY0LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0
dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYWtlIHNldENvb2tpZSB3b3JrIG9uIFhNTCBkb2N1bWVudHMgdG9vOyBl
LmcuIGluIGNhc2Ugb2YgPGh0bWw6bWV0YSAuLi4uLj4KICAgICAgICAgaWYgKGlzSFRNTERvY3Vt
ZW50KCkpIHsKICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1bWVu
dHMpIGlnbm9yZWQuCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlz
KS0+c2V0Q29va2llKGNvbnRlbnQsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICAgICAgdG9I
VE1MRG9jdW1lbnQodGhpcyktPnNldENvb2tpZShjb250ZW50LCBJR05PUkVfRVhDRVBUSU9OKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJjb250
ZW50LWxhbmd1YWdlIikpCiAgICAgICAgIHNldENvbnRlbnRMYW5ndWFnZShjb250ZW50KTsKQEAg
LTU3NTUsNyArNTc1NSw3IEBAIE5vZGUqIGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2MpCiAgICAgICAgIHJldHVybiAwOwogICAgIE5vZGUqIG5vZGUgPSBkb2MtPmZvY3Vz
ZWROb2RlKCk7CiAgICAgaWYgKCFub2RlICYmIGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpKSB7Ci0g
ICAgICAgIFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBsdWdp
bkRvY3VtZW50Kj4oZG9jKTsKKyAgICAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdpbkRvY3VtZW50
ID0gdG9QbHVnaW5Eb2N1bWVudChkb2MpOwogICAgICAgICBub2RlID0gIHBsdWdpbkRvY3VtZW50
LT5wbHVnaW5Ob2RlKCk7CiAgICAgfQogICAgIGlmICghbm9kZSAmJiBkb2MtPmlzSFRNTERvY3Vt
ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0MWEwNWRlMTM0ODEyYTg1M2RjZjUwYWEy
MDlhZjNhZWRhMDdmZWIuLjc4NjU2NzNmYTNlYzUyNWUyYzdmNWM3MTQ2OGI4YzI4ZjMxYzgyNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgdm9pZCAoKkFyZ3VtZW50c0NhbGxiYWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKICAg
ICB2b2lkIHByb2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0
YSwgQXJndW1lbnRzQ2FsbGJhY2spOwogCi0gICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCkBA
IC0xNTgzLDYgKzE1ODMsMzMgQEAgaW5saW5lIGNvbnN0IERvY3VtZW50KiBEb2N1bWVudDo6dGVt
cGxhdGVEb2N1bWVudCgpIGNvbnN0CiB9CiAjZW5kaWYKIAoraW5saW5lIERvY3VtZW50KiB0b0Rv
Y3VtZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7
CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKwor
aW5saW5lIGNvbnN0IERvY3VtZW50KiB0b0RvY3VtZW50KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKworaW5saW5lIERvY3VtZW50KiB0b0RvY3Vt
ZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
IW5vZGUgfHwgbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERvY3VtZW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBjb25zdCBEb2N1bWVudCogdG9Eb2N1bWVu
dChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKCFub2RlIHx8IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG5vZGUpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRv
aW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQq
KTsKKwogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhl
IERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4K
IAogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUeXBlLmNwcAppbmRleCBjZDFkNDg1MzQ2OTliYTg1OWExZjMzYTFiZDJjNmY5MWNi
ODRlMzg0Li5iYzkxNzdiYzVhMWExNDNhNGYxNDAzZGU5ZDIxNjJiMzVmM2ZkZjE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IERvY3VtZW50VHlwZTo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqIGlucwogICAgIC8vIE91ciBkb2N1bWVudCBub2RlIGNhbiBiZSBudWxsIGlmIHdlIHdl
cmUgY3JlYXRlZCBieSBhIERPTUltcGxlbWVudGF0aW9uLiAgV2UgdXNlIHRoZSBwYXJlbnQoKSBp
bnN0ZWFkLgogICAgIEFTU0VSVChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0RvY3Vt
ZW50Tm9kZSgpKTsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNEb2N1
bWVudE5vZGUoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihwYXJlbnROb2RlKCkpOworICAgICAgICBEb2N1bWVudCogZG9jID0gdG9Eb2N1bWVudChw
YXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIWRvYy0+ZG9jdHlwZSgpKQogICAgICAgICAgICAg
ZG9jLT5zZXREb2NUeXBlKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2
NjMwNDlhYjAxNGMyNzYxOTg5NTk1NTI1Yzk0NmE1NzNmMGE1OTdmLi45ZDM4MDQzMGM5YjM2ODFh
ODMwNWI5ZjE3ZGU3N2UzYjc1YWJlNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMTk5
LDcgKzIxOTksNyBAQCBBdG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1
YWdlKCkgY29uc3QKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChuLT5pc0RvY3Vt
ZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAvLyBjaGVja2luZyB0aGUgTUlNRSBjb250ZW50LWxh
bmd1YWdlCi0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50Kj4o
biktPmNvbnRlbnRMYW5ndWFnZSgpOworICAgICAgICAgICAgdmFsdWUgPSB0b0RvY3VtZW50KG4p
LT5jb250ZW50TGFuZ3VhZ2UoKTsKICAgICAgICAgfQogCiAgICAgICAgIG4gPSBuLT5wYXJlbnRO
b2RlKCk7CkBAIC0yNjgyLDEwICsyNjgyLDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZWRJ
dGVtUmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghb2xkTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHN0
YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVOYW1lZEl0ZW0ob2xk
TmFtZSk7CisgICAgICAgIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KCkpLT5yZW1vdmVOYW1lZEl0
ZW0ob2xkTmFtZSk7CiAKICAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQotICAgICAgICBzdGF0
aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJdGVtKG5ld05hbWUp
OworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+YWRkTmFtZWRJdGVtKG5ld05h
bWUpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUV4dHJhTmFtZWRJdGVtUmVnaXN0cmF0aW9u
KGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCkBA
IC0yNjk0LDEwICsyNjk0LDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRXh0cmFOYW1lZEl0ZW1S
ZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFvbGRJZC5pc0VtcHR5KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhU
TUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVkSXRlbShvbGRJZCk7Cisg
ICAgICAgIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVkSXRlbShv
bGRJZCk7CiAKICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFtZWRJdGVtKG5ld0lkKTsKKyAg
ICAgICAgdG9IVE1MRG9jdW1lbnQoZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFtZWRJdGVtKG5ld0lk
KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRWxlbWVudDo6ZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwCmluZGV4IGMxMWQyMGYxMmRhM2ViZGI2MGRlNzlhYTBhOTA4NDhkZmI1MDdkMTcuLmMw
OTNlYzFiOWZjY2FmOTliOWZmMTVkMjlhZTE5NGQ1YWE5OTI4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmZpcmVF
dmVudExpc3RlbmVycyhFdmVudCogZXZlbnQpCiAgICAgaWYgKCFwcmVmaXhlZFR5cGVOYW1lLmlz
RW1wdHkoKSkgewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5p
c0RvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAgICAgICAgaWYgKGRvY3VtZW50LT5kb21XaW5k
b3coKSkgewogICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lclByZWZpeGVkVmVjdG9yKQogICAg
ICAgICAgICAgICAgICAgICBpZiAobGlzdGVuZXJVbnByZWZpeGVkVmVjdG9yKQpAQCAtMjYzLDcg
KzI2Myw3IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCogZXZl
bnQsIEV2ZW50VGFyZ2V0RGF0YSogZCwgRXZlbnRMaXN0CiAgICAgaWYgKHVzZXJFdmVudFdhc0hh
bmRsZWQpIHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNE
b2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
dG9Eb2N1bWVudChjb250ZXh0KTsKICAgICAgICAgICAgIGRvY3VtZW50LT5yZXNldExhc3RIYW5k
bGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCAyYmI5NDBjODllZTE1ZTM5OWYz
NjE5N2RhNjkxNjhjZGI2ZDUwMGQ3Li5mOWMwNzNkZTcyYzM1MWY5NmRlOTk1NzNiOWI3NzQ1YTY4
M2ZhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCkBA
IC0xMDMsOCArMTAzLDcgQEAgdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNjYXJkTmFtZWRG
bG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogRG9jdW1lbnQqIE5hbWVkRmxvd0NvbGxl
Y3Rpb246OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICBBU1NFUlQoIWNvbnRleHQgfHwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICByZXR1cm4gdG9E
b2N1bWVudChjb250ZXh0KTsKIH0KIAogUGFzc1JlZlB0cjxET01OYW1lZEZsb3dDb2xsZWN0aW9u
PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGVDU1NPTVNuYXBzaG90KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCAzY2IwZTZmNzIxZDg3OTM0MWU2ZWE4NGNjMzdmZDMyMWRkY2ViODRkLi5lMGY5NjMy
Njg2OGJkOTViNGZmOTBmNjRhZmE5ZjMzMDBlZTE2MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0x
NDkyLDcgKzE0OTIsNyBAQCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFjZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBET0NVTUVOVF9OT0RFOgotICAgICAg
ICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPih0aGlz
KS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoRWxlbWVudCogZGUgPSB0b0Rv
Y3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZGUtPmlzRGVmYXVsdE5hbWVzcGFjZShuYW1lc3BhY2VVUkkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgpAQCAtMTUyNSw3ICsxNTI1LDcgQEAg
U3RyaW5nIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcgJm5hbWVzcGFjZVVS
SSkgY29uc3QKICAgICAgICAgY2FzZSBFTEVNRU5UX05PREU6CiAgICAgICAgICAgICByZXR1cm4g
bG9va3VwTmFtZXNwYWNlUHJlZml4KG5hbWVzcGFjZVVSSSwgc3RhdGljX2Nhc3Q8Y29uc3QgRWxl
bWVudCAqPih0aGlzKSk7CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfTk9ERToKLSAgICAgICAgICAg
IGlmIChFbGVtZW50KiBkZSA9IHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50Kj4odGhpcyktPmRv
Y3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gdG9Eb2N1bWVu
dCh0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRlLT5s
b29rdXBQcmVmaXgobmFtZXNwYWNlVVJJKTsKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICAgICAgY2FzZSBFTlRJVFlfTk9ERToKQEAgLTE1ODMsNyArMTU4Myw3IEBAIFN0cmluZyBO
b2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBET0NVTUVO
VF9OT0RFOgotICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoRWxl
bWVudCogZGUgPSB0b0RvY3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZGUtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwogICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmNwcAppbmRleCAwNzA5MzMwODhlMjVkZTgzY2Ew
NzBkZDQxYjlhN2JjMWU1OTUwMjY3Li5kNjNlZTM5N2YxMWZlN2EzZDYwNGUxMzBmODFmMzc1MzY0
YTE3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmNwcApAQCAt
NDYsNyArNDYsNyBAQCBXaW5kb3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50Q29udGV4dChFdmVu
dCogZXZlbnQsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgY29ucwogICAgIGlmICghdG9wTGV2ZWxD
b250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2lu
ZG93ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdpbmRv
dygpOworICAgIG1fd2luZG93ID0gdG9Eb2N1bWVudCh0b3BMZXZlbENvbnRhaW5lciktPmRvbVdp
bmRvdygpOwogICAgIG1fdGFyZ2V0ID0gdG9wRXZlbnRDb250ZXh0ID8gdG9wRXZlbnRDb250ZXh0
LT50YXJnZXQoKSA6IG5vZGUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggZTNhYmI5NTc4OTNmYmM3NzE1MzZjNDNlNjlkNWMy
OWJhYzdmNGM5OC4uMDU4MTFlYTAwMTAyMTA4OGMxMWI0ZTA2ZDM0MDM2MDE3ZDk0YjU0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTUwMSw3
ICs1MDEsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cChTdHJp
bmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IE5vZGUqIG5vZAogICAgICAgICBhcHBlbmRDb21tZW50
KHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgQ29tbWVudCo+KG5vZGUpLT5kYXRhKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgICAgIGFwcGVu
ZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPihub2Rl
KSk7CisgICAgICAgIGFwcGVuZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgdG9Eb2N1bWVudChub2Rl
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9E
RToKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAppbmRleCAyYWFh
Nzk4YWVhZmY3ODEwMmVkNDQxMTllODk2ODhlZTc0MjgyNzEzLi41MTQyMDcyNThmNjJlNmI1ZTgx
YzM2ZWJlMmZlM2YwMWRkMTc5MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAg
LTEwNyw2ICsxMDcsMjEgQEAgaW5saW5lIGJvb2wgSFRNTERvY3VtZW50OjpoYXNFeHRyYU5hbWVk
SXRlbShBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQogICAgIHJldHVybiBtX2V4dHJhTmFtZWRJdGVt
Q291bnRzLmNvbnRhaW5zKG5hbWUpOwogfQogCitpbmxpbmUgSFRNTERvY3VtZW50KiB0b0hUTUxE
b2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCitpbmxp
bmUgY29uc3QgSFRNTERvY3VtZW50KiB0b0hUTUxEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9j
dW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50
IHx8IGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2gg
YW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvSFRNTERvY3VtZW50KGNv
bnN0IEhUTUxEb2N1bWVudCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBIVE1MRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuY3BwCmluZGV4IGU2YzNlMmZhYjUwNTc2YTc3OGU1MDlkNjRhMjhkMWIwOGY0OTQ1NTAu
LjI1MjUyMmVkNGZmNGYzYTNlNzFmNTNmNmIxMDI3ZWFiMzhlMDkwOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCBTVkdEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpnZXRTVkdEb2N1bWVudChFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBEb2N1bWVudCogZG9jID0gY29udGVudERvY3Vt
ZW50KCk7CiAgICAgaWYgKGRvYyAmJiBkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jKTsKKyAgICAgICAgcmV0dXJuIHRvU1ZH
RG9jdW1lbnQoZG9jKTsKICAgICAvLyBTcGVjOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3Ry
dWN0Lmh0bWwjSW50ZXJmYWNlR2V0U1ZHRG9jdW1lbnQKICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcAppbmRleCA0ZDg2NDhiZDBhYjc4MTEyN2E3MzE3NDM3NzA0ZDQ3ZTdkZTM2OWFkLi44YjAx
N2U2YTg2MDQ4OGZhZTkyMDY5NWU5OWIxNzUzODM1Mjg3ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEhUTUxJRnJh
bWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdAogewogICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CiAgICAgICAgIGlmIChp
bkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhaXNJblNoYWRv
d1RyZWUoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19j
YXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOworICAgICAgICAgICAgSFRNTERv
Y3VtZW50KiBkb2N1bWVudCA9IHRvSFRNTERvY3VtZW50KHRoaXMtPmRvY3VtZW50KCkpOwogICAg
ICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1fbmFtZSk7CiAgICAgICAg
ICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0odmFsdWUpOwogICAgICAgICB9CkBAIC0x
MTMsNyArMTEzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MSUZy
YW1lRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUKIHsKICAgICBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IHJlc3VsdCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRl
ZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgIWluc2VydGlvblBvaW50LT5p
c0luU2hhZG93VHJlZSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1
bWVudCgpKS0+YWRkRXh0cmFOYW1lZEl0ZW0obV9uYW1lKTsKKyAgICAgICAgdG9IVE1MRG9jdW1l
bnQoZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFtZWRJdGVtKG1fbmFtZSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAgICAgaWYgKGluc2Vy
dGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAm
JiAhaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgIHN0YXRpY19jYXN0
PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX25hbWUp
OworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+cmVtb3ZlRXh0cmFOYW1lZEl0
ZW0obV9uYW1lKTsKIH0KIAogYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6c2hvdWxkRGlzcGxheVNl
YW1sZXNzbHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggY2Y4ZWFlNmJjMDE4Njg4NmNiZjcyMTg5ZWZiZTRmNGYzOWFjMjhhNS4uYWM1YzBiMmYw
ODdmNjk0NjgzOTkzODNjMGI5MTVlNTk0NWYzYjIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNjI0LDcgKzM2MjQsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIqKQogICAg
IC8vIFRoaXMgaXMgbm9ybWFsbHkgYWNjZXB0YWJsZSBleGNlcHQgd2hlbiB3ZSBhcmUgaW4gYSBz
dGFuZGFsb25lCiAgICAgLy8gTWVkaWFEb2N1bWVudC4gSWYgc28sIHRlbGwgdGhlIGRvY3VtZW50
IHdoYXQgaGFzIGhhcHBlbmVkLgogICAgIGlmIChvd25lckRvY3VtZW50KCktPmlzTWVkaWFEb2N1
bWVudCgpKSB7Ci0gICAgICAgIE1lZGlhRG9jdW1lbnQqIG1lZGlhRG9jdW1lbnQgPSBzdGF0aWNf
Y2FzdDxNZWRpYURvY3VtZW50Kj4ob3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgTWVkaWFEb2N1
bWVudCogbWVkaWFEb2N1bWVudCA9IHRvTWVkaWFEb2N1bWVudChvd25lckRvY3VtZW50KCkpOwog
ICAgICAgICBtZWRpYURvY3VtZW50LT5tZWRpYUVsZW1lbnRTYXdVbnN1cHBvcnRlZFRyYWNrcygp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5k
ZXggZjRkNjc1ODJkNDllYWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYzN2MwMy4uMjRlMTkyOTI4NDli
ZGM5YzhlZGFhNzFlYTVhYmI0Y2ZjM2QxNjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVt
ZW50Ojp1cGRhdGVEb2NOYW1lZEl0ZW0oKQogICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpOwogICAgIH0KICAgICBpZiAoaXNOYW1lZEl0ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGRv
Y3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOworICAg
ICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1MRG9jdW1lbnQodGhpcy0+ZG9jdW1l
bnQoKSk7CiAgICAgICAgIGlmIChpc05hbWVkSXRlbSkgewogICAgICAgICAgICAgZG9jdW1lbnQt
PmFkZE5hbWVkSXRlbShnZXROYW1lQXR0cmlidXRlKCkpOwogICAgICAgICAgICAgZG9jdW1lbnQt
PmFkZEV4dHJhTmFtZWRJdGVtKGdldElkQXR0cmlidXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAKaW5kZXggZGEyNGZhNmMxMzcwZjM2ZDQ0MzdlMjRkYTZmOGQ3YjIxOTMz
ZmE5Ni4uMzMxZGFhMzc2N2IxYTM5MDkwYmRkNGNmOTRiYWNiN2ViNjRmY2RlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAog
ICAgIEltYWdlRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxJbWFnZURvY3VtZW50Kj4oUmF3RGF0YURvY3VtZW50UGFyc2VyOjpkb2N1
bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIHRvSW1hZ2VEb2N1bWVudChSYXdEYXRhRG9jdW1lbnRQ
YXJzZXI6OmRvY3VtZW50KCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5oCmluZGV4IGZhZjkyMDcwZmY0MDI1NDg5NDZlN2E2ODAxNWVlMTI0MTRj
ODIyMjMuLmY2Zjk5OGU4MGRjODZlMmQwYmZiMDg0YTY5M2YzNDE2YWRmYWUwYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCkBAIC03MSw3ICs3MSwyMiBAQCBwcml2YXRlOgogICAg
IC8vIFdoZXRoZXIgdGhlIGltYWdlIHNob3VsZCBiZSBzaHJ1bmsgb3Igbm90CiAgICAgYm9vbCBt
X3Nob3VsZFNocmlua0ltYWdlOwogfTsKLSAgICAKKworaW5saW5lIEltYWdlRG9jdW1lbnQqIHRv
SW1hZ2VEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0ltYWdlRG9jdW1lbnQo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlRG9jdW1lbnQqPihkb2N1bWVudCk7Cit9
CisKK2lubGluZSBjb25zdCBJbWFnZURvY3VtZW50KiB0b0ltYWdlRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNJbWFnZURvY3VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBJbWFnZURvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlz
IHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvSW1h
Z2VEb2N1bWVudChjb25zdCBJbWFnZURvY3VtZW50Kik7CisKIH0KIAogI2VuZGlmIC8vIEltYWdl
RG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAppbmRleCAyZDgxMjk2M2Jm
MTFmYmVhNmQxYzVjNjBlZTc2MWNjMjg2NDIxODdlLi5lYzc3N2FlZGJlMzg3YjM2NmQ0OWQ0YzZj
MTdmYWNlMWE4OThjMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaApAQCAtNTQs
NyArNTQsMjIgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPE1lZGlhRG9jdW1lbnQ+IG1fcmVwbGFj
ZU1lZGlhRWxlbWVudFRpbWVyOwogfTsKLSAgICAKKworaW5saW5lIE1lZGlhRG9jdW1lbnQqIHRv
TWVkaWFEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc01lZGlhRG9jdW1lbnQo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhRG9jdW1lbnQqPihkb2N1bWVudCk7Cit9
CisKK2lubGluZSBjb25zdCBNZWRpYURvY3VtZW50KiB0b01lZGlhRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNNZWRpYURvY3VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBNZWRpYURvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlz
IHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvTWVk
aWFEb2N1bWVudChjb25zdCBNZWRpYURvY3VtZW50Kik7CisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGM5OWUzNTA5OTNjMzI5Zjg5NzI5MmM5
MjUyMGYxMDhlZGY4M2E2NTYuLjhlZDU2NzJiN2VhYTAzMDEwMGM1ZWRkODVjMmE4MmI2YjI3NzFi
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkK
ICAgICBpZiAobG9hZGVyKQogICAgICAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlKHR5
cGVBdHRyLCBsb2FkZXItPndyaXRlcigpLT5taW1lVHlwZSgpKTsKIAotICAgIHN0YXRpY19jYXN0
PFBsdWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnNldFBsdWdpbk5vZGUobV9lbWJlZEVsZW1l
bnQpOworICAgIHRvUGx1Z2luRG9jdW1lbnQoZG9jdW1lbnQoKSktPnNldFBsdWdpbk5vZGUobV9l
bWJlZEVsZW1lbnQpOwogCiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZW1iZWRFbGVtZW50LCBJR05P
UkVfRVhDRVBUSU9OKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAppbmRleCBj
Y2RlZTNmOWMzOWRkNWQwMTVjMTdiZDViZjVmNDE4MmM5NTc2OWEwLi40NTdmZTU4YjI4NTgwMjE4
ZDUxMGU3NTU1MTNlMTAxZGE4NjQyOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiBpbmxpbmUgUGx1Z2luRG9jdW1lbnQqIHRv
UGx1Z2luRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVu
dCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2N1bWVudCk7
CisgICAgcmV0dXJuIHRvUGx1Z2luRG9jdW1lbnQoZG9jdW1lbnQpOwogfQogCiBpbmxpbmUgY29u
c3QgUGx1Z2luRG9jdW1lbnQqIHRvUGx1Z2luRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGIy
MTk0M2JkOTI1ZGU4Y2FiMWQ0YmRmYjZmMmExMTUxNWQ2ZDMzMDUuLjVlZTNkMjIzN2Y0YTQwMTUz
ZjdkMDg4OWJlYTNmMGRmNGY4MWRhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBUZXh0VHJhY2tDdWU6OlRleHRUcmFj
a0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJs
ZQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcGF1c2VPbkV4aXQoZmFsc2UpCiAg
ICAgLCBtX3NuYXBUb0xpbmVzKHRydWUpCi0gICAgLCBtX2N1ZUJhY2tncm91bmRCb3goSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkKKyAgICAs
IG1fY3VlQmFja2dyb3VuZEJveChIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKHRvRG9jdW1lbnQoY29u
dGV4dCkpKQogICAgICwgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSh0cnVlKQogewogICAgIEFT
U0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA4OWRkMjUyMTZmMWQyNDk0MTdiY2Iw
YWM3NzgyMTk2YmEzZmZhZWU0Li5iNWM1Y2Y0ZWQwYTA5YTdjYTQ4YTA3ZjEyYTllYTM1MTVmYzVh
YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTE5Myw3
ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50
KTsKIAotICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CisgICAgRG9jdW1lbnQqIG93
bmVyRG9jdW1lbnQoKSB7IHJldHVybiB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IGNyZWF0ZURp
c3BsYXlUcmVlKCk7CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IGRpc3BsYXlUcmVl
SW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApp
bmRleCAyZDBmMzgxZDlmZjEwNTQ1Mzk4YWJmZjVjNDUzMjE0ZGE5MDI2Yjk4Li5kMzgzYTg0YWQy
NjZkMDUyZjRhZGNhNGEyMTRjZDE2Y2I1ZjEyYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiAgV2ViVlRUUGFyc2VyOjpjcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1
ZVRleHQoY28KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAg
CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2N1cnJlbnROb2RlID0gZnJhZ21lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBlZWU3
ZDRmMWVmNTYwZGU1YmNlMDUyZDk0M2ZjNjk5MjdmMzZiYzBhLi4xMDkwZmU1MDg5NDhhMWNiMjU5
NGIzZGM4ODE0M2ZlZGM0OTA1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTM3OCw3ICszNzgsNyBAQCBEb2N1bWVudCogSW5zcGVj
dG9yRE9NQWdlbnQ6OmFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IG5vZGVJZAogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgaXMgbm90IGF2YWlsYWJs
ZSI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihub2RlKTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChub2RlKTsKIH0KIAogRWxlbWVu
dCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkKQpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNv
bnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBub2RlLT5pc0RvY3VtZW50Tm9kZSgpID8gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihu
b2RlKSA6IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBu
b2RlLT5pc0RvY3VtZW50Tm9kZSgpID8gdG9Eb2N1bWVudChub2RlKSA6IG5vZGUtPm93bmVyRG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQo
KSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm90IGFuIEhUTUwgZG9jdW1lbnQiOwogICAg
ICAgICByZXR1cm47CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSog
bgogI2VuZGlmCiAKICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKTsK
KyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChub2RlKTsKICAgICAgICAg
dmFsdWUtPnNldERvY3VtZW50VVJMKGRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSk7CiAgICAg
ICAgIHZhbHVlLT5zZXRCYXNlVVJMKGRvY3VtZW50QmFzZVVSTFN0cmluZyhkb2N1bWVudCkpOwog
ICAgICAgICB2YWx1ZS0+c2V0WG1sVmVyc2lvbihkb2N1bWVudC0+eG1sVmVyc2lvbigpKTsKQEAg
LTE0ODksNyArMTQ4OSw3IEBAIHVuc2lnbmVkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckNoaWxk
Tm9kZUNvdW50KE5vZGUqIG5vZGUpCiBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJl
bnROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpIHsK
LSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2Rl
KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChub2RlKTsKICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5vd25lckVsZW1lbnQoKTsKICAgICB9CiAgICAgcmV0dXJuIG5v
ZGUtPnBhcmVudE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNGJkYWQ1NzZhZjE0MDQ4ODBjYTAxODMw
OTFlZDI5OGYzMDRmOTBhMy4uZmYwZjBiODYzYzZmOWNlZjllZDBhZTE4ZDk4NjFmN2VjODM4OWJk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ewogICAgIEZyYW1lKiBmcmFtZSA9IDA7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkK
LSAgICAgICAgZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgp
OworICAgICAgICBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgcmV0
dXJuIGZyYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNTNkOGZmYTMyOTk4MDY3YzIwMWQzODg0ZmYzYjI5
Y2Q1MTAzYzEyYi4uYjRhODMyMmQxM2Y3N2MxYmM1ZjRiOGI1M2FiNDU1NjMzOTg0ZDY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaApAQCAtMjA1Niw3ICsyMDU2LDcgQEAgaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnQKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOworICAgICAgICByZXR1cm4gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvclBhZ2UodG9Eb2N1bWVudChjb250ZXh0KS0+cGFnZSgpKTsKICNpZiBF
TkFCTEUoV09SS0VSUykKICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0Zvck5vbkRvY3Vt
ZW50Q29udGV4dChjb250ZXh0KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJlcmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVy
LmNwcAppbmRleCAzYzcwNWZmZmUzMDNkNzg1NzcwODE3MGMwNzMwOTFmNmRmNGQ1ZGM3Li41MWVh
MjVlOGJiODQzMzA1MDI4Njc4NWI1NTdiYzAyZTYzZDgzOThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QcmVyZW5kZXJlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFByZXJlbmRlcmVyOjpy
ZXN1bWUoKQogRG9jdW1lbnQqIFByZXJlbmRlcmVyOjpkb2N1bWVudCgpCiB7CiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHJldHVy
biB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFByZXJlbmRlcmVy
Q2xpZW50KiBQcmVyZW5kZXJlcjo6Y2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAKaW5kZXggMjZiYzhjYjFkYjliZGE0NzUwZDk0M2U5ZjdhZjRjZWVlZmZi
YmVmMC4uMDBhMWQ4ZmU2NzRmYzY0MWUxNjNmMmQzZmEwM2RmZTViZTkyNjJlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2
b2lkIFRleHRUcmFja0xvYWRlcjo6ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogcmVzb3VyYwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmNvcnNQb2xpY3lQ
cmV2ZW50ZWRMb2FkKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29s
ZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRyYWNrIGxvYWQgZGVu
aWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSkpOwotICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKFNlY3Vy
aXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKICAg
ICBtX3N0YXRlID0gRmFpbGVkOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgVGV4dFRyYWNr
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAg
QVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CiAKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwogICAgIGlmICghbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkKICAgICAgICAgJiYg
IWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc291cmNlLT5yZXNwb25z
ZSgpLnVybCgpKQogICAgICAgICAmJiAhcmVzb3VyY2UtPnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVj
ayhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29s
IFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGN1ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KGRvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpKSk7CiAKICAgICBpZiAoIWNyb3NzT3JpZ2luTW9k
ZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IDUzZTM0NzgzNDliNDdkNGY1MTIzNDJhNzYzODNlMDAzNjc3MDVlYzAuLmUzMDE4YjM1
NmIzYjA4ZDk1M2NjNWZhMThmMjhjOTQ2ZmNmZDQ5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUGFzc1JlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY28KICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAogICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgcmV0dXJuIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29u
dGV4dCksIGNsaWVudCwgcmVxdWVzdCwgb3B0aW9ucyk7CisgICAgcmV0dXJuIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHRvRG9jdW1lbnQoY29udGV4dCksIGNsaWVudCwgcmVxdWVz
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQg
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCiAKICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAg
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMpOwor
ICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh0
b0RvY3VtZW50KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNDQ2MTg4OTNkMmU4ZTg5NGE2YTk3ZTJkMzA4ODhkYmRl
NWJiNmJhNy4uYmFkZTZlOTY3YmYyZGE1ZmQ3NGM3ZjU0M2VlNzg2MzQ3YzEwOGJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250
ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVu
dChjb250ZXh0KTsKIAogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0YSkpOwogICAgIHJlcXVlc3QtPnNldEhUVFBSZWZl
cnJlcihvdXRnb2luZ1JlZmVycmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAppbmRleCA1OWM2ZjUxZDhmMjgzODJiMmE3ZDIzNTRmNjgzOTM5Yzk3
M2EyNzkxLi42M2MyMGQyNTI1YzUxOGI3ZjhjZGRkNjA0MWQwMmVjZjE5ZWI3OGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xNDMyLDcg
KzE0MzIsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29weVN0YXRlRnJvbShjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIG90aGVyKQogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIEhlYWRlclR5cGUgdHlw
ZSkKIHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsK
LSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0Rv
Y3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC0+
ZG9tV2luZG93KCkpCiAgICAgICAgICAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUoZG9jdW1l
bnQtPmRvbVdpbmRvdygpLCBnZXRGZWF0dXJlT2JzZXJ2ZXJUeXBlKHR5cGUpKTsKICAgICB9CkBA
IC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogICAgIGlmICghbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IGU0ZDAyNTYzMWJiMDY2MjdiNTViNDBkNTcwYzg3N2NhN2RiZjgwZTIu
LmY0YzlmMWE4OGZkMzQzYzgwZjU5NDI3ZDViOGEwZmVmN2M5MTZlM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIERPTVdpbmRvdzo6Zm9jdXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBib29sIGFsbG93Rm9jdXMgPSBX
aW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3I6OndpbmRvd0ZvY3VzQWxsb3dlZCgpIHx8ICFtX2Zy
YW1lLT5zZXR0aW5ncygpLT53aW5kb3dGb2N1c1Jlc3RyaWN0ZWQoKTsKICAgICBpZiAoY29udGV4
dCkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBEb2N1bWVudCog
YWN0aXZlRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAg
ICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAg
ICBpZiAob3BlbmVyKCkgJiYgYWN0aXZlRG9jdW1lbnQtPmRvbVdpbmRvdygpID09IG9wZW5lcigp
KQogICAgICAgICAgICAgYWxsb3dGb2N1cyA9IHRydWU7CiAgICAgfQpAQCAtOTczLDcgKzk3Myw3
IEBAIHZvaWQgRE9NV2luZG93OjpjbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogCiAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihjb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gdG9Eb2N1bWVu
dChjb250ZXh0KTsKICAgICAgICAgaWYgKCFhY3RpdmVEb2N1bWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTMyNCw3ICsxMzI0LDcgQEAgRG9jdW1lbnQqIERPTVdpbmRvdzo6ZG9jdW1l
bnQoKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzRG9j
dW1lbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7Cisg
ICAgcmV0dXJuIHRvRG9jdW1lbnQoY29udGV4dCk7CiB9CiAKIFBhc3NSZWZQdHI8U3R5bGVNZWRp
YT4gRE9NV2luZG93OjpzdHlsZU1lZGlhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggODRhYjk1YjJjODUxY2M2YzEwZDJlNmE3ZGNiMmJlMWJlNjE4MjE1
NS4uY2NjNGNmNjU1YTE4Yzg4M2Q0M2FjNzA0MDQ5YTc3MDc4MTVmMjMwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBEcmFnT3BlcmF0
aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKERyYWdEYXRhKiBkcmFnRGF0YSkK
ICAgICBib29sIHBsdWdpbkRvY3VtZW50QWNjZXB0c0RyYWdzID0gZmFsc2U7CiAKICAgICBpZiAo
ZG9jICYmIGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpKSB7Ci0gICAgICAgIGNvbnN0IFdpZGdldCog
d2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2MpLT5wbHVnaW5XaWRnZXQo
KTsKKyAgICAgICAgY29uc3QgV2lkZ2V0KiB3aWRnZXQgPSB0b1BsdWdpbkRvY3VtZW50KGRvYykt
PnBsdWdpbldpZGdldCgpOwogICAgICAgICBjb25zdCBQbHVnaW5WaWV3QmFzZSogcGx1Z2luVmll
dyA9ICh3aWRnZXQgJiYgd2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpID8gc3RhdGljX2Nhc3Q8
Y29uc3QgUGx1Z2luVmlld0Jhc2UqPih3aWRnZXQpIDogMDsKIAogICAgICAgICBpZiAocGx1Z2lu
VmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5NGE4NDAyNGMzMjRi
N2ZiYTUxMDNmMDBkYTZkZGZmYTI0NjRmN2FlLi5mZjE0NDk3NGJjYjI1NmJhMDU5OGUwOWJmNjJi
ZjUwYWU4ZDMzYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02NjQs
MTAgKzY2NCwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogCiAjaWYgRU5BQkxFKFNWRykK
ICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpCi0gICAgICAgICYm
IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnpvb21BbmRQ
YW5FbmFibGVkKCkpIHsKKyAgICAgICAgJiYgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVu
dCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgewogICAgICAgICBpZiAoZXZlbnQuZXZlbnQoKS5z
aGlmdEtleSgpICYmIHNpbmdsZUNsaWNrKSB7CiAgICAgICAgICAgICBtX3N2Z1BhbiA9IHRydWU7
Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50
KCkpLT5zdGFydFBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQuZXZl
bnQoKS5wb3NpdGlvbigpKSk7CisgICAgICAgICAgICB0b1NWR0RvY3VtZW50KG1fZnJhbWUtPmRv
Y3VtZW50KCkpLT5zdGFydFBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZl
bnQuZXZlbnQoKS5wb3NpdGlvbigpKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE2OTQsNyArMTY5NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEhp
CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX3N2Z1BhbikgewotICAgICAgICBzdGF0aWNf
Y2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51cGRhdGVQYW4obV9mcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpOwor
ICAgICAgICB0b1NWR0RvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51cGRhdGVQYW4obV9m
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTE4NDMsNyArMTg0Myw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAobV9z
dmdQYW4pIHsKICAgICAgICAgbV9zdmdQYW4gPSBmYWxzZTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8
U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJhbWUtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICAg
ICAgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJhbWUt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuY3BwCmluZGV4IDE2MjJhMGMwYzNhNzcyYzhjZDMwZGU3NmRiMDY3YWU3NGFlNWYwODMuLmM2
Y2EwYzlkOWUyMWY1NWVkZDUyM2RmYmI4MjY5NjA4OWM5ZjE3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+
IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
CiAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjaGVjayB0aGUgaXNvbGF0ZWQgd29ybGQn
cyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvbmNlIHdlYmtpdC5vcmcvYi8xMDQ1MjAgaXMgc29s
dmVkLgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
ID0gZmFsc2U7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAgICBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+ZnJhbWUo
KS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgp
OwogICAgIH0KICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSAmJiAhY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Q29ubmVjdFRv
U291cmNlKGZ1bGxVUkwpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAK
aW5kZXggNmY1OWUxM2U1ZjkwYTQwYWI0ZDdkZTVmMDBjMjMwZjJmOGExNzcxYi4uZTgxMWVhMTMz
NTRmZGQwOGJmYTU3MTQyZDk2MDg2MWZmYzdmMGJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcApAQCAtODQ4LDcgKzg0OCw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVy
OjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5
Ym9hCiAgICAgTm9kZSogY29udGFpbmVyID0gZm9jdXNlZERvY3VtZW50OwogCiAgICAgaWYgKGNv
bnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihjb250YWluZXIpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAg
ICAgICAgdG9Eb2N1bWVudChjb250YWluZXIpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKICAgICAgICAgCiAgICAgLy8gRmlndXJlIG91dCB0aGUgc3RhcnRpbmcgcmVj
dC4KICAgICBMYXlvdXRSZWN0IHN0YXJ0aW5nUmVjdDsKQEAgLTg2OSw3ICs4NjksNyBAQCBib29s
IEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24sIEtleWJvYQogICAgICAgICBzdGFydGluZ1JlY3QgPSBub2RlUmVjdEluQWJz
b2x1dGVDb29yZGluYXRlcyhjb250YWluZXIsIHRydWUgLyogaWdub3JlIGJvcmRlciAqLyk7CiAg
ICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9y
Tm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY29udGFpbmVyKTsKICAgICAgICAgaWYgKGNvbnRh
aW5lciAmJiBjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgICAgICBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KGNvbnRhaW5lciktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOworICAgICAgICAgICAgdG9Eb2N1bWVudChjb250YWluZXIpLT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICB9IHdoaWxlICghY29uc3VtZWQgJiYg
Y29udGFpbmVyKTsKIAogICAgIHJldHVybiBjb25zdW1lZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggZWNkMTc1MmJlM2ZkMDRjZjgxOTU2MDgzMjdhNWZhYzk5OWI1NWM2Zi4uMmU4ZDFiZTNlNjFj
NTk1MmQ2MzViOGI1Y2VjYWNhMGEyZTYyOTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTkz
MSw3ICs5MzEsNyBAQCB2b2lkIEZyYW1lOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGZsb2F0
IHBhZ2Vab29tRmFjdG9yLCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcgogICAgIC8vIFJlc3BlY3QgU1ZH
cyB6b29tQW5kUGFuPSJkaXNhYmxlZCIgcHJvcGVydHkgaW4gc3RhbmRhbG9uZSBTVkcgZG9jdW1l
bnRzLgogICAgIC8vIEZJWE1FOiBIb3cgdG8gaGFuZGxlIGNvbXBvdW5kIGRvY3VtZW50cyArIHpv
b21BbmRQYW49ImRpc2FibGVkIj8gTmVlZHMgU1ZHIFdHIGNsYXJpZmljYXRpb24uCiAgICAgaWYg
KGRvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxT
VkdEb2N1bWVudCo+KGRvY3VtZW50KS0+em9vbUFuZFBhbkVuYWJsZWQoKSkKKyAgICAgICAgaWYg
KCF0b1NWR0RvY3VtZW50KGRvY3VtZW50KS0+em9vbUFuZFBhbkVuYWJsZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCAxZjU3ZTBjMjc0YzdmM2I5MDNhN2M2YzY0MTk4MDFmYWU1NTc2OTNiLi5mNmFiYjE5NzM1ODRj
OWNiOGZhZDExOGM2YWJmNGI0YmNmZGI0OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC0xNzkyLDcgKzE3OTIsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoY29u
c3QgU3RyaW5nJiBuYW1lKQogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChTVkdTVkdFbGVtZW50KiBz
dmcgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5yb290
RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChTVkdTVkdFbGVtZW50KiBzdmcgPSB0b1NWR0RvY3Vt
ZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBz
dmctPnNldHVwSW5pdGlhbFZpZXcobmFtZSwgYW5jaG9yTm9kZSk7CiAgICAgICAgICAgICBpZiAo
IWFuY2hvck5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0
b3J5LmNwcAppbmRleCA4N2Q4NTA2ZDczNGNmNzk2NjFjMTQ0NDEyZGMxYjA0NjYxNDEzOGU0Li41
OGFlZmM0MjdiOGE0YTBkMWExMzZmZDdlYmJjZjBmYmVkZmQzMDRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhpc3Rvcnk6OmdvKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIERvY3VtZW50KiBhY3RpdmVE
b2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgaWYgKCFhY3RpdmVEb2N1bWVudCkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCmluZGV4IDMzOGMzODk5Mzg2MDQ5ZjdmZmQ2NzE2N2Q0YzM4ZGEwZGM4NzU5MzIuLjYwMDdm
Yzc3YTc2M2VlYTEyZDcwNDdiNWRhNzZkMGE2YzhjMDc4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBzY3JvbGxJ
bkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
ICAgICBBU1NFUlQoY29udGFpbmVyKTsKICAgICBpZiAoY29udGFpbmVyLT5pc0RvY3VtZW50Tm9k
ZSgpKQotICAgICAgICByZXR1cm4gc2Nyb2xsSW5EaXJlY3Rpb24oc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihjb250YWluZXIpLT5mcmFtZSgpLCBkaXJlY3Rpb24pOworICAgICAgICByZXR1cm4gc2Ny
b2xsSW5EaXJlY3Rpb24odG9Eb2N1bWVudChjb250YWluZXIpLT5mcmFtZSgpLCBkaXJlY3Rpb24p
OwogCiAgICAgaWYgKCFjb250YWluZXItPnJlbmRlckJveCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NDAsNyArNDQwLDcgQEAgTm9kZSogc2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFy
ZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWMKICAgICBOb2Rl
KiBwYXJlbnQgPSBub2RlOwogICAgIGRvIHsKICAgICAgICAgaWYgKHBhcmVudC0+aXNEb2N1bWVu
dE5vZGUoKSkKLSAgICAgICAgICAgIHBhcmVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4ocGFy
ZW50KS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CisgICAgICAgICAgICBw
YXJlbnQgPSB0b0RvY3VtZW50KHBhcmVudCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxl
bWVudCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVu
dE5vZGUoKTsKICAgICB9IHdoaWxlIChwYXJlbnQgJiYgIWNhblNjcm9sbEluRGlyZWN0aW9uKHBh
cmVudCwgZGlyZWN0aW9uKSAmJiAhcGFyZW50LT5pc0RvY3VtZW50Tm9kZSgpKTsKQEAgLTQ1Miw3
ICs0NTIsNyBAQCBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IE5vZGUqIGNvbnRhaW5l
ciwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChjb250YWluZXIpOwog
ICAgIGlmIChjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiBjYW5T
Y3JvbGxJbkRpcmVjdGlvbihzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KGNvbnRhaW5lcikt
PmZyYW1lKCksIGRpcmVjdGlvbik7CisgICAgICAgIHJldHVybiBjYW5TY3JvbGxJbkRpcmVjdGlv
bih0b0RvY3VtZW50KGNvbnRhaW5lciktPmZyYW1lKCksIGRpcmVjdGlvbik7CiAKICAgICBpZiAo
IWlzU2Nyb2xsYWJsZU5vZGUoY29udGFpbmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NTIxLDcgKzUyMSw3IEBAIExheW91dFJlY3Qgbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMo
Tm9kZSogbm9kZSwgYm9vbCBpZ25vcmVCb3JkZXIpCiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+
cmVuZGVyZXIoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+dmlldygpLT5uZWVkc0xheW91dCgpKTsK
IAogICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gZnJhbWVS
ZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSktPmZy
YW1lKCkpOworICAgICAgICByZXR1cm4gZnJhbWVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKHRv
RG9jdW1lbnQobm9kZSktPmZyYW1lKCkpOwogICAgIExheW91dFJlY3QgcmVjdCA9IHJlY3RUb0Fi
c29sdXRlQ29vcmRpbmF0ZXMobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbm9kZS0+Ym91bmRp
bmdCb3goKSk7CiAKICAgICAvLyBGb3IgYXV0aG9ycyB0aGF0IHVzZSBib3JkZXIgaW5zdGVhZCBv
ZiBvdXRsaW5lIGluIHRoZWlyIENTUywgd2UgY29tcGVuc2F0ZSBieSBpZ25vcmluZyB0aGUgYm9y
ZGVyIHdoZW4gY2FsY3VsYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91
Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNw
cAppbmRleCBmNmNiYTI1MTU1ZTBjOGExNmZkNWE5NWY5Nzg1M2I1Y2Q4YzM2YzU2Li4yNjYwN2Q0
MTIwYmI0Zjk2MTcwN2QyY2RkYWYzYTkxZjY2YzQ1NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9U
b3VjaEFkanVzdG1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGlubGluZSBOb2Rl
KiBwYXJlbnRTaGFkb3dIb3N0T3JPd25lcihjb25zdCBOb2RlKiBub2RlKQogICAgIGlmIChOb2Rl
KiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgcmV0
dXJuIGFuY2VzdG9yOwogICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPihub2RlKS0+b3duZXJFbGVtZW50KCk7
CisgICAgICAgIHJldHVybiB0b0RvY3VtZW50KG5vZGUpLT5vd25lckVsZW1lbnQoKTsKICAgICBy
ZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGUxOTY1NzI1MWQ0ODcwNzg3N2JmM2MzYmJi
MTk3NDI2ZjE2NjE1ODMuLjhhODEwNTU3NzZjNDMxMjgzMGIzNTRiMDJlMDZmYmY0MjQ2ZGVhMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBhY2N1bXVsYXRl
RG9jdW1lbnRFdmVudFRhcmdldFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IERv
YwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRvdWNoVGFyZ2V0LT5pc0RvY3VtZW50Tm9kZSgp
ICYmIHRvdWNoVGFyZ2V0ICE9IGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBhY2N1bXVsYXRlRG9j
dW1lbnRFdmVudFRhcmdldFJlY3RzKHJlY3RzLCBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+
KHRvdWNoVGFyZ2V0KSk7CisgICAgICAgICAgICBhY2N1bXVsYXRlRG9jdW1lbnRFdmVudFRhcmdl
dFJlY3RzKHJlY3RzLCB0b0RvY3VtZW50KHRvdWNoVGFyZ2V0KSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
aW5kZXggYWE2YjAzNDYwOTgwNjVlYTEwNTJiMDVmZDE4ZDkxMTE2OTdjZjFhYi4uNzE5NWU1MDJl
MmFmMjZkNTg5NmRiNDQxZjgwNTljZjYxM2VkYmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIFJlbmRlclRleHQ6OlJlbmRlclRl
eHQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHIpCiAgICAgLy8gRklYTUU6
IFNvbWUgY2xpZW50cyBvZiBSZW5kZXJUZXh0IChhbmQgc3ViY2xhc3NlcykgcGFzcyBEb2N1bWVu
dCBhcyBub2RlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgcmVuZGVyZXIuCiAgICAgLy8gVGhleSBzaG91
bGQgYmUgc3dpdGNoZWQgdG8gcGFzc2luZyBudWxsIGFuZCB1c2luZyBzZXREb2N1bWVudEZvckFu
b255bW91cy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAg
ICBzZXREb2N1bWVudEZvckFub255bW91cyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5vZGUpKTsK
KyAgICAgICAgc2V0RG9jdW1lbnRGb3JBbm9ueW1vdXModG9Eb2N1bWVudChub2RlKSk7CiAKICAg
ICBtX2lzQWxsQVNDSUkgPSBtX3RleHQuY29udGFpbnNPbmx5QVNDSUkoKTsKICAgICBtX2NhblVz
ZVNpbXBsZUZvbnRDb2RlUGF0aCA9IGNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCAx
MTkxZjYxNjFlZTMzM2FmNjcwNjZlODlhNDYwODM2ZDcyMmZkMmQ5Li5kM2Y4ZDc0NjBhNzNiYTI4
YTA1YzJlMGJlMDQwNTg0Y2RhYzllYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC04MjQsNyArODI0LDcgQEAgc3RhdGljIHZvaWQgd3Jp
dGVTZWxlY3Rpb24oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCogbykKICAgICBp
ZiAoIW4gfHwgIW4tPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIERv
Y3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG4pOworICAgIERvY3VtZW50KiBk
b2MgPSB0b0RvY3VtZW50KG4pOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvYy0+ZnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmlu
ZGV4IGE2Mzc4NzIxOGU2ODFkYTE5MzdhMWE4MjBhZjliMWQwM2VlOGI3YmIuLjUyN2VhYjg4YTVm
YTM2M2ZkNGY3ZGQzZjJiMGEzZjJhZjc5NWE4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5o
CkBAIC01OCw2ICs1OCwyMSBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7
CiB9OwogCitpbmxpbmUgU1ZHRG9jdW1lbnQqIHRvU1ZHRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8
fCBkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
RG9jdW1lbnQqPihkb2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBTVkdEb2N1bWVudCogdG9T
VkdEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc1NWR0RvY3VtZW50
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTVkdEb2N1bWVudCo+KGRvY3VtZW50
KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBj
YXN0Lgordm9pZCB0b1NWR0RvY3VtZW50KGNvbnN0IFNWR0RvY3VtZW50Kik7CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0MDEzNDg0NTMxNjZlYTdmNDQ5NDJlYzhkNGIw
MmUyN2EzNzM3YjBhLi4wYzhiYTQwMTJiNGRkNTdiMDQ4MTY0NjRjMDYxNzUyYmE1NDk0MDlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgdm9pZCBTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
OwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1l
bnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVu
dCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVs
ZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgUmVu
ZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1Jvb3Qocm9vdEVsZW1lbnQtPnJlbmRl
cmVyKCkpOwpAQCAtODQsNyArODQsNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpzaXplKCkgY29uc3QK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RF
bGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50
KQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCkBAIC0yMTMsNyArMjEzLDcgQEAgUmVuZGVy
Qm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJh
bWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0Rv
Y3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NWR0Vs
ZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJv
b3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIHRvUmVuZGVyQm94KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKQEAgLTIzMiw3
ICsyMzIsNyBAQCBib29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsK
KyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRvU1ZHRG9jdW1lbnQoZnJhbWUtPmRv
Y3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJpbnNpY1dpZHRoKCku
aXNQZXJjZW50KCk7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVsYXRp
dmVIZWlnaHQoKSBjb25zdAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVt
ZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3Vt
ZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0g
dG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYg
KCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiByb290RWxl
bWVudC0+aW50cmluc2ljSGVpZ2h0KCkuaXNQZXJjZW50KCk7CkBAIC0yNTQsNyArMjU0LDcgQEAg
dm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5z
aWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW4KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxl
bWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1
bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9
IHRvU1ZHRG9jdW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAgIGlm
ICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjc0LDcgKzI3NCw3IEBAIHZv
aWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJvb2wgLyogY2F0Y2hVcElmTmVjZXNzYXJ5ICov
KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0
YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgp
OworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+
ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygpOwpAQCAtMjg2
LDcgKzI4Niw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0b3BBbmltYXRpb24oKQogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJh
bWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0Rv
Y3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NWR0Vs
ZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJv
b3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAg
IHJvb3RFbGVtZW50LT5wYXVzZUFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCA2Y2IxNDY3NWQ0MWVmNDkwMzI0ZjkzOTNmM2E0YTZmNmRkOGZkMDMzLi5k
MTFjMzAzNjBhNjQ0NTNjYTQyNDAwMjdjNmI3ZmNlMGFmMjYzNDJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgSW50ZXJuYWxzOjpJbnRlcm5h
bHMoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBEb2N1bWVudCogSW50ZXJuYWxzOjpjb250ZXh0RG9j
dW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKIH0KIAogRnJhbWUqIEludGVybmFsczo6ZnJhbWUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4
IDA5ODFkYTg2NDA0YzY2OTE1MWU3MTNiMThhNDZkYzc4ZTRiZWFiYWIuLjhkMTgwNjdhMDExNWI2
OTIxNjZkNWNjZjc5YjUwYzQ1YWY0NDY4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBpbmpl
Y3RJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlm
IChzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBJbnRlcm5hbHM6Omlu
dGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIEludGVybmFsczo6Y3JlYXRlKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29udGV4dCkpKSk7CisgICAgICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBJbnRl
cm5hbHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIEludGVybmFsczo6
Y3JlYXRlKHRvRG9jdW1lbnQoc2NyaXB0Q29udGV4dCkpKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnRl
cm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
cmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQtPmlzRG9jdW1l
bnQoKSk7Ci0gICAgUGFnZSogcGFnZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29u
dGV4dCktPmZyYW1lKCktPnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0gdG9Eb2N1bWVudChzY3Jp
cHRDb250ZXh0KS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEludGVybmFsczo6cmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZShwYWdlKTsKICAgICBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKHBhZ2UpLT5yZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL3Y4
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggYjZjMDAxNDViZGI4MmE1NWFkOTQ2NmM5N2Mw
YzkzYjYyOTM0ZTUwYy4uMTQ5MTA4YWJiNjZmMmMzMjVlMTQ3NDlhMTViYjVlYmM3OTBlMGZmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNw
cApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVjdCh2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IGNvbnRleHQpCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChzY3JpcHRD
b250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXQodjg6
OlN0cmluZzo6TmV3KEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b1Y4KEludGVybmFsczo6Y3Jl
YXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29udGV4dCkpLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgICAgICBjb250ZXh0LT5H
bG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhJbnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9W
OChJbnRlcm5hbHM6OmNyZWF0ZSh0b0RvY3VtZW50KHNjcmlwdENvbnRleHQpKSwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpLCBjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKIH0KIAogdm9pZCByZXNl
dEludGVybmFsc09iamVjdCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCkBAIC02MCw3
ICs2MCw3IEBAIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3Qodjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBjb250ZXh0KQogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIFBhZ2UqIHBhZ2Ug
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdENvbnRleHQpLT5mcmFtZSgpLT5wYWdlKCk7
CisgICAgUGFnZSogcGFnZSA9IHRvRG9jdW1lbnQoc2NyaXB0Q29udGV4dCktPmZyYW1lKCktPnBh
Z2UoKTsKICAgICBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUocGFnZSk7CiAgICAg
SW50ZXJuYWxTZXR0aW5nczo6ZnJvbShwYWdlKS0+cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IDU1MDAwMjU3OWNlYjk5MmM3
ZTNjNzQzNzU0ZWRkZDk3NDViOGE4YmMuLjA1ZGI1NWE2NDFiOTFjNDM5MjdhZGExMDQ5MDMyMjQ5
NWQ1NTljNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTI1MCw3ICsy
NTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6VVJMKAog
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3Vs
dCA9IEJTdHJpbmcoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obV9kb2N1bWVudCktPnVybCgp
KS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcodG9IVE1MRG9jdW1lbnQobV9kb2N1
bWVudCktPnVybCgpKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC0y
NjEsNyArMjYxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9jdW1lbnQ6
OmJvZHkoCiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSFRNTERvY3VtZW50KiBodG1sRG9j
ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obV9kb2N1bWVudCk7CisgICAgSFRNTERvY3Vt
ZW50KiBodG1sRG9jID0gdG9IVE1MRG9jdW1lbnQobV9kb2N1bWVudCk7CiAgICAgQ09NUHRyPElE
T01FbGVtZW50PiBkb21FbGVtZW50OwogICAgIGRvbUVsZW1lbnQuYWRvcHRSZWYoRE9NSFRNTEVs
ZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKGh0bWxEb2MtPmJvZHkoKSkpOwogICAgIGlmIChkb21FbGVt
ZW50KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TERvY3VtZW50Ojpmb3JtcygKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQtPmlz
SFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBIVE1MRG9jdW1l
bnQqIGh0bWxEb2MgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihtX2RvY3VtZW50KTsKKyAg
ICBIVE1MRG9jdW1lbnQqIGh0bWxEb2MgPSB0b0hUTUxEb2N1bWVudChtX2RvY3VtZW50KTsKICAg
ICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZvcm1zID0gaHRtbERvYy0+Zm9ybXMoKTsKICAgICAq
Y29sbGVjdGlvbiA9IERPTUhUTUxDb2xsZWN0aW9uOjpjcmVhdGVJbnN0YW5jZShmb3Jtcy5nZXQo
KSk7CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCmlu
ZGV4IDk5ZjUxNTAyMWQ0ZjEyNWUzMTQ2ZDA2NDQxNmM2MGYwNjIzNTZkZDcuLmYzNTVkYThiZjVm
ODkzN2I0MTAzOTc2ZTBmY2MxMTliNzgzNGIzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURv
Y3VtZW50Lm1tCkBAIC0zNCwxMiArMzQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CiAKLXN0YXRpYyBpbmxpbmUgV2ViQ29yZTo6
RG9jdW1lbnQqIHRvRG9jdW1lbnQoV2ViQ29yZTo6Tm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRvY3VtZW50Kj4obm9kZSk7Ci19Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS0RPTURv
Y3VtZW50CiAKIC0gKFdLRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFn
TmFtZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192868</attachid>
            <date>2013-03-12 21:56:22 -0700</date>
            <delta_ts>2013-03-13 00:15:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112225-20130312215220.patch</filename>
            <type>text/plain</type>
            <size>94580</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMzOGFmNGQ1NDdmOWRm
ZWM3ZWViZmU4Yjc3MjM1NDIyMzExMWRhYi4uNGVlZDcyYTdlNjgwZDUyZWIyMjcyMGI1ZGFmNzRh
ZDkxZWFjNGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEzLTAzLTEyICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zIGZvciBkb2N1bWVudCB0eXBlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRvKiBoZWxwZXIgZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAg
ICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0
cnVjdHVyZS4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRvY3VtZW50KToKKyAgICAgICAgLi4u
LmxvdCBvZiBmaWxlcy4KKworMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGggdG8qIGhlbHBl
ciBmdW5jdGlvbnMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTIxNjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM0ZjFmOTkxY2U4Mjk5OGI2NDNlZWFhN2E0NTRk
NzBiN2Q2NDg2MjEuLmYzYmU5ZmJlMDRhNTIzMWVkZGFhZDg5Njk0ZTJlOTM0YTNhYzU3MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGlu
ZmVybm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGgg
dG8qIGZ1bmN0aW9ucyBmb3IgZG9jdW1lbnQgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTURvY3VtZW50Lm1tOiBSZW1vdmUgdGhlIHJlZHVuZGFudCBoZWxwZXIuCisKIDIw
MTMtMDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggZjk4N2Qw
ZmJjZDExNDhmOGEzN2VlNjc5YmM2ZWJkYzhmODc4N2EyNC4uNjIwMmQyOWVhZjBiMjVlNWVhNWIx
NjIyZGJjYWY2MTJhNTg1ZGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTI1Myw4ICsyNTMsNyBAQCBHZW9sb2NhdGlv
bjo6fkdlb2xvY2F0aW9uKCkKIAogRG9jdW1lbnQqIEdlb2xvY2F0aW9uOjpkb2N1bWVudCgpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
fQogCiBGcmFtZSogR2VvbG9jYXRpb246OmZyYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggZDAxMjBmNjBhODlhZGZm
YjdkMTY1YzlhYWI3M2Y5Zjc2ZjMxMTBiMC4uNGIwMmIxMTY0ZDQwYTQxOWMzNjdmOTRkMjNlZWJj
MjM2ZGFmYWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJvb2wgaXNDb250ZXh0VmFsaWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoY29udGV4dC0+
aXNEb2N1bWVudCgpIHx8IGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICBpZiAoY29u
dGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKSAm
JiBkb2N1bWVudC0+cGFnZSgpOwogICAgIH0KICNpZiAhRU5BQkxFKFdPUktFUlMpCkBAIC04NCw3
ICs4NCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGlzQ29udGV4dFZhbGlkKGNv
bnRleHQpKTsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIHJldHVy
biBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmdyb3VwU2V0dGluZ3MoKS0+aW5kZXhlZERCRGF0
YWJhc2VQYXRoKCk7CiAgICAgfQogI2lmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApp
bmRleCA2ZjE5ZWFmZjI2ZGYxNTg2ZTZjMThmZGJiMjJiYWNiMDExZTY5ZGVlLi40ZWE2ZTUwNGM1
MjVlZjE3M2QxMmJjZGI2NGY0ZjM3ZjE2MzA3NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMTM5
LDggKzEzOSw3IEBAIFJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAgICAgLCBtX3NjaGVkdWxlZEV2
ZW50VGltZXIodGhpcywgJlJUQ1BlZXJDb25uZWN0aW9uOjpzY2hlZHVsZWRFdmVudFRpbWVyRmly
ZWQpCiAgICAgLCBtX3N0b3BwZWQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAg
ICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggYjk0OTQwMDJhOTJmNGNlMWNmYzlmYzNiM2JjZjMyYWUz
NjhjZDM3NC4uNjYzMTkzYzM5NzIzMDhkNzY3MzkwZDIwYzBhMmJjNjVkN2M1NmU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgTWVkaWFDb25zdHJhaW50cyogVXNlck1lZGlh
UmVxdWVzdDo6dmlkZW9Db25zdHJhaW50cygpIGNvbnN0CiBEb2N1bWVudCogVXNlck1lZGlhUmVx
dWVzdDo6b3duZXJEb2N1bWVudCgpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgICAgICByZXR1cm4gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA1MmVjNjE4
ZDU5ZGUxOGEzZDQzNTRkMjgxYTU5N2E2YTRmNDBmMDM3Li42YTQzZWYwN2NkMTBhNGFhNGNjYmQy
MDI5NjcyYzdiOTZjNDQ4MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTA5LDggKzEwOSw3IEBAIE5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLCBtX3N0YXRlKElkbGUpCiAgICAgLCBtX3Rhc2tUaW1l
cihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90aWZpY2F0aW9uOjp0
YXNrVGltZXJGaXJlZCkpKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBET01X
aW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCktPmRvbVdpbmRvdygpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9
IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnModG9Eb2N1bWVudChj
b250ZXh0KS0+ZG9tV2luZG93KCkpOwogICAgIAogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCkpOwogICAgIG1fdGFza1RpbWVyLT5zdGFydE9uZVNob3QoMCk7CkBAIC0x
NzEsOSArMTcwLDkgQEAgdm9pZCBOb3RpZmljYXRpb246OnNob3coKQogICAgIC8vIHByZXZlbnQg
ZG91YmxlLXNob3dpbmcKICAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0aW9u
Q2VudGVyLT5jbGllbnQoKSkgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICBp
ZiAoIXN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFn
ZSgpKQorICAgICAgICBpZiAoIXRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+
cGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7Cisg
ICAgICAgIGlmIChOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHRvRG9jdW1lbnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bkFsbG93ZWQpIHsKICAgICAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjAsOCArMjU5LDggQEAgdm9pZCBOb3RpZmljYXRp
b246OnRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVyKQogY29uc3QgU3Ry
aW5nJiBOb3RpZmljYXRpb246OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
LT5wYWdlKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xp
ZW50KCktPmNoZWNrUGVybWlzc2lvbihjb250ZXh0KSk7CisgICAgQVNTRVJUKHRvRG9jdW1lbnQo
Y29udGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbSh0b0RvY3VtZW50KGNvbnRleHQpLT5wYWdlKCkpLT5jbGllbnQo
KS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsKIH0KIAogY29uc3QgU3RyaW5nJiBOb3RpZmlj
YXRpb246OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBl
cm1pc3Npb24pCkBAIC0yODYsOCArMjg1LDggQEAgY29uc3QgU3RyaW5nJiBOb3RpZmljYXRpb246
OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBlcm0KIHZv
aWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+
aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+cGFnZSgpKTsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lv
bihjb250ZXh0LCBjYWxsYmFjayk7CisgICAgQVNTRVJUKHRvRG9jdW1lbnQoY29udGV4dCktPnBh
Z2UoKSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbSh0b0RvY3VtZW50KGNvbnRl
eHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+cmVxdWVzdFBlcm1pc3Npb24oY29udGV4dCwgY2FsbGJh
Y2spOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaEdyYW1tYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoR3JhbW1hci5jcHAKaW5kZXggNTBhMTQwNjAwNTZkZTMxZTY5NWRkNDA0NTczNTJjMTJjZTc5
NzVhZi4uNzJhMGFhZTA4ZDY0YjdkZTJjNzRkYzBiZTIxNzUyOTAwMjI4NTNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUo
Y29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQogdm9pZCBTcGVlY2hHcmFtbWFyOjpzZXRT
cmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3Qg
U3RyaW5nJiBzcmMpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiAgICAgbV9zcmMgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoc3JjKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCmluZGV4
IDk4NTNlZjdhMDQwNDRjY2EwYzc5ZDYwMjA2MTAxNDEyZjY5MTYxN2UuLjk1M2I1MTIyYmI5MWQz
MDg3M2JkNGQ5NWRiMTY5YjAxYjI4YTgyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU3Bl
ZWNoR3JhbW1hciogU3BlZWNoR3JhbW1hckxpc3Q6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkg
Y29uc3QKIHZvaWQgU3BlZWNoR3JhbW1hckxpc3Q6OmFkZEZyb21VcmkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJs
ZSB3ZWlnaHQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAg
ICAgbV9ncmFtbWFycy5hcHBlbmQoU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGRvY3VtZW50LT5jb21w
bGV0ZVVSTChzcmMpLCB3ZWlnaHQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IGJlZGE4Mjc4ZmMzZjZkM2I5
NTljN2E2ZmNkMDBlODM3Zjc4MWM1N2QuLjY1ZDI3MDc5NzM3MDkyODQxODdkMWIyMjM2NjkxOTM0
YWY2MjA5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBTcGVlY2hSZWNvZ25pdGlvbjo6
U3BlZWNoUmVjb2duaXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAs
IG1fc3RhcnRlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApp
bmRleCAzZmUzNjI3MzliMDRiOGM3ZTA4NmEzZTE2ZjQ3Yzg2Y2I0OWQ5OGViLi5lMjIwMTJiNGM0
MTNkMDU2YmE0MjQ5YWNhNWU2ZmYzZGUzZDk4YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTQzLDcg
KzQzLDcgQEAgUGFzc1JlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQXVkaW9Db250
ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogCiAg
ICAgLy8gRklYTUU6IG9mZmxpbmUgY29udGV4dHMgaGF2ZSBsaW1pdGF0aW9ucyBvbiBzdXBwb3J0
ZWQgc2FtcGxlLXJhdGVzLgogICAgIC8vIEN1cnJlbnRseSBhbGwgQXVkaW9Db250ZXh0cyBtdXN0
IGhhdmUgdGhlIHNhbWUgc2FtcGxlLXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggMGU4MThhZWRjNWRm
MjNiMWM0NGRmMWQxZDg5NzA5OTY5YzcyNWUzNy4uNzk4YjM5OTExZDQ2Y2Y3MGJlMDU3NDZlNGFi
NDNhZWQ2YjVjMmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgRGF0
YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xl
YW51cFN5bmMpCiBib29sIERhdGFiYXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcygpIGNv
bnN0CiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7
Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9E
b2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBpZiAoIWRvY3VtZW50
LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2
YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTgsNyAr
MjE4LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJhc2VBY2Nlc3MoKSBjb25z
dAogdm9pZCBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJp
bmcmIG5hbWUsIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzKQogewogICAgIGlmIChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQogICAg
ICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEo
ZG9jdW1lbnQtPmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5NWY0NWVhNTFkYTZmODYxNTY5ZmYxM2Nk
ZGEzN2RmNDdkZDkzMjBjLi5jMjkxMDk1NGQ1OTIyNmU1MGUwZWZmNzk3MjRkYmZlNTZiNDI5NjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmNyZWF0ZShTY3JpcHQKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0g
ICAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpLCBjbGllbnQpOworICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUo
dG9Eb2N1bWVudChjb250ZXh0KSwgY2xpZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCAxNjU0NWE0MTEyOTZiYzdlMmY1NjgyY2RjMWU3NjE2YmY4NjUzNjcyLi5jMzNjNzQ3MTA2
NTdiZjM3YTNmNDc5MGIyYTNhODg3NmNjMTk2OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQg
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcHJvdG9jb2xzLCBFeGNlCiAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjaGVjayB0
aGUgaXNvbGF0ZWQgd29ybGQncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvbmNlIHdlYmtpdC5v
cmcvYi8xMDQ1MjAgaXMgc29sdmVkLgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2U7CiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1
bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSgpOwogICAgIH0KICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UobV91cmwpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCmluZGV4IGZkOGQzNmRlNWY0NTZiYjgzZThlMDg4NzkyY2U2ODhmMjFlZjc5NDMuLmNkYzNi
YzRkZGM5MzJiMzFjMjQ5NDU5Yzk5Y2I3NTQ1Njk5ODkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKSBjb25zdAogCiAgICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGlj
YXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250
ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX2NvbnRleHQp
OwogICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
ZG9jdW1lbnQsIHVybCk7CiAgICAgICAgIGlmICghY29va2llLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGZpZWxkcy5hcHBlbmQoIkNvb2tpZTogIiArIGNvb2tpZSk7CkBAIC0yNTEsNyArMjUxLDcg
QEAgUGFzc1JlZlB0cjxXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0PiBXZWJTb2NrZXRIYW5kc2hh
a2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QKIAogICAgIEtVUkwgdXJsID0gaHR0cFVSTEZvckF1
dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQo
KSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9j
b250ZXh0KTsKICAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGRvY3VtZW50LCB1cmwpOwogICAgICAgICBpZiAoIWNvb2tpZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXF1ZXN0LT5hZGRIZWFkZXJGaWVsZCgiQ29va2llIiwgY29va2llKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE0M2M4ZjJiMGE3
YWZmNzVkNDAxMjI3NmNmN2U4OTI2ZmI0NmYyMjAuLmIxNmRmZDIzMjdhZmQxMjQ0MDU1YWEwODM1
N2UxNzNhOWQ4MmVlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OnJlc3VtZSgpCiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
Y2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIDogbV93
b3JrZXJDbGllbnRXcmFwcGVyKGNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxv
YWRlclByb3h5KQotICAgICwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbChXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgdGhpcykpCisgICAgLCBt
X21haW5XZWJTb2NrZXRDaGFubmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSh0b0RvY3VtZW50
KGNvbnRleHQpLCB0aGlzKSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDQxZTljYTE3MjNk
YzU3YjZhZmVlMDg2MGY5YzZmZDI2YTAyODRkMWIuLmU1ZjA1ODkxOWJkNTMwOGU5NGQ1M2E4MTAx
NTQ5MDI0ZTEwZThhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMjgwMSw3ICsyODAxLDcg
QEAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90
ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIWRvYyB8fCAhZG9jLT5pc1NWR0RvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2MpLT5yb290RWxlbWVudCgpOwor
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChkb2MpLT5yb290
RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXJSb290ID0gcm9vdEVsZW1lbnQtPnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01SZXF1ZXN0U3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVJlcXVlc3RTdGF0ZS5oCmluZGV4IDMyZDRl
ZGM5ZjIzM2JjNGE5NWQxZGRhNDAxYzQ3YWE2N2I4YzJhZDEuLjQxZDMzNmVlNjExMjM5NTVhYjY0
MTIzNzJiODExNDYxZjFhOWJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVJlcXVlc3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVJlcXVlc3RTdGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2V4
ZWMoMCkKICAgICB7CiAgICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9j
dW1lbnQoKSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAg
ICAgICAgICAgbV9leGVjID0gc2NyaXB0U3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgZG9jdW1lbnQtPnBhZ2UoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKFdP
UktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
dGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggNjFkNzg3ZDRmZTIxNTAxOTIyZjExMjJmMDM0MjM3Mjg3MDIzYzY3
ZS4uMTI5ZTY1ZDFkOGNiMmQ5Yzc0N2Y4ODg1NmU1MmY5ZTM1NWEwNTYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQXVkaW9Db250ZXh0
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KAogICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJBdWRpb0NvbnRleHQgY29uc3RydWN0
b3IgY2FsbGVkIGluIGEgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IHdoaWNoIGlzIG5vdCBhIGRv
Y3VtZW50IikpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgUmVmUHRyPEF1ZGlvQ29u
dGV4dD4gYXVkaW9Db250ZXh0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAppbmRleCBhZjY5OTgzOTc5MzQ4MDEwZTUyMzJkZGIwOTdlNjNjOTU1ZWUwMDVj
Li5iYjBkODljODAzMDcwYTMwMmYzNTllNDgwOWM5ZTk1MTI5NDM2YjFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtODIsNyArODIsNyBAQCBjbGFzcyBE
T01TdHJpbmdMaXN0OwogICAgIHB1YmxpYzoKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0b0RvY3Vt
ZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAppbmRleCBkNWE5NWIxOThjZTdhN2E0YTgxYmIyMzNkMDgzYTE0MDY5MTNhMTI2Li45MWZmYWI4
MDA2OTcwM2YzYTYxMmVhMTRiODEyMGY2NGY0MWFlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAg
SlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFs
T2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLCBleGVjKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBKU0RPTUds
b2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChEb2N1bWVudCogZG9jdW1lbnQsIERPTVdy
YXBwZXJXb3JsZCogd29ybAogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCkKIHsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCB3b3JsZCk7CisgICAgICAgIHJldHVy
biB0b0pTRE9NR2xvYmFsT2JqZWN0KHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCks
IHdvcmxkKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyNWI1MzM5MWJiNWM4NjczMzYzMTFhOTgw
NGQ0ZDM2M2JhMGVhMmFiLi5mMmQ5MmI0YjJmOTBlNGM0ZWE1MmE5YTQ1NDk2N2JmMDZiYjhiNGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCk7
CiAgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIEF0b21pY1N0
cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IGZpbmRBdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKTsKLSAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiAoc3RhdGljX2Nhc3Q8SFRN
TERvY3VtZW50Kj4oZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8
fCBkb2N1bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgeworICAg
ICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmICh0b0hUTUxEb2N1bWVudChkb2N1bWVudCkt
Pmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50
V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzT2JqZWN0LCBuYW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KQEAgLTMzNiw3ICszMzYsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZwog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAg
QXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIChzdGF0aWNf
Y2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCktPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0
eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkp
KSB7CisgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgKHRvSFRNTERvY3VtZW50KGRv
Y3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhh
c0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIG5hbWVkSXRlbUdldHRlcik7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLT5mcmFt
ZSgpLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewog
ICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYg
KHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21p
Y1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhhc0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVy
dHlOYW1lKSkpIHsKKyAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiAodG9IVE1MRG9j
dW1lbnQoZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8fCBkb2N1
bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBuYW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlIHwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNjNjg5M2IwMDg3OTQ5MDUzZmZmMzNkNWMzNDFm
NTE4YTA2MmE4ZTQuLmU2ODg1ZTFmMDA3ZjE5NjZmZTc1MTViZmFhMzI4M2QwODM4NGNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBKU0hUTUxEb2N1bWVudDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIFByb3AKIEpTVmFsdWUg
SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSFRNTERvY3VtZW50KiB0
aGlzT2JqID0ganNDYXN0PEpTSFRNTERvY3VtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAg
ICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
c09iai0+aW1wbCgpKTsKKyAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1MRG9jdW1l
bnQodGhpc09iai0+aW1wbCgpKTsKIAogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY29sbGVj
dGlvbiA9IGRvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAKQEAgLTg5LDcgKzg5LDcgQEAgSlNWYWx1ZSBKU0hUTUxE
b2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAodikKICAgICAgICAg
cmV0dXJuIHY7CiAKLSAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKS0+YWxsKCkpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCB0b0hUTUxEb2N1bWVudChpbXBsKCkpLT5hbGwoKSk7CiB9CiAK
IHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93
c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUg
d2luZG93LgogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAyKSB7Ci0gICAgICAgIEZy
YW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGltcGwoKSktPmZyYW1lKCk7
CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHRvSFRNTERvY3VtZW50KGltcGwoKSktPmZyYW1lKCk7
CiAgICAgICAgIGlmIChmcmFtZSkgewogICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd3Jh
cHBlciA9IHRvSlNET01XaW5kb3dTaGVsbChmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKICAg
ICAgICAgICAgIGlmICh3cmFwcGVyKSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgSlNWYWx1ZSBKU0hU
TUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgRG9jdW1lbnQqIGFjdGl2ZURv
Y3VtZW50ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCktPmRvY3VtZW50KCk7CiAKICAgICAvLyBJbiB0aGUgY2FzZSBvZiB0d28gcGFyYW1ldGVycyBv
ciBmZXdlciwgZG8gYSBub3JtYWwgZG9jdW1lbnQgb3Blbi4KLSAgICBzdGF0aWNfY2FzdDxIVE1M
RG9jdW1lbnQqPihpbXBsKCkpLT5vcGVuKGFjdGl2ZURvY3VtZW50KTsKKyAgICB0b0hUTUxEb2N1
bWVudChpbXBsKCkpLT5vcGVuKGFjdGl2ZURvY3VtZW50KTsKICAgICByZXR1cm4gdGhpczsKIH0K
IApAQCAtMTU3LDEzICsxNTcsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUo
RXhlY1N0YXRlKiBleGVjLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBOZXdsaW4KIAogSlNWYWx1
ZSBKU0hUTUxEb2N1bWVudDo6d3JpdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGRvY3VtZW50
V3JpdGUoZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKSwgRG9Ob3RBZGRO
ZXdsaW5lKTsKKyAgICBkb2N1bWVudFdyaXRlKGV4ZWMsIHRvSFRNTERvY3VtZW50KGltcGwoKSks
IERvTm90QWRkTmV3bGluZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFs
dWUgSlNIVE1MRG9jdW1lbnQ6OndyaXRlbG4oRXhlY1N0YXRlKiBleGVjKQogewotICAgIGRvY3Vt
ZW50V3JpdGUoZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKSwgRG9BZGRO
ZXdsaW5lKTsKKyAgICBkb2N1bWVudFdyaXRlKGV4ZWMsIHRvSFRNTERvY3VtZW50KGltcGwoKSks
IERvQWRkTmV3bGluZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
ODc0NDlhZjcxMjM2ZjdlN2QyZmVkNDliOTE1YzE4MzA0NzRkMmMwMi4uM2RmNjY0NGM0Yjk2OWFm
MTliMTE1Zjg4NmNhOTk1ODI4ODEwYTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNPYmpl
Y3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGV4ZWMKICAgICBpZiAobV9jb2RlLmlzTnVsbCgpIHx8IG1fZXZlbnRQYXJh
bWV0ZXJOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oZXhlY3V0aW9uQ29udGV4dCk7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChleGVjdXRpb25Db250ZXh0KTsKIAogICAg
IGlmICghZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggOTlmMmQ1NTIyYmNmOTBhMDQ5
ZDAyNGI0NTJiNmYzZTBjOTAwNWI0NC4uMGY3NGFhNTFkMTdkMmU5NmEzNjM5YzZiNTBmZmUyMmQy
MmZkMGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVX
cmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmoKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgICAgICAv
LyB3ZSBkb24ndCB3YW50IHRvIGNhY2hlIHRoZSBkb2N1bWVudCBpdHNlbGYgaW4gdGhlIHBlci1k
b2N1bWVudCBkaWN0aW9uYXJ5Ci0gICAgICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSkpOworICAgICAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0b0RvY3VtZW50KG5vZGUpKTsKICAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRG9jdW1lbnRUeXBlLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKaW5kZXggZmU1MWM4NGU0MzM5MjVhZDI1MWNkZWIxMTliY2JlOWNjODRjODkz
Yi4uYThjMGM4M2EwZDY3Y2MzYWI5YzY5NDE0MDM0MTc5YzYxNzY0NWU0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5p
c0RvY3VtZW50KCkpCi0gICAgICAgIGV4ZWN1dGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KSk7CisgICAgICAgIGV4ZWN1dGUodG9Eb2N1bWVudChjb250ZXh0KSk7CiAjaWYgRU5BQkxF
KFdPUktFUlMpCiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5pc1dvcmtlckNv
bnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCmluZGV4IGVmMjBmOWZlZWQzY2Q0ZjNhNjI4NjcwOWZmNzA1NDU5ZjkzNmU5
MmYuLjhmZWQxOGUwY2Q4ZTA1NmU0NmM1NDE4ODlhZDQ2MDk0OGM2N2Y2MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0z
MjIwLDcgKzMyMjAsNyBAQCBFTkQKICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IEdl
dENvbnRleHRFbmFibGVGdW5jdGlvbigkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CiAgICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY29u
dGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgJHtlbmFibGVGdW5jdGlvbn0oc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpICYmICR7
ZW5hYmxlRnVuY3Rpb259KHRvRG9jdW1lbnQoY29udGV4dCkpKSB7XG4iKTsKICAgICAgICAgICAg
IG15ICRuYW1lID0gJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiJHtuYW1lfSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IGRlZmF1bHRTaWduYXR1cmUpLT5HZXRGdW5jdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMGE0Y2Mz
MzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNlNjIwYmYyY2QxNC4uZTcyZDE2ZTA0OWM4YzExMTMzZDA5
OGJmMzViM2U2NTFiMmMyYjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTMxOTUsMTAgKzMxOTUsMTAgQEAg
dm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHByb3QKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVy
ZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHByb3Rv
LT5DcmVhdGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1
bWVudCgpICYmIENvbnRleHRGZWF0dXJlczo6ZW5hYmxlZFBlckNvbnRleHRNZXRob2QxRW5hYmxl
ZChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkgeworICAgIGlmIChjb250ZXh0ICYm
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmVuYWJsZWRQZXJDb250
ZXh0TWV0aG9kMUVuYWJsZWQodG9Eb2N1bWVudChjb250ZXh0KSkpIHsKICAgICAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMSIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29u
dGV4dE1ldGhvZDFNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVy
ZSktPkdldEZ1bmN0aW9uKCkpOwogICAgIH0KLSAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5p
c0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpIHsKKyAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0
LT5pc0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQodG9E
b2N1bWVudChjb250ZXh0KSkpIHsKICAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDJNZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGY5NWUyYWExMzc1ZTQyMDQyMWQ0ZDI3MThhMjEwYTM4NTE0
NDYwNzQuLjI3ZTgwMTUxYzUyNTc2ZTk0YzFmNmUwNGY3ZTI4NGZhMjE0MGYyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRDbGll
bnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1lc3NhZ2VMb29wPiBjCiB2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y29tcGlsZVNjcmlwdChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFN0cmluZyogc2Ny
aXB0SWQsIFN0cmluZyogZXhjZXB0aW9uTWVzc2FnZSkKIHsKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc3RhdGUtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFtZSgpOworICAgIFJlZlB0cjxGcmFtZT4g
cHJvdGVjdCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmZyYW1lKCk7CiAg
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbXBpbGVTY3JpcHQoc3RhdGUsIGV4cHJlc3Npb24sIHNv
dXJjZVVSTCwgc2NyaXB0SWQsIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIGlmICghc2NyaXB0SWQt
PmlzTnVsbCgpKQogICAgICAgICBtX2NvbXBpbGVkU2NyaXB0VVJMcy5zZXQoKnNjcmlwdElkLCBz
b3VyY2VVUkwpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpydW5TY3JpcHQoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkCiAg
ICAgU3RyaW5nIHNvdXJjZVVSTCA9IG1fY29tcGlsZWRTY3JpcHRVUkxzLnRha2Uoc2NyaXB0SWQp
OwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IHN0YXRlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+ZnJhbWUoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFt
ZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWU7CiAgICAgaWYg
KGZyYW1lKQogICAgICAgICBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxF
dmFsdWF0ZVNjcmlwdChmcmFtZSwgc291cmNlVVJMLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3Np
dGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGU1YWU3YzNhNDFkZTQxZjIyMmQ4ODM4Y2Mx
ZmQ1ZWVkOGE2ZTNlNjMuLmFlMmYxNzI2MzRjYWVmOTg0OGNlYzU0ZDNiYjkxYjIyOWM2YzJlYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcApA
QCAtNzgsNyArNzgsNyBAQCBTY2hlZHVsZWRBY3Rpb246On5TY2hlZHVsZWRBY3Rpb24oKQogdm9p
ZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIEZyYW1lKiBm
cmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7CisgICAgICAg
IEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgICAgIGlm
ICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZnJhbWUtPnNjcmlw
dCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBjNTA1M2JhOWNjOWZjNWViM2RlN2M2
YWM4NzE5ZmE0ZjFjYTI1N2I0Li5lYjhhYzRhMjE2ZWUzZWVjZGQ3NGZkMDU2MWM1NzZiNzQ0MDgx
MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTI2MSw3
ICsyNjEsNyBAQCBGcmFtZSogdG9GcmFtZUlmTm90RGV0YWNoZWQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3Js
ZENvbnRleHQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUo
KSkKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1l
KCkpCiAgICAgICAgICAgICByZXR1cm4gd29ybGRDb250ZXh0LmFkanVzdGVkQ29udGV4dChmcmFt
ZS0+c2NyaXB0KCkpOwogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIH0gZWxzZSBpZiAoY29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFdvcmxkQwogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewogICAgIGlm
IChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdG9yZSB0aGUgRE9NV3JhcHBlcldvcmxkIGZvciB0aGUgbWFpbiB3b3JsZCBp
biB0aGUgdjg6OkNvbnRleHQgc28gY2FsbGVycwogICAgICAgICAgICAgLy8gdGhhdCBhcmUgbG9v
a2luZyB1cCB0aGVpciB3b3JsZCB3aXRoIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZCh2
ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKQogICAgICAgICAgICAgLy8gd29uJ3QgZW5kIHVwIHBh
c3NpbmcgbnVsbCBoZXJlIHdoZW4gbGF0ZXIgdHJ5aW5nIHRvIGdldCB0aGVpciB2ODo6Q29udGV4
dCBiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggODcxYzMyOGIyNTNhYTkzMmNmMTIyOGUyMTkzZTRkMDBiZjRlNjhhMC4uY2I4MGYz
MjY0MjljZTQyZWU1N2FjNjE2YTY0ZDk3ZjUwMDZlMWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IFY4RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgRnJhbWUqIGZyYW1lID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJh
bWUgPSB0b0RvY3VtZW50KGNvbnRleHQpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGE3NGU1YjA5YjJi
NDM4NTk5Njc2NDEyOTIwZjAyYmI4ZWYzYzY1ZGQuLjkyOWI1MDM2MmE2MTc4NGEwNjI4N2MwZmQw
ZmExMDAyYTJlNDI3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvCiAgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0b0RvY3Vt
ZW50KGNvbnRleHQpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCkBAIC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIFY4TGF6
eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmIChoYXNFeGlzdGluZ0xpc3RlbmVyT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgIXN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lu
bGluZUV2ZW50SGFuZGxlcnMobV9zb3VyY2VVUkwsIG1fcG9zaXRpb24ubV9saW5lKSkKKyAgICBp
ZiAoY29udGV4dC0+aXNEb2N1bWVudCgpICYmICF0b0RvY3VtZW50KGNvbnRleHQpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKG1fc291cmNlVVJMLCBt
X3Bvc2l0aW9uLm1fbGluZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKIAogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAg
IEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7
CisgICAgRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+ZnJhbWUoKTsKICAgICBB
U1NFUlQoZnJhbWUpOwogICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IGZiNzQyYjRjNzdiYThjMTI4Mzg3NmRiNmFjZDlmMDViNmI2M2ZkZjguLjU5NWJkZjg5
OWZkZmNmNjNhMzFlOTAyMGQwZTA4ZWEwMTJjYjc2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDgz
LDcgKzQ4Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQcm9w
ZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgRG9jdW1lbnQqIGRvYyA9
IGZyYW1lLT5kb2N1bWVudCgpOwogCiAgICAgaWYgKGRvYyAmJiBkb2MtPmlzSFRNTERvY3VtZW50
KCkpIHsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvYyktPmhhc05h
bWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFzRWxlbWVudFdpdGhJZChwcm9wTmFt
ZS5pbXBsKCkpKSB7CisgICAgICAgIGlmICh0b0hUTUxEb2N1bWVudChkb2MpLT5oYXNOYW1lZEl0
ZW0ocHJvcE5hbWUuaW1wbCgpKSB8fCBkb2MtPmhhc0VsZW1lbnRXaXRoSWQocHJvcE5hbWUuaW1w
bCgpKSkgewogICAgICAgICAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGRvYy0+
d2luZG93TmFtZWRJdGVtcyhwcm9wTmFtZSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW1zLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXRlbXMtPmhhc0V4YWN0bHlPbmVJdGVtKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dEN1c3RvbS5jcHAKaW5kZXggNjA4ZTcwODRlZTA1ZjFmNTYyOWM0OGUzZTZhZjVjNmY2NDAyNDQ4
Ny4uM2Q3MWVhNjgxMzg3NDBiMzM5NDU5MTdkYmEwMGRmNzI3MzJkZDlhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNw
cApAQCAtOTMsMTAgKzkzLDEwIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChEb2N1bWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRlCiB7CiAgICAgQVNT
RVJUKGltcGwpOwogICAgIGlmIChpbXBsLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gd3JhcChzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIHdyYXAodG9IVE1MRG9jdW1lbnQoaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoaW1wbC0+
aXNTVkdEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gd3JhcChzdGF0aWNfY2FzdDxTVkdEb2N1
bWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4g
d3JhcCh0b1NWR0RvY3VtZW50KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2Vu
ZGlmCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6Y3Jl
YXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmICh3cmFw
cGVyLklzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUN1c3RvbS5jcHAKaW5kZXggN2MyZmY5ZGVlYzFjZTgyNTFlOWFiMzBmODhiNzg1MGI0
YzkzMDc0OC4uYzE3ZjZlMzA0MjRhYjQwMTg0MTU3ZDU3NGQ5YTEwMzk5NmQ2YjY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAK
QEAgLTE0OSw3ICsxNDksNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoTm9kZSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgY2FzZSBOb2Rl
OjpDT01NRU5UX05PREU6CiAgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PENvbW1lbnQq
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX05PREU6Ci0gICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiB3cmFwKHRvRG9j
dW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpE
T0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PERvY3Vt
ZW50VHlwZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA3YjM4MzFiN2UyNmUwODE5N2JlMzVlZjhiNDNhMWQ1ZjE5ZWY3ZjZlLi41Y2NkN2Fj
ZDdhZjBlZmUyMTIxYzEzYjkwMjM1YjAxYTJlNzEzMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25D
b2RlIGNoZWNrQWNjZXB0Q2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXcK
ICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKIAogICAgIGlmIChvbGRDaGls
ZCAmJiBuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKCFzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG5ld1BhcmVudCktPmNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xk
Q2hpbGQpKQorICAgICAgICBpZiAoIXRvRG9jdW1lbnQobmV3UGFyZW50KS0+Y2FuUmVwbGFjZUNo
aWxkKG5ld0NoaWxkLCBvbGRDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOwogICAgIH0gZWxzZSBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZChuZXdQYXJlbnQs
IG5ld0NoaWxkKSkKICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCA4NDRlMGU4
YjNkOTlmMjI5ZmNjMmYyMzM0ZDQwMzUyNTRiNTY0MDgzLi5jZTFiZWUyYzJjODFiYTYzZTRjNDU3
ODBiYzc0YTg2ZjEzNjE5MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
fkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcigpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOyB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdG9Eb2N1
bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CiAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IGQ4YjBjZDkwNTUwNjVmMzc4ZGE2NzgxYWViMjAxN2Qz
YjNhN2E2ZmEuLjQ4ODYzYmIxNWEwMDhmZWU0NTA4MTljOGQ2ZWUyMjE4YWJhN2JkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC0xNjQsNyAr
MTY0LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKIAogaW5saW5lIERvY3VtZW50KiBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJldHVybiB0
b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IGM1ODQ3YWZkODIwYTIxN2Q0ODExNDA5OTkwNDBhYmU5N2IwZjdlZTYu
LjlkNWU3NGU2YzIyMDA1MTYwNmIzN2E5ODhkNDFkNGRiZmY0YzY5ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtMjg2NCw3ICsyODY0LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0
dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYWtlIHNldENvb2tpZSB3b3JrIG9uIFhNTCBkb2N1bWVudHMgdG9vOyBl
LmcuIGluIGNhc2Ugb2YgPGh0bWw6bWV0YSAuLi4uLj4KICAgICAgICAgaWYgKGlzSFRNTERvY3Vt
ZW50KCkpIHsKICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1bWVu
dHMpIGlnbm9yZWQuCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlz
KS0+c2V0Q29va2llKGNvbnRlbnQsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICAgICAgdG9I
VE1MRG9jdW1lbnQodGhpcyktPnNldENvb2tpZShjb250ZW50LCBJR05PUkVfRVhDRVBUSU9OKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJjb250
ZW50LWxhbmd1YWdlIikpCiAgICAgICAgIHNldENvbnRlbnRMYW5ndWFnZShjb250ZW50KTsKQEAg
LTU3NTUsNyArNTc1NSw3IEBAIE5vZGUqIGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2MpCiAgICAgICAgIHJldHVybiAwOwogICAgIE5vZGUqIG5vZGUgPSBkb2MtPmZvY3Vz
ZWROb2RlKCk7CiAgICAgaWYgKCFub2RlICYmIGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpKSB7Ci0g
ICAgICAgIFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBsdWdp
bkRvY3VtZW50Kj4oZG9jKTsKKyAgICAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdpbkRvY3VtZW50
ID0gdG9QbHVnaW5Eb2N1bWVudChkb2MpOwogICAgICAgICBub2RlID0gIHBsdWdpbkRvY3VtZW50
LT5wbHVnaW5Ob2RlKCk7CiAgICAgfQogICAgIGlmICghbm9kZSAmJiBkb2MtPmlzSFRNTERvY3Vt
ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0MWEwNWRlMTM0ODEyYTg1M2RjZjUwYWEy
MDlhZjNhZWRhMDdmZWIuLjZkYWI3NDk0YjA3N2ZkNTZhNTM0ZjE0M2I5YzhhMmM3MTExYThhYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgdm9pZCAoKkFyZ3VtZW50c0NhbGxiYWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKICAg
ICB2b2lkIHByb2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0
YSwgQXJndW1lbnRzQ2FsbGJhY2spOwogCi0gICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCkBA
IC0xNTgzLDYgKzE1ODMsMzMgQEAgaW5saW5lIGNvbnN0IERvY3VtZW50KiBEb2N1bWVudDo6dGVt
cGxhdGVEb2N1bWVudCgpIGNvbnN0CiB9CiAjZW5kaWYKIAoraW5saW5lIERvY3VtZW50KiB0b0Rv
Y3VtZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7
CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKwor
aW5saW5lIGNvbnN0IERvY3VtZW50KiB0b0RvY3VtZW50KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKworaW5saW5lIERvY3VtZW50KiB0
b0RvY3VtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIW5vZGUgfHwgbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBjb25zdCBEb2N1bWVudCogdG9E
b2N1bWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFub2RlIHx8IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KG5vZGUpOworfQorCisvLyBUaGlzIHdpbGwgY2F0
Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvRG9jdW1lbnQoY29u
c3QgRG9jdW1lbnQqKTsKKwogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5
IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBp
bmxpbmUgdGhlbS4KIAogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAppbmRleCBjZDFkNDg1MzQ2OTliYTg1OWExZjMz
YTFiZDJjNmY5MWNiODRlMzg0Li5iYzkxNzdiYzVhMWExNDNhNGYxNDAzZGU5ZDIxNjJiMzVmM2Zk
ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IERvY3VtZW50VHlwZTo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqIGlucwogICAgIC8vIE91ciBkb2N1bWVudCBub2RlIGNhbiBiZSBu
dWxsIGlmIHdlIHdlcmUgY3JlYXRlZCBieSBhIERPTUltcGxlbWVudGF0aW9uLiAgV2UgdXNlIHRo
ZSBwYXJlbnQoKSBpbnN0ZWFkLgogICAgIEFTU0VSVChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9k
ZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5v
ZGUoKS0+aXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihwYXJlbnROb2RlKCkpOworICAgICAgICBEb2N1bWVudCogZG9jID0g
dG9Eb2N1bWVudChwYXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIWRvYy0+ZG9jdHlwZSgpKQog
ICAgICAgICAgICAgZG9jLT5zZXREb2NUeXBlKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAppbmRleCA2NjMwNDlhYjAxNGMyNzYxOTg5NTk1NTI1Yzk0NmE1NzNmMGE1OTdmLi45ZDM4
MDQzMGM5YjM2ODFhODMwNWI5ZjE3ZGU3N2UzYjc1YWJlNDViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCkBAIC0yMTk5LDcgKzIxOTksNyBAQCBBdG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUlu
aGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChuLT5pc0RvY3VtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAvLyBjaGVja2luZyB0aGUgTUlN
RSBjb250ZW50LWxhbmd1YWdlCi0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0
IERvY3VtZW50Kj4obiktPmNvbnRlbnRMYW5ndWFnZSgpOworICAgICAgICAgICAgdmFsdWUgPSB0
b0RvY3VtZW50KG4pLT5jb250ZW50TGFuZ3VhZ2UoKTsKICAgICAgICAgfQogCiAgICAgICAgIG4g
PSBuLT5wYXJlbnROb2RlKCk7CkBAIC0yNjgyLDEwICsyNjgyLDEwIEBAIHZvaWQgRWxlbWVudDo6
dXBkYXRlTmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkTmFtZSwg
Y29uc3QgQXRvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghb2xkTmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVO
YW1lZEl0ZW0ob2xkTmFtZSk7CisgICAgICAgIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KCkpLT5y
ZW1vdmVOYW1lZEl0ZW0ob2xkTmFtZSk7CiAKICAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQot
ICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJ
dGVtKG5ld05hbWUpOworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+YWRkTmFt
ZWRJdGVtKG5ld05hbWUpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUV4dHJhTmFtZWRJdGVt
UmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3SWQpCkBAIC0yNjk0LDEwICsyNjk0LDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRXh0
cmFOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFvbGRJZC5pc0VtcHR5KCkpCi0gICAgICAgIHN0
YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVkSXRl
bShvbGRJZCk7CisgICAgICAgIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRy
YU5hbWVkSXRlbShvbGRJZCk7CiAKICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFtZWRJdGVt
KG5ld0lkKTsKKyAgICAgICAgdG9IVE1MRG9jdW1lbnQoZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFt
ZWRJdGVtKG5ld0lkKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRWxlbWVudDo6
ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IGMxMWQyMGYxMmRhM2ViZGI2MGRlNzlhYTBhOTA4NDhk
ZmI1MDdkMTcuLmMwOTNlYzFiOWZjY2FmOTliOWZmMTVkMjlhZTE5NGQ1YWE5OTI4MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIGJvb2wgRXZlbnRU
YXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCogZXZlbnQpCiAgICAgaWYgKCFwcmVmaXhl
ZFR5cGVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgICBpZiAoY29udGV4dCAm
JiBjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LT5kb21XaW5kb3coKSkgewogICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lclByZWZpeGVk
VmVjdG9yKQogICAgICAgICAgICAgICAgICAgICBpZiAobGlzdGVuZXJVbnByZWZpeGVkVmVjdG9y
KQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVy
cyhFdmVudCogZXZlbnQsIEV2ZW50VGFyZ2V0RGF0YSogZCwgRXZlbnRMaXN0CiAgICAgaWYgKHVz
ZXJFdmVudFdhc0hhbmRsZWQpIHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgaWYgKGNvbnRleHQgJiYg
Y29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gdG9Eb2N1bWVudChjb250ZXh0KTsKICAgICAgICAgICAgIGRvY3VtZW50LT5y
ZXNldExhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCAyYmI5NDBj
ODllZTE1ZTM5OWYzNjE5N2RhNjkxNjhjZGI2ZDUwMGQ3Li5mOWMwNzNkZTcyYzM1MWY5NmRlOTk1
NzNiOWI3NzQ1YTY4M2ZhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxl
Y3Rpb24uY3BwCkBAIC0xMDMsOCArMTAzLDcgQEAgdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpk
aXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogRG9jdW1lbnQqIE5h
bWVkRmxvd0NvbGxlY3Rpb246OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBBU1NFUlQoIWNvbnRleHQgfHwgY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAg
ICByZXR1cm4gdG9Eb2N1bWVudChjb250ZXh0KTsKIH0KIAogUGFzc1JlZlB0cjxET01OYW1lZEZs
b3dDb2xsZWN0aW9uPiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGVDU1NPTVNuYXBzaG90KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCAzY2IwZTZmNzIxZDg3OTM0MWU2ZWE4NGNjMzdmZDMyMWRkY2Vi
ODRkLi5lMGY5NjMyNjg2OGJkOTViNGZmOTBmNjRhZmE5ZjMzMDBlZTE2MDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0xNDkyLDcgKzE0OTIsNyBAQCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFj
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBET0NVTUVOVF9O
T0RFOgotICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoRWxlbWVu
dCogZGUgPSB0b0RvY3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZGUtPmlzRGVmYXVsdE5hbWVzcGFjZShuYW1lc3BhY2VVUkkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgpAQCAtMTUyNSw3
ICsxNTI1LDcgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcg
Jm5hbWVzcGFjZVVSSSkgY29uc3QKICAgICAgICAgY2FzZSBFTEVNRU5UX05PREU6CiAgICAgICAg
ICAgICByZXR1cm4gbG9va3VwTmFtZXNwYWNlUHJlZml4KG5hbWVzcGFjZVVSSSwgc3RhdGljX2Nh
c3Q8Y29uc3QgRWxlbWVudCAqPih0aGlzKSk7CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfTk9ERToK
LSAgICAgICAgICAgIGlmIChFbGVtZW50KiBkZSA9IHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50
Kj4odGhpcyktPmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRl
ID0gdG9Eb2N1bWVudCh0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGRlLT5sb29rdXBQcmVmaXgobmFtZXNwYWNlVVJJKTsKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICAgICAgY2FzZSBFTlRJVFlfTk9ERToKQEAgLTE1ODMsNyArMTU4Myw3
IEBAIFN0cmluZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgp
IGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICBpZiAoRWxlbWVudCogZGUgPSB0b0RvY3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZGUtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgp
OwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RF
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmNwcAppbmRleCAwNzA5MzMw
ODhlMjVkZTgzY2EwNzBkZDQxYjlhN2JjMWU1OTUwMjY3Li5kNjNlZTM5N2YxMWZlN2EzZDYwNGUx
MzBmODFmMzc1MzY0YTE3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93
RXZlbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250
ZXh0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBXaW5kb3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50
Q29udGV4dChFdmVudCogZXZlbnQsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgY29ucwogICAgIGlm
ICghdG9wTGV2ZWxDb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fd2luZG93ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5l
ciktPmRvbVdpbmRvdygpOworICAgIG1fd2luZG93ID0gdG9Eb2N1bWVudCh0b3BMZXZlbENvbnRh
aW5lciktPmRvbVdpbmRvdygpOwogICAgIG1fdGFyZ2V0ID0gdG9wRXZlbnRDb250ZXh0ID8gdG9w
RXZlbnRDb250ZXh0LT50YXJnZXQoKSA6IG5vZGUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggZTNhYmI5NTc4OTNmYmM3NzE1
MzZjNDNlNjlkNWMyOWJhYzdmNGM5OC4uMDU4MTFlYTAwMTAyMTA4OGMxMWI0ZTA2ZDM0MDM2MDE3
ZDk0YjU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5j
cHAKQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFy
dE1hcmt1cChTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IE5vZGUqIG5vZAogICAgICAgICBh
cHBlbmRDb21tZW50KHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgQ29tbWVudCo+KG5vZGUpLT5k
YXRhKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0g
ICAgICAgIGFwcGVuZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnQqPihub2RlKSk7CisgICAgICAgIGFwcGVuZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgdG9E
b2N1bWVudChub2RlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRf
RlJBR01FTlRfTk9ERToKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
aAppbmRleCAyYWFhNzk4YWVhZmY3ODEwMmVkNDQxMTllODk2ODhlZTc0MjgyNzEzLi41MTQyMDcy
NThmNjJlNmI1ZTgxYzM2ZWJlMmZlM2YwMWRkMTc5MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmgKQEAgLTEwNyw2ICsxMDcsMjEgQEAgaW5saW5lIGJvb2wgSFRNTERvY3VtZW50Ojpo
YXNFeHRyYU5hbWVkSXRlbShBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQogICAgIHJldHVybiBtX2V4
dHJhTmFtZWRJdGVtQ291bnRzLmNvbnRhaW5zKG5hbWUpOwogfQogCitpbmxpbmUgSFRNTERvY3Vt
ZW50KiB0b0hUTUxEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0hUTUxEb2N1
bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQp
OworfQorCitpbmxpbmUgY29uc3QgSFRNTERvY3VtZW50KiB0b0hUTUxEb2N1bWVudChjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlz
IHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvSFRN
TERvY3VtZW50KGNvbnN0IEhUTUxEb2N1bWVudCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBIVE1MRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4IGU2YzNlMmZhYjUwNTc2YTc3OGU1MDlkNjRhMjhk
MWIwOGY0OTQ1NTAuLjI1MjUyMmVkNGZmNGYzYTNlNzFmNTNmNmIxMDI3ZWFiMzhlMDkwOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBTVkdEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpnZXRTVkdE
b2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBEb2N1bWVudCogZG9jID0g
Y29udGVudERvY3VtZW50KCk7CiAgICAgaWYgKGRvYyAmJiBkb2MtPmlzU1ZHRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jKTsKKyAgICAgICAg
cmV0dXJuIHRvU1ZHRG9jdW1lbnQoZG9jKTsKICAgICAvLyBTcGVjOiBodHRwOi8vd3d3LnczLm9y
Zy9UUi9TVkcvc3RydWN0Lmh0bWwjSW50ZXJmYWNlR2V0U1ZHRG9jdW1lbnQKICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAppbmRleCA0ZDg2NDhiZDBhYjc4MTEyN2E3MzE3NDM3NzA0ZDQ3ZTdk
ZTM2OWFkLi44YjAxN2U2YTg2MDQ4OGZhZTkyMDY5NWU5OWIxNzUzODM1Mjg3ZDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCB2
b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdAogewogICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CiAg
ICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAm
JiAhaXNJblNoYWRvd1RyZWUoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOworICAgICAg
ICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHRvSFRNTERvY3VtZW50KHRoaXMtPmRvY3Vt
ZW50KCkpOwogICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1fbmFt
ZSk7CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0odmFsdWUpOwogICAg
ICAgICB9CkBAIC0xMTMsNyArMTEzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBIVE1MSUZyYW1lRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUKIHsKICAg
ICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IHJlc3VsdCA9IEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgIWluc2Vy
dGlvblBvaW50LT5pc0luU2hhZG93VHJlZSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9j
dW1lbnQqPihkb2N1bWVudCgpKS0+YWRkRXh0cmFOYW1lZEl0ZW0obV9uYW1lKTsKKyAgICAgICAg
dG9IVE1MRG9jdW1lbnQoZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFtZWRJdGVtKG1fbmFtZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSFRNTElGcmFt
ZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewog
ICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAg
ICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1M
RG9jdW1lbnQoKSAmJiAhaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAg
IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVk
SXRlbShtX25hbWUpOworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+cmVtb3Zl
RXh0cmFOYW1lZEl0ZW0obV9uYW1lKTsKIH0KIAogYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6c2hv
dWxkRGlzcGxheVNlYW1sZXNzbHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggY2Y4ZWFlNmJjMDE4Njg4NmNiZjcyMTg5ZWZiZTRmNGYzOWFjMjhh
NS4uYWM1YzBiMmYwODdmNjk0NjgzOTkzODNjMGI5MTVlNTk0NWYzYjIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNjI0LDcgKzM2MjQsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQ
bGF5ZXIqKQogICAgIC8vIFRoaXMgaXMgbm9ybWFsbHkgYWNjZXB0YWJsZSBleGNlcHQgd2hlbiB3
ZSBhcmUgaW4gYSBzdGFuZGFsb25lCiAgICAgLy8gTWVkaWFEb2N1bWVudC4gSWYgc28sIHRlbGwg
dGhlIGRvY3VtZW50IHdoYXQgaGFzIGhhcHBlbmVkLgogICAgIGlmIChvd25lckRvY3VtZW50KCkt
PmlzTWVkaWFEb2N1bWVudCgpKSB7Ci0gICAgICAgIE1lZGlhRG9jdW1lbnQqIG1lZGlhRG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxNZWRpYURvY3VtZW50Kj4ob3duZXJEb2N1bWVudCgpKTsKKyAgICAg
ICAgTWVkaWFEb2N1bWVudCogbWVkaWFEb2N1bWVudCA9IHRvTWVkaWFEb2N1bWVudChvd25lckRv
Y3VtZW50KCkpOwogICAgICAgICBtZWRpYURvY3VtZW50LT5tZWRpYUVsZW1lbnRTYXdVbnN1cHBv
cnRlZFRyYWNrcygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKaW5kZXggZjRkNjc1ODJkNDllYWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYzN2MwMy4u
MjRlMTkyOTI4NDliZGM5YzhlZGFhNzFlYTVhYmI0Y2ZjM2QxNjU1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEhU
TUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1lZEl0ZW0oKQogICAgICAgICBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpOwogICAgIH0KICAgICBpZiAoaXNOYW1lZEl0ZW0gIT0gd2FzTmFt
ZWRJdGVtICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgSFRNTERv
Y3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3Vt
ZW50KCkpOworICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1MRG9jdW1lbnQo
dGhpcy0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChpc05hbWVkSXRlbSkgewogICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShnZXROYW1lQXR0cmlidXRlKCkpOwogICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKGdldElkQXR0cmlidXRlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZGEyNGZhNmMxMzcwZjM2ZDQ0MzdlMjRk
YTZmOGQ3YjIxOTMzZmE5Ni4uMzMxZGFhMzc2N2IxYTM5MDkwYmRkNGNmOTRiYWNiN2ViNjRmY2Rl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHB1YmxpYzoKIAogICAgIEltYWdlRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZURvY3VtZW50Kj4oUmF3RGF0YURvY3VtZW50
UGFyc2VyOjpkb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIHRvSW1hZ2VEb2N1bWVudChSYXdE
YXRhRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCmluZGV4IGZhZjkyMDcwZmY0MDI1NDg5NDZlN2E2
ODAxNWVlMTI0MTRjODIyMjMuLmY2Zjk5OGU4MGRjODZlMmQwYmZiMDg0YTY5M2YzNDE2YWRmYWUw
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCkBAIC03MSw3ICs3MSwyMiBAQCBw
cml2YXRlOgogICAgIC8vIFdoZXRoZXIgdGhlIGltYWdlIHNob3VsZCBiZSBzaHJ1bmsgb3Igbm90
CiAgICAgYm9vbCBtX3Nob3VsZFNocmlua0ltYWdlOwogfTsKLSAgICAKKworaW5saW5lIEltYWdl
RG9jdW1lbnQqIHRvSW1hZ2VEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0lt
YWdlRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlRG9jdW1lbnQqPihk
b2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBJbWFnZURvY3VtZW50KiB0b0ltYWdlRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNJbWFnZURvY3VtZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbWFnZURvY3VtZW50Kj4oZG9jdW1lbnQpOwor
fQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3Qu
Cit2b2lkIHRvSW1hZ2VEb2N1bWVudChjb25zdCBJbWFnZURvY3VtZW50Kik7CisKIH0KIAogI2Vu
ZGlmIC8vIEltYWdlRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAppbmRl
eCAyZDgxMjk2M2JmMTFmYmVhNmQxYzVjNjBlZTc2MWNjMjg2NDIxODdlLi5lYzc3N2FlZGJlMzg3
YjM2NmQ0OWQ0YzZjMTdmYWNlMWE4OThjMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1l
bnQuaApAQCAtNTQsNyArNTQsMjIgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPE1lZGlhRG9jdW1l
bnQ+IG1fcmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyOwogfTsKLSAgICAKKworaW5saW5lIE1lZGlh
RG9jdW1lbnQqIHRvTWVkaWFEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc01l
ZGlhRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhRG9jdW1lbnQqPihk
b2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBNZWRpYURvY3VtZW50KiB0b01lZGlhRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNNZWRpYURvY3VtZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRpYURvY3VtZW50Kj4oZG9jdW1lbnQpOwor
fQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3Qu
Cit2b2lkIHRvTWVkaWFEb2N1bWVudChjb25zdCBNZWRpYURvY3VtZW50Kik7CisKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGM5OWUzNTA5OTNj
MzI5Zjg5NzI5MmM5MjUyMGYxMDhlZGY4M2E2NTYuLjhlZDU2NzJiN2VhYTAzMDEwMGM1ZWRkODVj
MmE4MmI2YjI3NzFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50
U3RydWN0dXJlKCkKICAgICBpZiAobG9hZGVyKQogICAgICAgICBtX2VtYmVkRWxlbWVudC0+c2V0
QXR0cmlidXRlKHR5cGVBdHRyLCBsb2FkZXItPndyaXRlcigpLT5taW1lVHlwZSgpKTsKIAotICAg
IHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnNldFBsdWdpbk5vZGUo
bV9lbWJlZEVsZW1lbnQpOworICAgIHRvUGx1Z2luRG9jdW1lbnQoZG9jdW1lbnQoKSktPnNldFBs
dWdpbk5vZGUobV9lbWJlZEVsZW1lbnQpOwogCiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZW1iZWRF
bGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUGx1Z2luRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1l
bnQuaAppbmRleCBjY2RlZTNmOWMzOWRkNWQwMTVjMTdiZDViZjVmNDE4MmM5NTc2OWEwLi40NTdm
ZTU4YjI4NTgwMjE4ZDUxMGU3NTU1MTNlMTAxZGE4NjQyOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiBpbmxpbmUgUGx1Z2lu
RG9jdW1lbnQqIHRvUGx1Z2luRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNQ
bHVnaW5Eb2N1bWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQq
Pihkb2N1bWVudCk7CisgICAgcmV0dXJuIHRvUGx1Z2luRG9jdW1lbnQoZG9jdW1lbnQpOwogfQog
CiBpbmxpbmUgY29uc3QgUGx1Z2luRG9jdW1lbnQqIHRvUGx1Z2luRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCmluZGV4IGIyMTk0M2JkOTI1ZGU4Y2FiMWQ0YmRmYjZmMmExMTUxNWQ2ZDMzMDUuLjVlZTNk
MjIzN2Y0YTQwMTUzZjdkMDg4OWJlYTNmMGRmNGY4MWRhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBUZXh0VHJhY2tD
dWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBkb3VibGUg
c3RhcnQsIGRvdWJsZQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcGF1c2VPbkV4
aXQoZmFsc2UpCiAgICAgLCBtX3NuYXBUb0xpbmVzKHRydWUpCi0gICAgLCBtX2N1ZUJhY2tncm91
bmRCb3goSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpKSkKKyAgICAsIG1fY3VlQmFja2dyb3VuZEJveChIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKHRv
RG9jdW1lbnQoY29udGV4dCkpKQogICAgICwgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSh0cnVl
KQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA4OWRkMjUyMTZm
MWQyNDk0MTdiY2IwYWM3NzgyMTk2YmEzZmZhZWU0Li5iNWM1Y2Y0ZWQwYTA5YTdjYTQ4YTA3ZjEy
YTllYTM1MTVmYzVhYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBUZXh0VHJhY2tDdWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50KTsKIAotICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CisgICAg
RG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSB7IHJldHVybiB0b0RvY3VtZW50KG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVC
b3g+IGNyZWF0ZURpc3BsYXlUcmVlKCk7CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+
IGRpc3BsYXlUcmVlSW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcAppbmRleCAyZDBmMzgxZDlmZjEwNTQ1Mzk4YWJmZjVjNDUzMjE0ZGE5MDI2Yjk4
Li5kMzgzYTg0YWQyNjZkMDUyZjRhZGNhNGEyMTRjZDE2Y2I1ZjEyYTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiAgV2ViVlRUUGFyc2VyOjpjcmVhdGVEb2N1bWVudEZy
YWdtZW50RnJvbUN1ZVRleHQoY28KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2N1cnJlbnROb2RlID0gZnJh
Z21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cAppbmRleCBlZWU3ZDRmMWVmNTYwZGU1YmNlMDUyZDk0M2ZjNjk5MjdmMzZiYzBhLi4xMDkwZmU1
MDg5NDhhMWNiMjU5NGIzZGM4ODE0M2ZlZGM0OTA1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTM3OCw3ICszNzgsNyBAQCBEb2N1
bWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZAogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgaXMg
bm90IGF2YWlsYWJsZSI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChub2RlKTsK
IH0KIAogRWxlbWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5pc0RvY3VtZW50Tm9kZSgpID8gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihub2RlKSA6IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBub2RlLT5pc0RvY3VtZW50Tm9kZSgpID8gdG9Eb2N1bWVudChub2RlKSA6IG5v
ZGUtPm93bmVyRG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm90IGFuIEhUTUwgZG9j
dW1lbnQiOwogICAgICAgICByZXR1cm47CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
ck5vZGUoTm9kZSogbgogI2VuZGlmCiAKICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzRG9jdW1lbnRO
b2RlKCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihub2RlKTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChub2Rl
KTsKICAgICAgICAgdmFsdWUtPnNldERvY3VtZW50VVJMKGRvY3VtZW50VVJMU3RyaW5nKGRvY3Vt
ZW50KSk7CiAgICAgICAgIHZhbHVlLT5zZXRCYXNlVVJMKGRvY3VtZW50QmFzZVVSTFN0cmluZyhk
b2N1bWVudCkpOwogICAgICAgICB2YWx1ZS0+c2V0WG1sVmVyc2lvbihkb2N1bWVudC0+eG1sVmVy
c2lvbigpKTsKQEAgLTE0ODksNyArMTQ4OSw3IEBAIHVuc2lnbmVkIEluc3BlY3RvckRPTUFnZW50
Ojppbm5lckNoaWxkTm9kZUNvdW50KE5vZGUqIG5vZGUpCiBOb2RlKiBJbnNwZWN0b3JET01BZ2Vu
dDo6aW5uZXJQYXJlbnROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmlzRG9jdW1l
bnROb2RlKCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihub2RlKTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChu
b2RlKTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5vd25lckVsZW1lbnQoKTsKICAgICB9CiAg
ICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNGJkYWQ1NzZhZjE0
MDQ4ODBjYTAxODMwOTFlZDI5OGYzMDRmOTBhMy4uZmYwZjBiODYzYzZmOWNlZjllZDBhZTE4ZDk4
NjFmN2VjODM4OWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgRnJh
bWUqIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogewogICAgIEZyYW1lKiBmcmFtZSA9IDA7CiAgICAgaWYgKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSkKLSAgICAgICAgZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpLT5mcmFtZSgpOworICAgICAgICBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1l
KCk7CiAgICAgcmV0dXJuIGZyYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNTNkOGZmYTMyOTk4MDY3YzIw
MWQzODg0ZmYzYjI5Y2Q1MTAzYzEyYi4uYjRhODMyMmQxM2Y3N2MxYmM1ZjRiOGI1M2FiNDU1NjMz
OTg0ZDY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtMjA1Niw3ICsyMDU2LDcgQEAgaW5saW5lIEluc3RydW1lbnRp
bmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckNvbnQKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChjb250
ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
UGFnZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOworICAgICAgICBy
ZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UodG9Eb2N1bWVudChjb250ZXh0KS0+cGFn
ZSgpKTsKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50
c0Zvck5vbkRvY3VtZW50Q29udGV4dChjb250ZXh0KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1ByZXJlbmRlcmVyLmNwcAppbmRleCAzYzcwNWZmZmUzMDNkNzg1NzcwODE3MGMwNzMwOTFmNmRm
NGQ1ZGM3Li41MWVhMjVlOGJiODQzMzA1MDI4Njc4NWI1NTdiYzAyZTYzZDgzOThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFBy
ZXJlbmRlcmVyOjpyZXN1bWUoKQogRG9jdW1lbnQqIFByZXJlbmRlcmVyOjpkb2N1bWVudCgpCiB7
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworICAgIHJldHVybiB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAK
IFByZXJlbmRlcmVyQ2xpZW50KiBQcmVyZW5kZXJlcjo6Y2xpZW50KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggMjZiYzhjYjFkYjliZGE0NzUwZDk0M2U5
ZjdhZjRjZWVlZmZiYmVmMC4uMDBhMWQ4ZmU2NzRmYzY0MWUxNjNmMmQzZmEwM2RmZTViZTkyNjJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyYwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6
OmNvcnNQb2xpY3lQcmV2ZW50ZWRMb2FkKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRy
YWNrIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4i
KSkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3Vt
ZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVN
ZXNzYWdlKTsKICAgICBtX3N0YXRlID0gRmFpbGVkOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZv
aWQgVGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCiB7CiAgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIGlmICghbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkK
ICAgICAgICAgJiYgIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc291
cmNlLT5yZXNwb25zZSgpLnVybCgpKQogICAgICAgICAmJiAhcmVzb3VyY2UtPnBhc3Nlc0FjY2Vz
c0NvbnRyb2xDaGVjayhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKQEAgLTE1NCw3ICsx
NTQsNyBAQCBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBB
U1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGN1ZVJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpKSk7CiAKICAgICBpZiAoIWNy
b3NzT3JpZ2luTW9kZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDUzZTM0NzgzNDliNDdkNGY1MTIzNDJhNzYzODNlMDAzNjc3MDVl
YzAuLmUzMDE4YjM1NmIzYjA4ZDk1M2NjNWZhMThmMjhjOTQ2ZmNmZDQ5MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY28KICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0g
ICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oY29udGV4dCksIGNsaWVudCwgcmVxdWVzdCwgb3B0aW9ucyk7CisgICAgcmV0dXJu
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHRvRG9jdW1lbnQoY29udGV4dCksIGNs
aWVudCwgcmVxdWVzdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNs
aWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCkBAIC02Niw3ICs2
Niw3IEBAIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMp
CiAKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpOwotICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQs
IG9wdGlvbnMpOworICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSh0b0RvY3VtZW50KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNDQ2MTg4OTNkMmU4ZTg5NGE2YTk3
ZTJkMzA4ODhkYmRlNWJiNmJhNy4uYmFkZTZlOTY3YmYyZGE1ZmQ3NGM3ZjU0M2VlNzg2MzQ3YzEw
OGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gdG9Eb2N1bWVudChjb250ZXh0KTsKIAogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0YSkpOwogICAgIHJlcXVlc3Qt
PnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA1OWM2ZjUxZDhmMjgzODJiMmE3ZDIz
NTRmNjgzOTM5Yzk3M2EyNzkxLi42M2MyMGQyNTI1YzUxOGI3ZjhjZGRkNjA0MWQwMmVjZjE5ZWI3
OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29weVN0
YXRlRnJvbShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIG90aGVyKQogdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIEhl
YWRlclR5cGUgdHlwZSkKIHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlm
IChkb2N1bWVudC0+ZG9tV2luZG93KCkpCiAgICAgICAgICAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9i
c2VydmUoZG9jdW1lbnQtPmRvbVdpbmRvdygpLCBnZXRGZWF0dXJlT2JzZXJ2ZXJUeXBlKHR5cGUp
KTsKICAgICB9CkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwog
ICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGU0ZDAyNTYzMWJiMDY2MjdiNTViNDBkNTcwYzg3
N2NhN2RiZjgwZTIuLmY0YzlmMWE4OGZkMzQzYzgwZjU5NDI3ZDViOGEwZmVmN2M5MTZlM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIERPTVdp
bmRvdzo6Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBib29sIGFs
bG93Rm9jdXMgPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3I6OndpbmRvd0ZvY3VzQWxsb3dl
ZCgpIHx8ICFtX2ZyYW1lLT5zZXR0aW5ncygpLT53aW5kb3dGb2N1c1Jlc3RyaWN0ZWQoKTsKICAg
ICBpZiAoY29udGV4dCkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAg
ICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpOworICAgICAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRl
eHQpOwogICAgICAgICBpZiAob3BlbmVyKCkgJiYgYWN0aXZlRG9jdW1lbnQtPmRvbVdpbmRvdygp
ID09IG9wZW5lcigpKQogICAgICAgICAgICAgYWxsb3dGb2N1cyA9IHRydWU7CiAgICAgfQpAQCAt
OTczLDcgKzk3Myw3IEBAIHZvaWQgRE9NV2luZG93OjpjbG9zZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogCiAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50
ID0gdG9Eb2N1bWVudChjb250ZXh0KTsKICAgICAgICAgaWYgKCFhY3RpdmVEb2N1bWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTMyNCw3ICsxMzI0LDcgQEAgRG9jdW1lbnQqIERPTVdp
bmRvdzo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQgPSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFjb250ZXh0IHx8IGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
Y29udGV4dCk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQoY29udGV4dCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U3R5bGVNZWRpYT4gRE9NV2luZG93OjpzdHlsZU1lZGlhKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggODRhYjk1YjJjODUxY2M2YzEwZDJlNmE3ZGNi
MmJlMWJlNjE4MjE1NS4uY2NjNGNmNjU1YTE4Yzg4M2Q0M2FjNzA0MDQ5YTc3MDc4MTVmMjMwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTQxNCw3ICs0MTQsNyBA
QCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKERyYWdEYXRh
KiBkcmFnRGF0YSkKICAgICBib29sIHBsdWdpbkRvY3VtZW50QWNjZXB0c0RyYWdzID0gZmFsc2U7
CiAKICAgICBpZiAoZG9jICYmIGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpKSB7Ci0gICAgICAgIGNv
bnN0IFdpZGdldCogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2MpLT5w
bHVnaW5XaWRnZXQoKTsKKyAgICAgICAgY29uc3QgV2lkZ2V0KiB3aWRnZXQgPSB0b1BsdWdpbkRv
Y3VtZW50KGRvYyktPnBsdWdpbldpZGdldCgpOwogICAgICAgICBjb25zdCBQbHVnaW5WaWV3QmFz
ZSogcGx1Z2luVmlldyA9ICh3aWRnZXQgJiYgd2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpID8g
c3RhdGljX2Nhc3Q8Y29uc3QgUGx1Z2luVmlld0Jhc2UqPih3aWRnZXQpIDogMDsKIAogICAgICAg
ICBpZiAocGx1Z2luVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5
NGE4NDAyNGMzMjRiN2ZiYTUxMDNmMDBkYTZkZGZmYTI0NjRmN2FlLi5mZjE0NDk3NGJjYjI1NmJh
MDU5OGUwOWJmNjJiZjUwYWU4ZDMzYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC02NjQsMTAgKzY2NCwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogCiAjaWYg
RU5BQkxFKFNWRykKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgp
Ci0gICAgICAgICYmIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQo
KSktPnpvb21BbmRQYW5FbmFibGVkKCkpIHsKKyAgICAgICAgJiYgdG9TVkdEb2N1bWVudChtX2Zy
YW1lLT5kb2N1bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgewogICAgICAgICBpZiAoZXZl
bnQuZXZlbnQoKS5zaGlmdEtleSgpICYmIHNpbmdsZUNsaWNrKSB7CiAgICAgICAgICAgICBtX3N2
Z1BhbiA9IHRydWU7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJh
bWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSk7CisgICAgICAgICAgICB0b1NWR0RvY3VtZW50
KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHMoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2OTQsNyArMTY5NCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQsIEhpCiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX3N2Z1BhbikgewotICAg
ICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51cGRh
dGVQYW4obV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQ
b3NpdGlvbikpOworICAgICAgICB0b1NWR0RvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51
cGRhdGVQYW4obV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTE4
NDMsNyArMTg0Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAjaWYgRU5BQkxFKFNWRykK
ICAgICBpZiAobV9zdmdQYW4pIHsKICAgICAgICAgbV9zdmdQYW4gPSBmYWxzZTsKLSAgICAgICAg
c3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRlUGFu
KG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRp
b24pKTsKKyAgICAgICAgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRl
UGFuKG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9z
aXRpb24pKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDE2MjJhMGMwYzNhNzcyYzhjZDMwZGU3NmRiMDY3YWU3
NGFlNWYwODMuLmM2Y2EwYzlkOWUyMWY1NWVkZDUyM2RmYmI4MjY5NjA4OWM5ZjE3YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFBhc3NSZWZQdHI8
RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uCiAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjaGVjayB0aGUgaXNv
bGF0ZWQgd29ybGQncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvbmNlIHdlYmtpdC5vcmcvYi8x
MDQ1MjAgaXMgc29sdmVkLgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5ID0gZmFsc2U7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewot
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwog
ICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1
bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSgpOwogICAgIH0KICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSAmJiAhY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93Q29ubmVjdFRvU291cmNlKGZ1bGxVUkwpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKaW5kZXggNmY1OWUxM2U1ZjkwYTQwYWI0ZDdkZTVmMDBjMjMwZjJmOGExNzcx
Yi4uZTgxMWVhMTMzNTRmZGQwOGJmYTU3MTQyZDk2MDg2MWZmYzdmMGJhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtODQ4LDcgKzg0OCw3IEBAIGJvb2wgRm9j
dXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbiwgS2V5Ym9hCiAgICAgTm9kZSogY29udGFpbmVyID0gZm9jdXNlZERvY3VtZW50Owog
CiAgICAgaWYgKGNvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihjb250YWluZXIpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKKyAgICAgICAgdG9Eb2N1bWVudChjb250YWluZXIpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgCiAgICAgLy8gRmlndXJlIG91dCB0aGUg
c3RhcnRpbmcgcmVjdC4KICAgICBMYXlvdXRSZWN0IHN0YXJ0aW5nUmVjdDsKQEAgLTg2OSw3ICs4
NjksNyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgICAgICBzdGFydGluZ1JlY3QgPSBu
b2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhjb250YWluZXIsIHRydWUgLyogaWdub3JlIGJv
cmRlciAqLyk7CiAgICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFibGVFbmNsb3NpbmdCb3hPclBh
cmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY29udGFpbmVyKTsKICAgICAg
ICAgaWYgKGNvbnRhaW5lciAmJiBjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAg
ICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRhaW5lciktPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICAgICAgdG9Eb2N1bWVudChjb250YWluZXIp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICB9IHdoaWxlICgh
Y29uc3VtZWQgJiYgY29udGFpbmVyKTsKIAogICAgIHJldHVybiBjb25zdW1lZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggZWNkMTc1MmJlM2ZkMDRjZjgxOTU2MDgzMjdhNWZhYzk5OWI1NWM2Zi4u
MmU4ZDFiZTNlNjFjNTk1MmQ2MzViOGI1Y2VjYWNhMGEyZTYyOTNkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKQEAgLTkzMSw3ICs5MzEsNyBAQCB2b2lkIEZyYW1lOjpzZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKGZsb2F0IHBhZ2Vab29tRmFjdG9yLCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcgogICAgIC8v
IFJlc3BlY3QgU1ZHcyB6b29tQW5kUGFuPSJkaXNhYmxlZCIgcHJvcGVydHkgaW4gc3RhbmRhbG9u
ZSBTVkcgZG9jdW1lbnRzLgogICAgIC8vIEZJWE1FOiBIb3cgdG8gaGFuZGxlIGNvbXBvdW5kIGRv
Y3VtZW50cyArIHpvb21BbmRQYW49ImRpc2FibGVkIj8gTmVlZHMgU1ZHIFdHIGNsYXJpZmljYXRp
b24uCiAgICAgaWYgKGRvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKCFz
dGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGRvY3VtZW50KS0+em9vbUFuZFBhbkVuYWJsZWQoKSkK
KyAgICAgICAgaWYgKCF0b1NWR0RvY3VtZW50KGRvY3VtZW50KS0+em9vbUFuZFBhbkVuYWJsZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCAxZjU3ZTBjMjc0YzdmM2I5MDNhN2M2YzY0MTk4MDFmYWU1NTc2OTNiLi5m
NmFiYjE5NzM1ODRjOWNiOGZhZDExOGM2YWJmNGI0YmNmZGI0OGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC0xNzkyLDcgKzE3OTIsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xs
VG9BbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAo
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChTVkdT
VkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3Vt
ZW50KCkpLT5yb290RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChTVkdTVkdFbGVtZW50KiBzdmcg
PSB0b1NWR0RvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpKSB7CiAg
ICAgICAgICAgICBzdmctPnNldHVwSW5pdGlhbFZpZXcobmFtZSwgYW5jaG9yTm9kZSk7CiAgICAg
ICAgICAgICBpZiAoIWFuY2hvck5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCA4N2Q4NTA2ZDczNGNmNzk2NjFjMTQ0NDEyZGMxYjA0
NjYxNDEzOGU0Li41OGFlZmM0MjdiOGE0YTBkMWExMzZmZDdlYmJjZjBmYmVkZmQzMDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhpc3Rvcnk6Omdv
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBkaXN0YW5jZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBEb2N1bWVudCogYWN0
aXZlRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIERvY3Vt
ZW50KiBhY3RpdmVEb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgaWYgKCFhY3Rp
dmVEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlh
bE5hdmlnYXRpb24uY3BwCmluZGV4IDMzOGMzODk5Mzg2MDQ5ZjdmZmQ2NzE2N2Q0YzM4ZGEwZGM4
NzU5MzIuLjYwMDdmYzc3YTc2M2VlYTEyZDcwNDdiNWRhNzZkMGE2YzhjMDc4OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAg
Ym9vbCBzY3JvbGxJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKICAgICBpZiAoY29udGFpbmVyLT5p
c0RvY3VtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gc2Nyb2xsSW5EaXJlY3Rpb24oc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250YWluZXIpLT5mcmFtZSgpLCBkaXJlY3Rpb24pOworICAgICAg
ICByZXR1cm4gc2Nyb2xsSW5EaXJlY3Rpb24odG9Eb2N1bWVudChjb250YWluZXIpLT5mcmFtZSgp
LCBkaXJlY3Rpb24pOwogCiAgICAgaWYgKCFjb250YWluZXItPnJlbmRlckJveCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00NDAsNyArNDQwLDcgQEAgTm9kZSogc2Nyb2xsYWJsZUVuY2xv
c2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGly
ZWMKICAgICBOb2RlKiBwYXJlbnQgPSBub2RlOwogICAgIGRvIHsKICAgICAgICAgaWYgKHBhcmVu
dC0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgICAgIHBhcmVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4ocGFyZW50KS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7Cisg
ICAgICAgICAgICBwYXJlbnQgPSB0b0RvY3VtZW50KHBhcmVudCktPmRvY3VtZW50KCktPmZyYW1l
KCktPm93bmVyRWxlbWVudCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudE5vZGUoKTsKICAgICB9IHdoaWxlIChwYXJlbnQgJiYgIWNhblNjcm9sbElu
RGlyZWN0aW9uKHBhcmVudCwgZGlyZWN0aW9uKSAmJiAhcGFyZW50LT5pc0RvY3VtZW50Tm9kZSgp
KTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IE5v
ZGUqIGNvbnRhaW5lciwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChj
b250YWluZXIpOwogICAgIGlmIChjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAg
IHJldHVybiBjYW5TY3JvbGxJbkRpcmVjdGlvbihzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+
KGNvbnRhaW5lciktPmZyYW1lKCksIGRpcmVjdGlvbik7CisgICAgICAgIHJldHVybiBjYW5TY3Jv
bGxJbkRpcmVjdGlvbih0b0RvY3VtZW50KGNvbnRhaW5lciktPmZyYW1lKCksIGRpcmVjdGlvbik7
CiAKICAgICBpZiAoIWlzU2Nyb2xsYWJsZU5vZGUoY29udGFpbmVyKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNTIxLDcgKzUyMSw3IEBAIExheW91dFJlY3Qgbm9kZVJlY3RJbkFic29sdXRl
Q29vcmRpbmF0ZXMoTm9kZSogbm9kZSwgYm9vbCBpZ25vcmVCb3JkZXIpCiAgICAgQVNTRVJUKG5v
ZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+dmlldygpLT5uZWVk
c0xheW91dCgpKTsKIAogICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICBy
ZXR1cm4gZnJhbWVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obm9kZSktPmZyYW1lKCkpOworICAgICAgICByZXR1cm4gZnJhbWVSZWN0SW5BYnNvbHV0ZUNv
b3JkaW5hdGVzKHRvRG9jdW1lbnQobm9kZSktPmZyYW1lKCkpOwogICAgIExheW91dFJlY3QgcmVj
dCA9IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwg
bm9kZS0+Ym91bmRpbmdCb3goKSk7CiAKICAgICAvLyBGb3IgYXV0aG9ycyB0aGF0IHVzZSBib3Jk
ZXIgaW5zdGVhZCBvZiBvdXRsaW5lIGluIHRoZWlyIENTUywgd2UgY29tcGVuc2F0ZSBieSBpZ25v
cmluZyB0aGUgYm9yZGVyIHdoZW4gY2FsY3VsYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hB
ZGp1c3RtZW50LmNwcAppbmRleCBmNmNiYTI1MTU1ZTBjOGExNmZkNWE5NWY5Nzg1M2I1Y2Q4YzM2
YzU2Li4yNjYwN2Q0MTIwYmI0Zjk2MTcwN2QyY2RkYWYzYTkxZjY2YzQ1NWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGlj
IGlubGluZSBOb2RlKiBwYXJlbnRTaGFkb3dIb3N0T3JPd25lcihjb25zdCBOb2RlKiBub2RlKQog
ICAgIGlmIChOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkK
ICAgICAgICAgcmV0dXJuIGFuY2VzdG9yOwogICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgp
KQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPihub2RlKS0+b3du
ZXJFbGVtZW50KCk7CisgICAgICAgIHJldHVybiB0b0RvY3VtZW50KG5vZGUpLT5vd25lckVsZW1l
bnQoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGUxOTY1NzI1MWQ0ODcw
Nzg3N2JmM2MzYmJiMTk3NDI2ZjE2NjE1ODMuLjhhODEwNTU3NzZjNDMxMjgzMGIzNTRiMDJlMDZm
YmY0MjQ2ZGVhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgdm9p
ZCBhY2N1bXVsYXRlRG9jdW1lbnRFdmVudFRhcmdldFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGNvbnN0IERvYwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRvdWNoVGFyZ2V0LT5pc0Rv
Y3VtZW50Tm9kZSgpICYmIHRvdWNoVGFyZ2V0ICE9IGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBh
Y2N1bXVsYXRlRG9jdW1lbnRFdmVudFRhcmdldFJlY3RzKHJlY3RzLCBzdGF0aWNfY2FzdDxjb25z
dCBEb2N1bWVudCo+KHRvdWNoVGFyZ2V0KSk7CisgICAgICAgICAgICBhY2N1bXVsYXRlRG9jdW1l
bnRFdmVudFRhcmdldFJlY3RzKHJlY3RzLCB0b0RvY3VtZW50KHRvdWNoVGFyZ2V0KSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKaW5kZXggYWE2YjAzNDYwOTgwNjVlYTEwNTJiMDVmZDE4ZDkxMTE2OTdjZjFh
Yi4uNzE5NWU1MDJlMmFmMjZkNTg5NmRiNDQxZjgwNTljZjYxM2VkYmRiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIFJlbmRlclRl
eHQ6OlJlbmRlclRleHQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHIpCiAg
ICAgLy8gRklYTUU6IFNvbWUgY2xpZW50cyBvZiBSZW5kZXJUZXh0IChhbmQgc3ViY2xhc3Nlcykg
cGFzcyBEb2N1bWVudCBhcyBub2RlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgcmVuZGVyZXIuCiAgICAg
Ly8gVGhleSBzaG91bGQgYmUgc3dpdGNoZWQgdG8gcGFzc2luZyBudWxsIGFuZCB1c2luZyBzZXRE
b2N1bWVudEZvckFub255bW91cy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5pc0RvY3VtZW50Tm9k
ZSgpKQotICAgICAgICBzZXREb2N1bWVudEZvckFub255bW91cyhzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KG5vZGUpKTsKKyAgICAgICAgc2V0RG9jdW1lbnRGb3JBbm9ueW1vdXModG9Eb2N1bWVudChu
b2RlKSk7CiAKICAgICBtX2lzQWxsQVNDSUkgPSBtX3RleHQuY29udGFpbnNPbmx5QVNDSUkoKTsK
ICAgICBtX2NhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCA9IGNvbXB1dGVDYW5Vc2VTaW1wbGVGb250
Q29kZVBhdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAppbmRleCAxMTkxZjYxNjFlZTMzM2FmNjcwNjZlODlhNDYwODM2ZDcyMmZkMmQ5Li5kM2Y4
ZDc0NjBhNzNiYTI4YTA1YzJlMGJlMDQwNTg0Y2RhYzllYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC04MjQsNyArODI0LDcgQEAgc3Rh
dGljIHZvaWQgd3JpdGVTZWxlY3Rpb24oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVj
dCogbykKICAgICBpZiAoIW4gfHwgIW4tPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG4pOworICAg
IERvY3VtZW50KiBkb2MgPSB0b0RvY3VtZW50KG4pOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvYy0+
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudC5oCmluZGV4IGE2Mzc4NzIxOGU2ODFkYTE5MzdhMWE4MjBhZjliMWQwM2VlOGI3YmIu
LjUyN2VhYjg4YTVmYTM2M2ZkNGY3ZGQzZjJiMGEzZjJhZjc5NWE4NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudC5oCkBAIC01OCw2ICs1OCwyMSBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQg
bV90cmFuc2xhdGU7CiB9OwogCitpbmxpbmUgU1ZHRG9jdW1lbnQqIHRvU1ZHRG9jdW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBTVkdE
b2N1bWVudCogdG9TVkdEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5p
c1NWR0RvY3VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTVkdEb2N1bWVu
dCo+KGRvY3VtZW50KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1
bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b1NWR0RvY3VtZW50KGNvbnN0IFNWR0RvY3VtZW50Kik7
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0MDEzNDg0NTMxNjZlYTdm
NDQ5NDJlYzhkNGIwMmUyN2EzNzM3YjBhLi4wYzhiYTQwMTJiNGRkNTdiMDQ4MTY0NjRjMDYxNzUy
YmE1NDk0MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgdm9pZCBTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAg
U1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVu
dCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1
cm47CiAgICAgUmVuZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1Jvb3Qocm9vdEVs
ZW1lbnQtPnJlbmRlcmVyKCkpOwpAQCAtODQsNyArODQsNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpz
aXplKCkgY29uc3QKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0VsZW1l
bnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1l
bnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0
b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAo
IXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCkBAIC0yMTMsNyArMjEz
LDcgQEAgUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRp
Y19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwor
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9j
dW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuIHRvUmVuZGVyQm94KHJvb3RFbGVtZW50LT5yZW5kZXJlcigp
KTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBib29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoKCkg
Y29uc3QKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9v
dEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRvU1ZHRG9jdW1l
bnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJp
bnNpY1dpZHRoKCkuaXNQZXJjZW50KCk7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBTVkdJbWFn
ZTo6aGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdAogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAg
ICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4o
ZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJv
b3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50
KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiByb290RWxlbWVudC0+aW50cmluc2ljSGVpZ2h0KCkuaXNQZXJjZW50KCk7CkBAIC0yNTQs
NyArMjU0LDcgQEAgdm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVu
Z3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW4KICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0g
ICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiBy
b290RWxlbWVudCA9IHRvU1ZHRG9jdW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVu
dCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjc0LDcg
KzI3NCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJvb2wgLyogY2F0Y2hVcElm
TmVjZXNzYXJ5ICovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290
RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5y
b290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1
bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxl
bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9u
cygpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0b3BBbmltYXRpb24oKQog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRp
Y19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwor
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9j
dW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogICAgIHJvb3RFbGVtZW50LT5wYXVzZUFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA2Y2IxNDY3NWQ0MWVmNDkwMzI0ZjkzOTNmM2E0YTZm
NmRkOGZkMDMzLi5kMTFjMzAzNjBhNjQ0NTNjYTQyNDAwMjdjNmI3ZmNlMGFmMjYzNDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgSW50ZXJu
YWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBEb2N1bWVudCogSW50ZXJuYWxz
Ojpjb250ZXh0RG9jdW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogRnJhbWUqIEludGVybmFsczo6ZnJhbWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVz
dFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuY3BwCmluZGV4IDA5ODFkYTg2NDA0YzY2OTE1MWU3MTNiMThhNDZkYzc4ZTRiZWFiYWIuLjhk
MTgwNjdhMDExNWI2OTIxNjZkNWNjZjc5YjUwYzQ1YWY0NDY4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgdm9pZCBpbmplY3RJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmIChzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIGdsb2Jh
bE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBJ
bnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIEludGVybmFs
czo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29udGV4dCkpKSk7CisgICAg
ICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmll
cihleGVjLCBJbnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IEludGVybmFsczo6Y3JlYXRlKHRvRG9jdW1lbnQoc2NyaXB0Q29udGV4dCkpKSk7CiB9CiAKIHZv
aWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCkBAIC01Niw3ICs1
Niw3IEBAIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgUGFnZSogcGFnZSA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0Q29udGV4dCktPmZyYW1lKCktPnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0gdG9E
b2N1bWVudChzY3JpcHRDb250ZXh0KS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEludGVybmFsczo6
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShwYWdlKTsKICAgICBJbnRlcm5hbFNldHRpbmdzOjpmcm9t
KHBhZ2UpLT5yZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggYjZjMDAxNDViZGI4MmE1
NWFkOTQ2NmM5N2MwYzkzYjYyOTM0ZTUwYy4uMTQ5MTA4YWJiNjZmMmMzMjVlMTQ3NDlhMTViYjVl
YmM3OTBlMGZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9XZWJDb3Jl
VGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvV2ViQ29yZVRl
c3RTdXBwb3J0LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVj
dCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmIChzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIGNvbnRleHQtPkdsb2Jh
bCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b1Y4KElu
dGVybmFsczo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29udGV4dCkpLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgICAg
ICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhJbnRlcm5hbHM6OmludGVy
bmFsc0lkKSwgdG9WOChJbnRlcm5hbHM6OmNyZWF0ZSh0b0RvY3VtZW50KHNjcmlwdENvbnRleHQp
KSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKIH0K
IAogdm9pZCByZXNldEludGVybmFsc09iamVjdCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3Qodjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBjb250ZXh0KQogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAg
IFBhZ2UqIHBhZ2UgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdENvbnRleHQpLT5mcmFt
ZSgpLT5wYWdlKCk7CisgICAgUGFnZSogcGFnZSA9IHRvRG9jdW1lbnQoc2NyaXB0Q29udGV4dCkt
PmZyYW1lKCktPnBhZ2UoKTsKICAgICBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUo
cGFnZSk7CiAgICAgSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShwYWdlKS0+cmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNz
ZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IDU1MDAw
MjU3OWNlYjk5MmM3ZTNjNzQzNzU0ZWRkZDk3NDViOGE4YmMuLjA1ZGI1NWE2NDFiOTFjNDM5Mjdh
ZGExMDQ5MDMyMjQ5NWQ1NTljNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhU
TUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAK
QEAgLTI1MCw3ICsyNTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1
bWVudDo6VVJMKAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwog
Ci0gICAgKnJlc3VsdCA9IEJTdHJpbmcoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obV9kb2N1
bWVudCktPnVybCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcodG9IVE1MRG9j
dW1lbnQobV9kb2N1bWVudCktPnVybCgpKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAgICAgCkBAIC0yNjEsNyArMjYxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01I
VE1MRG9jdW1lbnQ6OmJvZHkoCiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2RvY3VtZW50LT5p
c0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSFRNTERvY3Vt
ZW50KiBodG1sRG9jID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obV9kb2N1bWVudCk7Cisg
ICAgSFRNTERvY3VtZW50KiBodG1sRG9jID0gdG9IVE1MRG9jdW1lbnQobV9kb2N1bWVudCk7CiAg
ICAgQ09NUHRyPElET01FbGVtZW50PiBkb21FbGVtZW50OwogICAgIGRvbUVsZW1lbnQuYWRvcHRS
ZWYoRE9NSFRNTEVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKGh0bWxEb2MtPmJvZHkoKSkpOwogICAg
IGlmIChkb21FbGVtZW50KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTERvY3VtZW50Ojpmb3JtcygKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1f
ZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBIVE1MRG9jdW1lbnQqIGh0bWxEb2MgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihtX2Rv
Y3VtZW50KTsKKyAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2MgPSB0b0hUTUxEb2N1bWVudChtX2Rv
Y3VtZW50KTsKICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZvcm1zID0gaHRtbERvYy0+Zm9y
bXMoKTsKICAgICAqY29sbGVjdGlvbiA9IERPTUhUTUxDb2xsZWN0aW9uOjpjcmVhdGVJbnN0YW5j
ZShmb3Jtcy5nZXQoKSk7CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURv
Y3VtZW50Lm1tCmluZGV4IDk5ZjUxNTAyMWQ0ZjEyNWUzMTQ2ZDA2NDQxNmM2MGYwNjIzNTZkZDcu
LmYzNTVkYThiZjVmODkzN2I0MTAzOTc2ZTBmY2MxMTliNzgzNGIzOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3Vt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTURvY3VtZW50Lm1tCkBAIC0zNCwxMiArMzQsNiBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CiAKLXN0YXRpYyBpbmxp
bmUgV2ViQ29yZTo6RG9jdW1lbnQqIHRvRG9jdW1lbnQoV2ViQ29yZTo6Tm9kZSogbm9kZSkKLXsK
LSAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRvY3VtZW50Kj4obm9kZSk7Ci19Ci0KIEBpbXBsZW1lbnRh
dGlvbiBXS0RPTURvY3VtZW50CiAKIC0gKFdLRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5T
U3RyaW5nICopdGFnTmFtZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192875</attachid>
            <date>2013-03-13 00:15:59 -0700</date>
            <delta_ts>2013-03-13 12:52:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112225-20130313001157.patch</filename>
            <type>text/plain</type>
            <size>93966</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMzOGFmNGQ1NDdmOWRm
ZWM3ZWViZmU4Yjc3MjM1NDIyMzExMWRhYi4uNGVlZDcyYTdlNjgwZDUyZWIyMjcyMGI1ZGFmNzRh
ZDkxZWFjNGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEzLTAzLTEyICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zIGZvciBkb2N1bWVudCB0eXBlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRvKiBoZWxwZXIgZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAg
ICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0
cnVjdHVyZS4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRvY3VtZW50KToKKyAgICAgICAgLi4u
LmxvdCBvZiBmaWxlcy4KKworMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGggdG8qIGhlbHBl
ciBmdW5jdGlvbnMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTIxNjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM0ZjFmOTkxY2U4Mjk5OGI2NDNlZWFhN2E0NTRk
NzBiN2Q2NDg2MjEuLmYzYmU5ZmJlMDRhNTIzMWVkZGFhZDg5Njk0ZTJlOTM0YTNhYzU3MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMy0xMiAgQWJoaXNoZWsgQXJ5YSAgPGlu
ZmVybm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3RzIHdpdGgg
dG8qIGZ1bmN0aW9ucyBmb3IgZG9jdW1lbnQgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTURvY3VtZW50Lm1tOiBSZW1vdmUgdGhlIHJlZHVuZGFudCBoZWxwZXIuCisKIDIw
MTMtMDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggZjk4N2Qw
ZmJjZDExNDhmOGEzN2VlNjc5YmM2ZWJkYzhmODc4N2EyNC4uNjIwMmQyOWVhZjBiMjVlNWVhNWIx
NjIyZGJjYWY2MTJhNTg1ZGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTI1Myw4ICsyNTMsNyBAQCBHZW9sb2NhdGlv
bjo6fkdlb2xvY2F0aW9uKCkKIAogRG9jdW1lbnQqIEdlb2xvY2F0aW9uOjpkb2N1bWVudCgpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
fQogCiBGcmFtZSogR2VvbG9jYXRpb246OmZyYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggZDAxMjBmNjBhODlhZGZm
YjdkMTY1YzlhYWI3M2Y5Zjc2ZjMxMTBiMC4uNGIwMmIxMTY0ZDQwYTQxOWMzNjdmOTRkMjNlZWJj
MjM2ZGFmYWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJvb2wgaXNDb250ZXh0VmFsaWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoY29udGV4dC0+
aXNEb2N1bWVudCgpIHx8IGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICBpZiAoY29u
dGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKSAm
JiBkb2N1bWVudC0+cGFnZSgpOwogICAgIH0KICNpZiAhRU5BQkxFKFdPUktFUlMpCkBAIC04NCw3
ICs4NCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGlzQ29udGV4dFZhbGlkKGNv
bnRleHQpKTsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIHJldHVy
biBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmdyb3VwU2V0dGluZ3MoKS0+aW5kZXhlZERCRGF0
YWJhc2VQYXRoKCk7CiAgICAgfQogI2lmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApp
bmRleCA2ZjE5ZWFmZjI2ZGYxNTg2ZTZjMThmZGJiMjJiYWNiMDExZTY5ZGVlLi40ZWE2ZTUwNGM1
MjVlZjE3M2QxMmJjZGI2NGY0ZjM3ZjE2MzA3NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMTM5
LDggKzEzOSw3IEBAIFJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAgICAgLCBtX3NjaGVkdWxlZEV2
ZW50VGltZXIodGhpcywgJlJUQ1BlZXJDb25uZWN0aW9uOjpzY2hlZHVsZWRFdmVudFRpbWVyRmly
ZWQpCiAgICAgLCBtX3N0b3BwZWQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAg
ICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggYjk0OTQwMDJhOTJmNGNlMWNmYzlmYzNiM2JjZjMyYWUz
NjhjZDM3NC4uNjYzMTkzYzM5NzIzMDhkNzY3MzkwZDIwYzBhMmJjNjVkN2M1NmU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgTWVkaWFDb25zdHJhaW50cyogVXNlck1lZGlh
UmVxdWVzdDo6dmlkZW9Db25zdHJhaW50cygpIGNvbnN0CiBEb2N1bWVudCogVXNlck1lZGlhUmVx
dWVzdDo6b3duZXJEb2N1bWVudCgpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgICAgICByZXR1cm4gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA1MmVjNjE4
ZDU5ZGUxOGEzZDQzNTRkMjgxYTU5N2E2YTRmNDBmMDM3Li42YTQzZWYwN2NkMTBhNGFhNGNjYmQy
MDI5NjcyYzdiOTZjNDQ4MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTA5LDggKzEwOSw3IEBAIE5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLCBtX3N0YXRlKElkbGUpCiAgICAgLCBtX3Rhc2tUaW1l
cihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90aWZpY2F0aW9uOjp0
YXNrVGltZXJGaXJlZCkpKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBET01X
aW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCktPmRvbVdpbmRvdygpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9
IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnModG9Eb2N1bWVudChj
b250ZXh0KS0+ZG9tV2luZG93KCkpOwogICAgIAogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCkpOwogICAgIG1fdGFza1RpbWVyLT5zdGFydE9uZVNob3QoMCk7CkBAIC0x
NzEsOSArMTcwLDkgQEAgdm9pZCBOb3RpZmljYXRpb246OnNob3coKQogICAgIC8vIHByZXZlbnQg
ZG91YmxlLXNob3dpbmcKICAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0aW9u
Q2VudGVyLT5jbGllbnQoKSkgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICBp
ZiAoIXN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFn
ZSgpKQorICAgICAgICBpZiAoIXRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+
cGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7Cisg
ICAgICAgIGlmIChOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHRvRG9jdW1lbnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bkFsbG93ZWQpIHsKICAgICAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjAsOCArMjU5LDggQEAgdm9pZCBOb3RpZmljYXRp
b246OnRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVyKQogY29uc3QgU3Ry
aW5nJiBOb3RpZmljYXRpb246OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
LT5wYWdlKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xp
ZW50KCktPmNoZWNrUGVybWlzc2lvbihjb250ZXh0KSk7CisgICAgQVNTRVJUKHRvRG9jdW1lbnQo
Y29udGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbSh0b0RvY3VtZW50KGNvbnRleHQpLT5wYWdlKCkpLT5jbGllbnQo
KS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsKIH0KIAogY29uc3QgU3RyaW5nJiBOb3RpZmlj
YXRpb246OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBl
cm1pc3Npb24pCkBAIC0yODYsOCArMjg1LDggQEAgY29uc3QgU3RyaW5nJiBOb3RpZmljYXRpb246
OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBlcm0KIHZv
aWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+
aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+cGFnZSgpKTsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lv
bihjb250ZXh0LCBjYWxsYmFjayk7CisgICAgQVNTRVJUKHRvRG9jdW1lbnQoY29udGV4dCktPnBh
Z2UoKSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbSh0b0RvY3VtZW50KGNvbnRl
eHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+cmVxdWVzdFBlcm1pc3Npb24oY29udGV4dCwgY2FsbGJh
Y2spOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaEdyYW1tYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoR3JhbW1hci5jcHAKaW5kZXggNTBhMTQwNjAwNTZkZTMxZTY5NWRkNDA0NTczNTJjMTJjZTc5
NzVhZi4uNzJhMGFhZTA4ZDY0YjdkZTJjNzRkYzBiZTIxNzUyOTAwMjI4NTNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUo
Y29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQogdm9pZCBTcGVlY2hHcmFtbWFyOjpzZXRT
cmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3Qg
U3RyaW5nJiBzcmMpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiAgICAgbV9zcmMgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoc3JjKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCmluZGV4
IDk4NTNlZjdhMDQwNDRjY2EwYzc5ZDYwMjA2MTAxNDEyZjY5MTYxN2UuLjk1M2I1MTIyYmI5MWQz
MDg3M2JkNGQ5NWRiMTY5YjAxYjI4YTgyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU3Bl
ZWNoR3JhbW1hciogU3BlZWNoR3JhbW1hckxpc3Q6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkg
Y29uc3QKIHZvaWQgU3BlZWNoR3JhbW1hckxpc3Q6OmFkZEZyb21VcmkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJs
ZSB3ZWlnaHQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAg
ICAgbV9ncmFtbWFycy5hcHBlbmQoU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGRvY3VtZW50LT5jb21w
bGV0ZVVSTChzcmMpLCB3ZWlnaHQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IGJlZGE4Mjc4ZmMzZjZkM2I5
NTljN2E2ZmNkMDBlODM3Zjc4MWM1N2QuLjY1ZDI3MDc5NzM3MDkyODQxODdkMWIyMjM2NjkxOTM0
YWY2MjA5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBTcGVlY2hSZWNvZ25pdGlvbjo6
U3BlZWNoUmVjb2duaXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAs
IG1fc3RhcnRlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApp
bmRleCAzZmUzNjI3MzliMDRiOGM3ZTA4NmEzZTE2ZjQ3Yzg2Y2I0OWQ5OGViLi5lMjIwMTJiNGM0
MTNkMDU2YmE0MjQ5YWNhNWU2ZmYzZGUzZDk4YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTQzLDcg
KzQzLDcgQEAgUGFzc1JlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQXVkaW9Db250
ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogCiAg
ICAgLy8gRklYTUU6IG9mZmxpbmUgY29udGV4dHMgaGF2ZSBsaW1pdGF0aW9ucyBvbiBzdXBwb3J0
ZWQgc2FtcGxlLXJhdGVzLgogICAgIC8vIEN1cnJlbnRseSBhbGwgQXVkaW9Db250ZXh0cyBtdXN0
IGhhdmUgdGhlIHNhbWUgc2FtcGxlLXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggMGU4MThhZWRjNWRm
MjNiMWM0NGRmMWQxZDg5NzA5OTY5YzcyNWUzNy4uNzk4YjM5OTExZDQ2Y2Y3MGJlMDU3NDZlNGFi
NDNhZWQ2YjVjMmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgRGF0
YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xl
YW51cFN5bmMpCiBib29sIERhdGFiYXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcygpIGNv
bnN0CiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7
Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9E
b2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBpZiAoIWRvY3VtZW50
LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2
YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTgsNyAr
MjE4LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJhc2VBY2Nlc3MoKSBjb25z
dAogdm9pZCBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJp
bmcmIG5hbWUsIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzKQogewogICAgIGlmIChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQogICAg
ICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEo
ZG9jdW1lbnQtPmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5NWY0NWVhNTFkYTZmODYxNTY5ZmYxM2Nk
ZGEzN2RmNDdkZDkzMjBjLi5jMjkxMDk1NGQ1OTIyNmU1MGUwZWZmNzk3MjRkYmZlNTZiNDI5NjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmNyZWF0ZShTY3JpcHQKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0g
ICAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpLCBjbGllbnQpOworICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUo
dG9Eb2N1bWVudChjb250ZXh0KSwgY2xpZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCAxNjU0NWE0MTEyOTZiYzdlMmY1NjgyY2RjMWU3NjE2YmY4NjUzNjcyLi5jMzNjNzQ3MTA2
NTdiZjM3YTNmNDc5MGIyYTNhODg3NmNjMTk2OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQg
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcHJvdG9jb2xzLCBFeGNlCiAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjaGVjayB0
aGUgaXNvbGF0ZWQgd29ybGQncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvbmNlIHdlYmtpdC5v
cmcvYi8xMDQ1MjAgaXMgc29sdmVkLgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2U7CiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1
bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSgpOwogICAgIH0KICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UobV91cmwpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCmluZGV4IGZkOGQzNmRlNWY0NTZiYjgzZThlMDg4NzkyY2U2ODhmMjFlZjc5NDMuLmNkYzNi
YzRkZGM5MzJiMzFjMjQ5NDU5Yzk5Y2I3NTQ1Njk5ODkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKSBjb25zdAogCiAgICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGlj
YXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250
ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX2NvbnRleHQp
OwogICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
ZG9jdW1lbnQsIHVybCk7CiAgICAgICAgIGlmICghY29va2llLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGZpZWxkcy5hcHBlbmQoIkNvb2tpZTogIiArIGNvb2tpZSk7CkBAIC0yNTEsNyArMjUxLDcg
QEAgUGFzc1JlZlB0cjxXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0PiBXZWJTb2NrZXRIYW5kc2hh
a2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QKIAogICAgIEtVUkwgdXJsID0gaHR0cFVSTEZvckF1
dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQo
KSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9j
b250ZXh0KTsKICAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGRvY3VtZW50LCB1cmwpOwogICAgICAgICBpZiAoIWNvb2tpZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXF1ZXN0LT5hZGRIZWFkZXJGaWVsZCgiQ29va2llIiwgY29va2llKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE0M2M4ZjJiMGE3
YWZmNzVkNDAxMjI3NmNmN2U4OTI2ZmI0NmYyMjAuLmIxNmRmZDIzMjdhZmQxMjQ0MDU1YWEwODM1
N2UxNzNhOWQ4MmVlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OnJlc3VtZSgpCiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
Y2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIDogbV93
b3JrZXJDbGllbnRXcmFwcGVyKGNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxv
YWRlclByb3h5KQotICAgICwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbChXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgdGhpcykpCisgICAgLCBt
X21haW5XZWJTb2NrZXRDaGFubmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSh0b0RvY3VtZW50
KGNvbnRleHQpLCB0aGlzKSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDQxZTljYTE3MjNk
YzU3YjZhZmVlMDg2MGY5YzZmZDI2YTAyODRkMWIuLmU1ZjA1ODkxOWJkNTMwOGU5NGQ1M2E4MTAx
NTQ5MDI0ZTEwZThhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMjgwMSw3ICsyODAxLDcg
QEAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90
ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIWRvYyB8fCAhZG9jLT5pc1NWR0RvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2MpLT5yb290RWxlbWVudCgpOwor
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChkb2MpLT5yb290
RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXJSb290ID0gcm9vdEVsZW1lbnQtPnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01SZXF1ZXN0U3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVJlcXVlc3RTdGF0ZS5oCmluZGV4IDMyZDRl
ZGM5ZjIzM2JjNGE5NWQxZGRhNDAxYzQ3YWE2N2I4YzJhZDEuLjQxZDMzNmVlNjExMjM5NTVhYjY0
MTIzNzJiODExNDYxZjFhOWJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVJlcXVlc3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVJlcXVlc3RTdGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2V4
ZWMoMCkKICAgICB7CiAgICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9j
dW1lbnQoKSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAg
ICAgICAgICAgbV9leGVjID0gc2NyaXB0U3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgZG9jdW1lbnQtPnBhZ2UoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKFdP
UktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
dGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggNjFkNzg3ZDRmZTIxNTAxOTIyZjExMjJmMDM0MjM3Mjg3MDIzYzY3
ZS4uMTI5ZTY1ZDFkOGNiMmQ5Yzc0N2Y4ODg1NmU1MmY5ZTM1NWEwNTYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQXVkaW9Db250ZXh0
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KAogICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJBdWRpb0NvbnRleHQgY29uc3RydWN0
b3IgY2FsbGVkIGluIGEgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IHdoaWNoIGlzIG5vdCBhIGRv
Y3VtZW50IikpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgUmVmUHRyPEF1ZGlvQ29u
dGV4dD4gYXVkaW9Db250ZXh0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAppbmRleCBhZjY5OTgzOTc5MzQ4MDEwZTUyMzJkZGIwOTdlNjNjOTU1ZWUwMDVj
Li5iYjBkODljODAzMDcwYTMwMmYzNTllNDgwOWM5ZTk1MTI5NDM2YjFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtODIsNyArODIsNyBAQCBjbGFzcyBE
T01TdHJpbmdMaXN0OwogICAgIHB1YmxpYzoKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0b0RvY3Vt
ZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAppbmRleCBkNWE5NWIxOThjZTdhN2E0YTgxYmIyMzNkMDgzYTE0MDY5MTNhMTI2Li45MWZmYWI4
MDA2OTcwM2YzYTYxMmVhMTRiODEyMGY2NGY0MWFlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAg
SlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFs
T2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLCBleGVjKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBKU0RPTUds
b2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChEb2N1bWVudCogZG9jdW1lbnQsIERPTVdy
YXBwZXJXb3JsZCogd29ybAogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCkKIHsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCB3b3JsZCk7CisgICAgICAgIHJldHVy
biB0b0pTRE9NR2xvYmFsT2JqZWN0KHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCks
IHdvcmxkKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyNWI1MzM5MWJiNWM4NjczMzYzMTFhOTgw
NGQ0ZDM2M2JhMGVhMmFiLi5mMmQ5MmI0YjJmOTBlNGM0ZWE1MmE5YTQ1NDk2N2JmMDZiYjhiNGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCk7
CiAgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIEF0b21pY1N0
cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IGZpbmRBdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKTsKLSAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiAoc3RhdGljX2Nhc3Q8SFRN
TERvY3VtZW50Kj4oZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8
fCBkb2N1bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgeworICAg
ICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmICh0b0hUTUxEb2N1bWVudChkb2N1bWVudCkt
Pmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50
V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzT2JqZWN0LCBuYW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KQEAgLTMzNiw3ICszMzYsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZwog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAg
QXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIChzdGF0aWNf
Y2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCktPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0
eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElkKGF0b21pY1Byb3BlcnR5TmFtZSkp
KSB7CisgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgKHRvSFRNTERvY3VtZW50KGRv
Y3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhh
c0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIG5hbWVkSXRlbUdldHRlcik7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLT5mcmFt
ZSgpLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewog
ICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYg
KHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21p
Y1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhhc0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVy
dHlOYW1lKSkpIHsKKyAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiAodG9IVE1MRG9j
dW1lbnQoZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8fCBkb2N1
bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBuYW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlIHwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNjNjg5M2IwMDg3OTQ5MDUzZmZmMzNkNWMzNDFm
NTE4YTA2MmE4ZTQuLmU2ODg1ZTFmMDA3ZjE5NjZmZTc1MTViZmFhMzI4M2QwODM4NGNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBKU0hUTUxEb2N1bWVudDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIFByb3AKIEpTVmFsdWUg
SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSFRNTERvY3VtZW50KiB0
aGlzT2JqID0ganNDYXN0PEpTSFRNTERvY3VtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAg
ICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
c09iai0+aW1wbCgpKTsKKyAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1MRG9jdW1l
bnQodGhpc09iai0+aW1wbCgpKTsKIAogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY29sbGVj
dGlvbiA9IGRvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAKQEAgLTg5LDcgKzg5LDcgQEAgSlNWYWx1ZSBKU0hUTUxE
b2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAodikKICAgICAgICAg
cmV0dXJuIHY7CiAKLSAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKS0+YWxsKCkpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCB0b0hUTUxEb2N1bWVudChpbXBsKCkpLT5hbGwoKSk7CiB9CiAK
IHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93
c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUg
d2luZG93LgogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAyKSB7Ci0gICAgICAgIEZy
YW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGltcGwoKSktPmZyYW1lKCk7
CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHRvSFRNTERvY3VtZW50KGltcGwoKSktPmZyYW1lKCk7
CiAgICAgICAgIGlmIChmcmFtZSkgewogICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd3Jh
cHBlciA9IHRvSlNET01XaW5kb3dTaGVsbChmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKICAg
ICAgICAgICAgIGlmICh3cmFwcGVyKSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgSlNWYWx1ZSBKU0hU
TUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgRG9jdW1lbnQqIGFjdGl2ZURv
Y3VtZW50ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCktPmRvY3VtZW50KCk7CiAKICAgICAvLyBJbiB0aGUgY2FzZSBvZiB0d28gcGFyYW1ldGVycyBv
ciBmZXdlciwgZG8gYSBub3JtYWwgZG9jdW1lbnQgb3Blbi4KLSAgICBzdGF0aWNfY2FzdDxIVE1M
RG9jdW1lbnQqPihpbXBsKCkpLT5vcGVuKGFjdGl2ZURvY3VtZW50KTsKKyAgICB0b0hUTUxEb2N1
bWVudChpbXBsKCkpLT5vcGVuKGFjdGl2ZURvY3VtZW50KTsKICAgICByZXR1cm4gdGhpczsKIH0K
IApAQCAtMTU3LDEzICsxNTcsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUo
RXhlY1N0YXRlKiBleGVjLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBOZXdsaW4KIAogSlNWYWx1
ZSBKU0hUTUxEb2N1bWVudDo6d3JpdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGRvY3VtZW50
V3JpdGUoZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKSwgRG9Ob3RBZGRO
ZXdsaW5lKTsKKyAgICBkb2N1bWVudFdyaXRlKGV4ZWMsIHRvSFRNTERvY3VtZW50KGltcGwoKSks
IERvTm90QWRkTmV3bGluZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFs
dWUgSlNIVE1MRG9jdW1lbnQ6OndyaXRlbG4oRXhlY1N0YXRlKiBleGVjKQogewotICAgIGRvY3Vt
ZW50V3JpdGUoZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCgpKSwgRG9BZGRO
ZXdsaW5lKTsKKyAgICBkb2N1bWVudFdyaXRlKGV4ZWMsIHRvSFRNTERvY3VtZW50KGltcGwoKSks
IERvQWRkTmV3bGluZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
ODc0NDlhZjcxMjM2ZjdlN2QyZmVkNDliOTE1YzE4MzA0NzRkMmMwMi4uM2RmNjY0NGM0Yjk2OWFm
MTliMTE1Zjg4NmNhOTk1ODI4ODEwYTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNPYmpl
Y3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGV4ZWMKICAgICBpZiAobV9jb2RlLmlzTnVsbCgpIHx8IG1fZXZlbnRQYXJh
bWV0ZXJOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oZXhlY3V0aW9uQ29udGV4dCk7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChleGVjdXRpb25Db250ZXh0KTsKIAogICAg
IGlmICghZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggOTlmMmQ1NTIyYmNmOTBhMDQ5
ZDAyNGI0NTJiNmYzZTBjOTAwNWI0NC4uMGY3NGFhNTFkMTdkMmU5NmEzNjM5YzZiNTBmZmUyMmQy
MmZkMGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVX
cmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmoKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgICAgICAv
LyB3ZSBkb24ndCB3YW50IHRvIGNhY2hlIHRoZSBkb2N1bWVudCBpdHNlbGYgaW4gdGhlIHBlci1k
b2N1bWVudCBkaWN0aW9uYXJ5Ci0gICAgICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSkpOworICAgICAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0b0RvY3VtZW50KG5vZGUpKTsKICAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRG9jdW1lbnRUeXBlLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKaW5kZXggZmU1MWM4NGU0MzM5MjVhZDI1MWNkZWIxMTliY2JlOWNjODRjODkz
Yi4uYThjMGM4M2EwZDY3Y2MzYWI5YzY5NDE0MDM0MTc5YzYxNzY0NWU0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5p
c0RvY3VtZW50KCkpCi0gICAgICAgIGV4ZWN1dGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KSk7CisgICAgICAgIGV4ZWN1dGUodG9Eb2N1bWVudChjb250ZXh0KSk7CiAjaWYgRU5BQkxF
KFdPUktFUlMpCiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5pc1dvcmtlckNv
bnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCmluZGV4IGVmMjBmOWZlZWQzY2Q0ZjNhNjI4NjcwOWZmNzA1NDU5ZjkzNmU5
MmYuLjhmZWQxOGUwY2Q4ZTA1NmU0NmM1NDE4ODlhZDQ2MDk0OGM2N2Y2MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0z
MjIwLDcgKzMyMjAsNyBAQCBFTkQKICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IEdl
dENvbnRleHRFbmFibGVGdW5jdGlvbigkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CiAgICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY29u
dGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgJHtlbmFibGVGdW5jdGlvbn0oc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpICYmICR7
ZW5hYmxlRnVuY3Rpb259KHRvRG9jdW1lbnQoY29udGV4dCkpKSB7XG4iKTsKICAgICAgICAgICAg
IG15ICRuYW1lID0gJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiJHtuYW1lfSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IGRlZmF1bHRTaWduYXR1cmUpLT5HZXRGdW5jdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMGE0Y2Mz
MzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNlNjIwYmYyY2QxNC4uZTcyZDE2ZTA0OWM4YzExMTMzZDA5
OGJmMzViM2U2NTFiMmMyYjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTMxOTUsMTAgKzMxOTUsMTAgQEAg
dm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHByb3QKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVy
ZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHByb3Rv
LT5DcmVhdGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1
bWVudCgpICYmIENvbnRleHRGZWF0dXJlczo6ZW5hYmxlZFBlckNvbnRleHRNZXRob2QxRW5hYmxl
ZChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkgeworICAgIGlmIChjb250ZXh0ICYm
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmVuYWJsZWRQZXJDb250
ZXh0TWV0aG9kMUVuYWJsZWQodG9Eb2N1bWVudChjb250ZXh0KSkpIHsKICAgICAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMSIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29u
dGV4dE1ldGhvZDFNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVy
ZSktPkdldEZ1bmN0aW9uKCkpOwogICAgIH0KLSAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5p
c0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpIHsKKyAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0
LT5pc0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQodG9E
b2N1bWVudChjb250ZXh0KSkpIHsKICAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDJNZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGY5NWUyYWExMzc1ZTQyMDQyMWQ0ZDI3MThhMjEwYTM4NTE0
NDYwNzQuLjI3ZTgwMTUxYzUyNTc2ZTk0YzFmNmUwNGY3ZTI4NGZhMjE0MGYyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRDbGll
bnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1lc3NhZ2VMb29wPiBjCiB2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y29tcGlsZVNjcmlwdChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFN0cmluZyogc2Ny
aXB0SWQsIFN0cmluZyogZXhjZXB0aW9uTWVzc2FnZSkKIHsKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc3RhdGUtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFtZSgpOworICAgIFJlZlB0cjxGcmFtZT4g
cHJvdGVjdCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmZyYW1lKCk7CiAg
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbXBpbGVTY3JpcHQoc3RhdGUsIGV4cHJlc3Npb24sIHNv
dXJjZVVSTCwgc2NyaXB0SWQsIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIGlmICghc2NyaXB0SWQt
PmlzTnVsbCgpKQogICAgICAgICBtX2NvbXBpbGVkU2NyaXB0VVJMcy5zZXQoKnNjcmlwdElkLCBz
b3VyY2VVUkwpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpydW5TY3JpcHQoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkCiAg
ICAgU3RyaW5nIHNvdXJjZVVSTCA9IG1fY29tcGlsZWRTY3JpcHRVUkxzLnRha2Uoc2NyaXB0SWQp
OwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IHN0YXRlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+ZnJhbWUoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFt
ZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWU7CiAgICAgaWYg
KGZyYW1lKQogICAgICAgICBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxF
dmFsdWF0ZVNjcmlwdChmcmFtZSwgc291cmNlVVJMLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3Np
dGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGU1YWU3YzNhNDFkZTQxZjIyMmQ4ODM4Y2Mx
ZmQ1ZWVkOGE2ZTNlNjMuLmFlMmYxNzI2MzRjYWVmOTg0OGNlYzU0ZDNiYjkxYjIyOWM2YzJlYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcApA
QCAtNzgsNyArNzgsNyBAQCBTY2hlZHVsZWRBY3Rpb246On5TY2hlZHVsZWRBY3Rpb24oKQogdm9p
ZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIEZyYW1lKiBm
cmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7CisgICAgICAg
IEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgICAgIGlm
ICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZnJhbWUtPnNjcmlw
dCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBjNTA1M2JhOWNjOWZjNWViM2RlN2M2
YWM4NzE5ZmE0ZjFjYTI1N2I0Li5lYjhhYzRhMjE2ZWUzZWVjZGQ3NGZkMDU2MWM1NzZiNzQ0MDgx
MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTI2MSw3
ICsyNjEsNyBAQCBGcmFtZSogdG9GcmFtZUlmTm90RGV0YWNoZWQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3Js
ZENvbnRleHQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUo
KSkKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1l
KCkpCiAgICAgICAgICAgICByZXR1cm4gd29ybGRDb250ZXh0LmFkanVzdGVkQ29udGV4dChmcmFt
ZS0+c2NyaXB0KCkpOwogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIH0gZWxzZSBpZiAoY29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFdvcmxkQwogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewogICAgIGlm
IChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdG9yZSB0aGUgRE9NV3JhcHBlcldvcmxkIGZvciB0aGUgbWFpbiB3b3JsZCBp
biB0aGUgdjg6OkNvbnRleHQgc28gY2FsbGVycwogICAgICAgICAgICAgLy8gdGhhdCBhcmUgbG9v
a2luZyB1cCB0aGVpciB3b3JsZCB3aXRoIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZCh2
ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKQogICAgICAgICAgICAgLy8gd29uJ3QgZW5kIHVwIHBh
c3NpbmcgbnVsbCBoZXJlIHdoZW4gbGF0ZXIgdHJ5aW5nIHRvIGdldCB0aGVpciB2ODo6Q29udGV4
dCBiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggODcxYzMyOGIyNTNhYTkzMmNmMTIyOGUyMTkzZTRkMDBiZjRlNjhhMC4uY2I4MGYz
MjY0MjljZTQyZWU1N2FjNjE2YTY0ZDk3ZjUwMDZlMWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IFY4RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgRnJhbWUqIGZyYW1lID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJh
bWUgPSB0b0RvY3VtZW50KGNvbnRleHQpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGE3NGU1YjA5YjJi
NDM4NTk5Njc2NDEyOTIwZjAyYmI4ZWYzYzY1ZGQuLjkyOWI1MDM2MmE2MTc4NGEwNjI4N2MwZmQw
ZmExMDAyYTJlNDI3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvCiAgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0b0RvY3Vt
ZW50KGNvbnRleHQpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCkBAIC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIFY4TGF6
eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmIChoYXNFeGlzdGluZ0xpc3RlbmVyT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgIXN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lu
bGluZUV2ZW50SGFuZGxlcnMobV9zb3VyY2VVUkwsIG1fcG9zaXRpb24ubV9saW5lKSkKKyAgICBp
ZiAoY29udGV4dC0+aXNEb2N1bWVudCgpICYmICF0b0RvY3VtZW50KGNvbnRleHQpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKG1fc291cmNlVVJMLCBt
X3Bvc2l0aW9uLm1fbGluZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKIAogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAg
IEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7
CisgICAgRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+ZnJhbWUoKTsKICAgICBB
U1NFUlQoZnJhbWUpOwogICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IGZiNzQyYjRjNzdiYThjMTI4Mzg3NmRiNmFjZDlmMDViNmI2M2ZkZjguLjU5NWJkZjg5
OWZkZmNmNjNhMzFlOTAyMGQwZTA4ZWEwMTJjYjc2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDgz
LDcgKzQ4Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQcm9w
ZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgRG9jdW1lbnQqIGRvYyA9
IGZyYW1lLT5kb2N1bWVudCgpOwogCiAgICAgaWYgKGRvYyAmJiBkb2MtPmlzSFRNTERvY3VtZW50
KCkpIHsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvYyktPmhhc05h
bWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFzRWxlbWVudFdpdGhJZChwcm9wTmFt
ZS5pbXBsKCkpKSB7CisgICAgICAgIGlmICh0b0hUTUxEb2N1bWVudChkb2MpLT5oYXNOYW1lZEl0
ZW0ocHJvcE5hbWUuaW1wbCgpKSB8fCBkb2MtPmhhc0VsZW1lbnRXaXRoSWQocHJvcE5hbWUuaW1w
bCgpKSkgewogICAgICAgICAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGRvYy0+
d2luZG93TmFtZWRJdGVtcyhwcm9wTmFtZSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW1zLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXRlbXMtPmhhc0V4YWN0bHlPbmVJdGVtKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dEN1c3RvbS5jcHAKaW5kZXggNjA4ZTcwODRlZTA1ZjFmNTYyOWM0OGUzZTZhZjVjNmY2NDAyNDQ4
Ny4uM2Q3MWVhNjgxMzg3NDBiMzM5NDU5MTdkYmEwMGRmNzI3MzJkZDlhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNw
cApAQCAtOTMsMTAgKzkzLDEwIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChEb2N1bWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRlCiB7CiAgICAgQVNT
RVJUKGltcGwpOwogICAgIGlmIChpbXBsLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gd3JhcChzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIHdyYXAodG9IVE1MRG9jdW1lbnQoaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoaW1wbC0+
aXNTVkdEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gd3JhcChzdGF0aWNfY2FzdDxTVkdEb2N1
bWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4g
d3JhcCh0b1NWR0RvY3VtZW50KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2Vu
ZGlmCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6Y3Jl
YXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmICh3cmFw
cGVyLklzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUN1c3RvbS5jcHAKaW5kZXggN2MyZmY5ZGVlYzFjZTgyNTFlOWFiMzBmODhiNzg1MGI0
YzkzMDc0OC4uYzE3ZjZlMzA0MjRhYjQwMTg0MTU3ZDU3NGQ5YTEwMzk5NmQ2YjY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAK
QEAgLTE0OSw3ICsxNDksNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoTm9kZSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgY2FzZSBOb2Rl
OjpDT01NRU5UX05PREU6CiAgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PENvbW1lbnQq
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX05PREU6Ci0gICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiB3cmFwKHRvRG9j
dW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpE
T0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PERvY3Vt
ZW50VHlwZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA3YjM4MzFiN2UyNmUwODE5N2JlMzVlZjhiNDNhMWQ1ZjE5ZWY3ZjZlLi41Y2NkN2Fj
ZDdhZjBlZmUyMTIxYzEzYjkwMjM1YjAxYTJlNzEzMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25D
b2RlIGNoZWNrQWNjZXB0Q2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXcK
ICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKIAogICAgIGlmIChvbGRDaGls
ZCAmJiBuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKCFzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG5ld1BhcmVudCktPmNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xk
Q2hpbGQpKQorICAgICAgICBpZiAoIXRvRG9jdW1lbnQobmV3UGFyZW50KS0+Y2FuUmVwbGFjZUNo
aWxkKG5ld0NoaWxkLCBvbGRDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOwogICAgIH0gZWxzZSBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZChuZXdQYXJlbnQs
IG5ld0NoaWxkKSkKICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCA4NDRlMGU4
YjNkOTlmMjI5ZmNjMmYyMzM0ZDQwMzUyNTRiNTY0MDgzLi5jZTFiZWUyYzJjODFiYTYzZTRjNDU3
ODBiYzc0YTg2ZjEzNjE5MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
fkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcigpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOyB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdG9Eb2N1
bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CiAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IGQ4YjBjZDkwNTUwNjVmMzc4ZGE2NzgxYWViMjAxN2Qz
YjNhN2E2ZmEuLjQ4ODYzYmIxNWEwMDhmZWU0NTA4MTljOGQ2ZWUyMjE4YWJhN2JkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC0xNjQsNyAr
MTY0LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKIAogaW5saW5lIERvY3VtZW50KiBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJldHVybiB0
b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IGM1ODQ3YWZkODIwYTIxN2Q0ODExNDA5OTkwNDBhYmU5N2IwZjdlZTYu
LjlkNWU3NGU2YzIyMDA1MTYwNmIzN2E5ODhkNDFkNGRiZmY0YzY5ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtMjg2NCw3ICsyODY0LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0
dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYWtlIHNldENvb2tpZSB3b3JrIG9uIFhNTCBkb2N1bWVudHMgdG9vOyBl
LmcuIGluIGNhc2Ugb2YgPGh0bWw6bWV0YSAuLi4uLj4KICAgICAgICAgaWYgKGlzSFRNTERvY3Vt
ZW50KCkpIHsKICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1bWVu
dHMpIGlnbm9yZWQuCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlz
KS0+c2V0Q29va2llKGNvbnRlbnQsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICAgICAgdG9I
VE1MRG9jdW1lbnQodGhpcyktPnNldENvb2tpZShjb250ZW50LCBJR05PUkVfRVhDRVBUSU9OKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJjb250
ZW50LWxhbmd1YWdlIikpCiAgICAgICAgIHNldENvbnRlbnRMYW5ndWFnZShjb250ZW50KTsKQEAg
LTU3NTUsNyArNTc1NSw3IEBAIE5vZGUqIGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2MpCiAgICAgICAgIHJldHVybiAwOwogICAgIE5vZGUqIG5vZGUgPSBkb2MtPmZvY3Vz
ZWROb2RlKCk7CiAgICAgaWYgKCFub2RlICYmIGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpKSB7Ci0g
ICAgICAgIFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBsdWdp
bkRvY3VtZW50Kj4oZG9jKTsKKyAgICAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdpbkRvY3VtZW50
ID0gdG9QbHVnaW5Eb2N1bWVudChkb2MpOwogICAgICAgICBub2RlID0gIHBsdWdpbkRvY3VtZW50
LT5wbHVnaW5Ob2RlKCk7CiAgICAgfQogICAgIGlmICghbm9kZSAmJiBkb2MtPmlzSFRNTERvY3Vt
ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0MWEwNWRlMTM0ODEyYTg1M2RjZjUwYWEy
MDlhZjNhZWRhMDdmZWIuLjZkYWI3NDk0YjA3N2ZkNTZhNTM0ZjE0M2I5YzhhMmM3MTExYThhYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgdm9pZCAoKkFyZ3VtZW50c0NhbGxiYWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKICAg
ICB2b2lkIHByb2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0
YSwgQXJndW1lbnRzQ2FsbGJhY2spOwogCi0gICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCkBA
IC0xNTgzLDYgKzE1ODMsMzMgQEAgaW5saW5lIGNvbnN0IERvY3VtZW50KiBEb2N1bWVudDo6dGVt
cGxhdGVEb2N1bWVudCgpIGNvbnN0CiB9CiAjZW5kaWYKIAoraW5saW5lIERvY3VtZW50KiB0b0Rv
Y3VtZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7
CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKwor
aW5saW5lIGNvbnN0IERvY3VtZW50KiB0b0RvY3VtZW50KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKworaW5saW5lIERvY3VtZW50KiB0
b0RvY3VtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIW5vZGUgfHwgbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBjb25zdCBEb2N1bWVudCogdG9E
b2N1bWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFub2RlIHx8IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KG5vZGUpOworfQorCisvLyBUaGlzIHdpbGwgY2F0
Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvRG9jdW1lbnQoY29u
c3QgRG9jdW1lbnQqKTsKKwogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5
IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBp
bmxpbmUgdGhlbS4KIAogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAppbmRleCBjZDFkNDg1MzQ2OTliYTg1OWExZjMz
YTFiZDJjNmY5MWNiODRlMzg0Li5iYzkxNzdiYzVhMWExNDNhNGYxNDAzZGU5ZDIxNjJiMzVmM2Zk
ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IERvY3VtZW50VHlwZTo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqIGlucwogICAgIC8vIE91ciBkb2N1bWVudCBub2RlIGNhbiBiZSBu
dWxsIGlmIHdlIHdlcmUgY3JlYXRlZCBieSBhIERPTUltcGxlbWVudGF0aW9uLiAgV2UgdXNlIHRo
ZSBwYXJlbnQoKSBpbnN0ZWFkLgogICAgIEFTU0VSVChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9k
ZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5v
ZGUoKS0+aXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihwYXJlbnROb2RlKCkpOworICAgICAgICBEb2N1bWVudCogZG9jID0g
dG9Eb2N1bWVudChwYXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIWRvYy0+ZG9jdHlwZSgpKQog
ICAgICAgICAgICAgZG9jLT5zZXREb2NUeXBlKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAppbmRleCA2NjMwNDlhYjAxNGMyNzYxOTg5NTk1NTI1Yzk0NmE1NzNmMGE1OTdmLi45ZDM4
MDQzMGM5YjM2ODFhODMwNWI5ZjE3ZGU3N2UzYjc1YWJlNDViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCkBAIC0yMTk5LDcgKzIxOTksNyBAQCBBdG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUlu
aGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChuLT5pc0RvY3VtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAvLyBjaGVja2luZyB0aGUgTUlN
RSBjb250ZW50LWxhbmd1YWdlCi0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0
IERvY3VtZW50Kj4obiktPmNvbnRlbnRMYW5ndWFnZSgpOworICAgICAgICAgICAgdmFsdWUgPSB0
b0RvY3VtZW50KG4pLT5jb250ZW50TGFuZ3VhZ2UoKTsKICAgICAgICAgfQogCiAgICAgICAgIG4g
PSBuLT5wYXJlbnROb2RlKCk7CkBAIC0yNjgyLDEwICsyNjgyLDEwIEBAIHZvaWQgRWxlbWVudDo6
dXBkYXRlTmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkTmFtZSwg
Y29uc3QgQXRvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghb2xkTmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVO
YW1lZEl0ZW0ob2xkTmFtZSk7CisgICAgICAgIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KCkpLT5y
ZW1vdmVOYW1lZEl0ZW0ob2xkTmFtZSk7CiAKICAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQot
ICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJ
dGVtKG5ld05hbWUpOworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+YWRkTmFt
ZWRJdGVtKG5ld05hbWUpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUV4dHJhTmFtZWRJdGVt
UmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3SWQpCkBAIC0yNjk0LDEwICsyNjk0LDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRXh0
cmFOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFvbGRJZC5pc0VtcHR5KCkpCi0gICAgICAgIHN0
YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVkSXRl
bShvbGRJZCk7CisgICAgICAgIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRy
YU5hbWVkSXRlbShvbGRJZCk7CiAKICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFtZWRJdGVt
KG5ld0lkKTsKKyAgICAgICAgdG9IVE1MRG9jdW1lbnQoZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFt
ZWRJdGVtKG5ld0lkKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRWxlbWVudDo6
ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IGMxMWQyMGYxMmRhM2ViZGI2MGRlNzlhYTBhOTA4NDhk
ZmI1MDdkMTcuLmMwOTNlYzFiOWZjY2FmOTliOWZmMTVkMjlhZTE5NGQ1YWE5OTI4MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIGJvb2wgRXZlbnRU
YXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCogZXZlbnQpCiAgICAgaWYgKCFwcmVmaXhl
ZFR5cGVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgICBpZiAoY29udGV4dCAm
JiBjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LT5kb21XaW5kb3coKSkgewogICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lclByZWZpeGVk
VmVjdG9yKQogICAgICAgICAgICAgICAgICAgICBpZiAobGlzdGVuZXJVbnByZWZpeGVkVmVjdG9y
KQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVy
cyhFdmVudCogZXZlbnQsIEV2ZW50VGFyZ2V0RGF0YSogZCwgRXZlbnRMaXN0CiAgICAgaWYgKHVz
ZXJFdmVudFdhc0hhbmRsZWQpIHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgaWYgKGNvbnRleHQgJiYg
Y29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gdG9Eb2N1bWVudChjb250ZXh0KTsKICAgICAgICAgICAgIGRvY3VtZW50LT5y
ZXNldExhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCAyYmI5NDBj
ODllZTE1ZTM5OWYzNjE5N2RhNjkxNjhjZGI2ZDUwMGQ3Li5mOWMwNzNkZTcyYzM1MWY5NmRlOTk1
NzNiOWI3NzQ1YTY4M2ZhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxl
Y3Rpb24uY3BwCkBAIC0xMDMsOCArMTAzLDcgQEAgdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpk
aXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogRG9jdW1lbnQqIE5h
bWVkRmxvd0NvbGxlY3Rpb246OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBBU1NFUlQoIWNvbnRleHQgfHwgY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAg
ICByZXR1cm4gdG9Eb2N1bWVudChjb250ZXh0KTsKIH0KIAogUGFzc1JlZlB0cjxET01OYW1lZEZs
b3dDb2xsZWN0aW9uPiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGVDU1NPTVNuYXBzaG90KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCAzY2IwZTZmNzIxZDg3OTM0MWU2ZWE4NGNjMzdmZDMyMWRkY2Vi
ODRkLi5lMGY5NjMyNjg2OGJkOTViNGZmOTBmNjRhZmE5ZjMzMDBlZTE2MDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0xNDkyLDcgKzE0OTIsNyBAQCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFj
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBET0NVTUVOVF9O
T0RFOgotICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoRWxlbWVu
dCogZGUgPSB0b0RvY3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZGUtPmlzRGVmYXVsdE5hbWVzcGFjZShuYW1lc3BhY2VVUkkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgpAQCAtMTUyNSw3
ICsxNTI1LDcgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcg
Jm5hbWVzcGFjZVVSSSkgY29uc3QKICAgICAgICAgY2FzZSBFTEVNRU5UX05PREU6CiAgICAgICAg
ICAgICByZXR1cm4gbG9va3VwTmFtZXNwYWNlUHJlZml4KG5hbWVzcGFjZVVSSSwgc3RhdGljX2Nh
c3Q8Y29uc3QgRWxlbWVudCAqPih0aGlzKSk7CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfTk9ERToK
LSAgICAgICAgICAgIGlmIChFbGVtZW50KiBkZSA9IHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50
Kj4odGhpcyktPmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRl
ID0gdG9Eb2N1bWVudCh0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGRlLT5sb29rdXBQcmVmaXgobmFtZXNwYWNlVVJJKTsKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICAgICAgY2FzZSBFTlRJVFlfTk9ERToKQEAgLTE1ODMsNyArMTU4Myw3
IEBAIFN0cmluZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgp
IGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICBpZiAoRWxlbWVudCogZGUgPSB0b0RvY3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZGUtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgp
OwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RF
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250ZXh0LmNwcAppbmRleCAwNzA5MzMw
ODhlMjVkZTgzY2EwNzBkZDQxYjlhN2JjMWU1OTUwMjY3Li5kNjNlZTM5N2YxMWZlN2EzZDYwNGUx
MzBmODFmMzc1MzY0YTE3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93
RXZlbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRDb250
ZXh0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBXaW5kb3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50
Q29udGV4dChFdmVudCogZXZlbnQsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgY29ucwogICAgIGlm
ICghdG9wTGV2ZWxDb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fd2luZG93ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5l
ciktPmRvbVdpbmRvdygpOworICAgIG1fd2luZG93ID0gdG9Eb2N1bWVudCh0b3BMZXZlbENvbnRh
aW5lciktPmRvbVdpbmRvdygpOwogICAgIG1fdGFyZ2V0ID0gdG9wRXZlbnRDb250ZXh0ID8gdG9w
RXZlbnRDb250ZXh0LT50YXJnZXQoKSA6IG5vZGUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggZTNhYmI5NTc4OTNmYmM3NzE1
MzZjNDNlNjlkNWMyOWJhYzdmNGM5OC4uMDU4MTFlYTAwMTAyMTA4OGMxMWI0ZTA2ZDM0MDM2MDE3
ZDk0YjU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5j
cHAKQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFy
dE1hcmt1cChTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IE5vZGUqIG5vZAogICAgICAgICBh
cHBlbmRDb21tZW50KHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgQ29tbWVudCo+KG5vZGUpLT5k
YXRhKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0g
ICAgICAgIGFwcGVuZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnQqPihub2RlKSk7CisgICAgICAgIGFwcGVuZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgdG9E
b2N1bWVudChub2RlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRf
RlJBR01FTlRfTk9ERToKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
aAppbmRleCAyYWFhNzk4YWVhZmY3ODEwMmVkNDQxMTllODk2ODhlZTc0MjgyNzEzLi41MTQyMDcy
NThmNjJlNmI1ZTgxYzM2ZWJlMmZlM2YwMWRkMTc5MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmgKQEAgLTEwNyw2ICsxMDcsMjEgQEAgaW5saW5lIGJvb2wgSFRNTERvY3VtZW50Ojpo
YXNFeHRyYU5hbWVkSXRlbShBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQogICAgIHJldHVybiBtX2V4
dHJhTmFtZWRJdGVtQ291bnRzLmNvbnRhaW5zKG5hbWUpOwogfQogCitpbmxpbmUgSFRNTERvY3Vt
ZW50KiB0b0hUTUxEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0hUTUxEb2N1
bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQp
OworfQorCitpbmxpbmUgY29uc3QgSFRNTERvY3VtZW50KiB0b0hUTUxEb2N1bWVudChjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSFRNTERvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlz
IHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvSFRN
TERvY3VtZW50KGNvbnN0IEhUTUxEb2N1bWVudCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBIVE1MRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4IGU2YzNlMmZhYjUwNTc2YTc3OGU1MDlkNjRhMjhk
MWIwOGY0OTQ1NTAuLjI1MjUyMmVkNGZmNGYzYTNlNzFmNTNmNmIxMDI3ZWFiMzhlMDkwOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBTVkdEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpnZXRTVkdE
b2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBEb2N1bWVudCogZG9jID0g
Y29udGVudERvY3VtZW50KCk7CiAgICAgaWYgKGRvYyAmJiBkb2MtPmlzU1ZHRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jKTsKKyAgICAgICAg
cmV0dXJuIHRvU1ZHRG9jdW1lbnQoZG9jKTsKICAgICAvLyBTcGVjOiBodHRwOi8vd3d3LnczLm9y
Zy9UUi9TVkcvc3RydWN0Lmh0bWwjSW50ZXJmYWNlR2V0U1ZHRG9jdW1lbnQKICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAppbmRleCA0ZDg2NDhiZDBhYjc4MTEyN2E3MzE3NDM3NzA0ZDQ3ZTdk
ZTM2OWFkLi44YjAxN2U2YTg2MDQ4OGZhZTkyMDY5NWU5OWIxNzUzODM1Mjg3ZDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCB2
b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdAogewogICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CiAg
ICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAm
JiAhaXNJblNoYWRvd1RyZWUoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOworICAgICAg
ICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHRvSFRNTERvY3VtZW50KHRoaXMtPmRvY3Vt
ZW50KCkpOwogICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1fbmFt
ZSk7CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0odmFsdWUpOwogICAg
ICAgICB9CkBAIC0xMTMsNyArMTEzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBIVE1MSUZyYW1lRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUKIHsKICAg
ICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IHJlc3VsdCA9IEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgIWluc2Vy
dGlvblBvaW50LT5pc0luU2hhZG93VHJlZSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9j
dW1lbnQqPihkb2N1bWVudCgpKS0+YWRkRXh0cmFOYW1lZEl0ZW0obV9uYW1lKTsKKyAgICAgICAg
dG9IVE1MRG9jdW1lbnQoZG9jdW1lbnQoKSktPmFkZEV4dHJhTmFtZWRJdGVtKG1fbmFtZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSFRNTElGcmFt
ZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewog
ICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAg
ICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1M
RG9jdW1lbnQoKSAmJiAhaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAg
IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVk
SXRlbShtX25hbWUpOworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+cmVtb3Zl
RXh0cmFOYW1lZEl0ZW0obV9uYW1lKTsKIH0KIAogYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6c2hv
dWxkRGlzcGxheVNlYW1sZXNzbHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggY2Y4ZWFlNmJjMDE4Njg4NmNiZjcyMTg5ZWZiZTRmNGYzOWFjMjhh
NS4uYWM1YzBiMmYwODdmNjk0NjgzOTkzODNjMGI5MTVlNTk0NWYzYjIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNjI0LDcgKzM2MjQsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQ
bGF5ZXIqKQogICAgIC8vIFRoaXMgaXMgbm9ybWFsbHkgYWNjZXB0YWJsZSBleGNlcHQgd2hlbiB3
ZSBhcmUgaW4gYSBzdGFuZGFsb25lCiAgICAgLy8gTWVkaWFEb2N1bWVudC4gSWYgc28sIHRlbGwg
dGhlIGRvY3VtZW50IHdoYXQgaGFzIGhhcHBlbmVkLgogICAgIGlmIChvd25lckRvY3VtZW50KCkt
PmlzTWVkaWFEb2N1bWVudCgpKSB7Ci0gICAgICAgIE1lZGlhRG9jdW1lbnQqIG1lZGlhRG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxNZWRpYURvY3VtZW50Kj4ob3duZXJEb2N1bWVudCgpKTsKKyAgICAg
ICAgTWVkaWFEb2N1bWVudCogbWVkaWFEb2N1bWVudCA9IHRvTWVkaWFEb2N1bWVudChvd25lckRv
Y3VtZW50KCkpOwogICAgICAgICBtZWRpYURvY3VtZW50LT5tZWRpYUVsZW1lbnRTYXdVbnN1cHBv
cnRlZFRyYWNrcygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKaW5kZXggZjRkNjc1ODJkNDllYWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYzN2MwMy4u
MjRlMTkyOTI4NDliZGM5YzhlZGFhNzFlYTVhYmI0Y2ZjM2QxNjU1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEhU
TUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1lZEl0ZW0oKQogICAgICAgICBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpOwogICAgIH0KICAgICBpZiAoaXNOYW1lZEl0ZW0gIT0gd2FzTmFt
ZWRJdGVtICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgSFRNTERv
Y3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3Vt
ZW50KCkpOworICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1MRG9jdW1lbnQo
dGhpcy0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChpc05hbWVkSXRlbSkgewogICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShnZXROYW1lQXR0cmlidXRlKCkpOwogICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKGdldElkQXR0cmlidXRlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZGEyNGZhNmMxMzcwZjM2ZDQ0MzdlMjRk
YTZmOGQ3YjIxOTMzZmE5Ni4uMzMxZGFhMzc2N2IxYTM5MDkwYmRkNGNmOTRiYWNiN2ViNjRmY2Rl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHB1YmxpYzoKIAogICAgIEltYWdlRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZURvY3VtZW50Kj4oUmF3RGF0YURvY3VtZW50
UGFyc2VyOjpkb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIHRvSW1hZ2VEb2N1bWVudChSYXdE
YXRhRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCmluZGV4IGZhZjkyMDcwZmY0MDI1NDg5NDZlN2E2
ODAxNWVlMTI0MTRjODIyMjMuLmY2Zjk5OGU4MGRjODZlMmQwYmZiMDg0YTY5M2YzNDE2YWRmYWUw
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCkBAIC03MSw3ICs3MSwyMiBAQCBw
cml2YXRlOgogICAgIC8vIFdoZXRoZXIgdGhlIGltYWdlIHNob3VsZCBiZSBzaHJ1bmsgb3Igbm90
CiAgICAgYm9vbCBtX3Nob3VsZFNocmlua0ltYWdlOwogfTsKLSAgICAKKworaW5saW5lIEltYWdl
RG9jdW1lbnQqIHRvSW1hZ2VEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc0lt
YWdlRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlRG9jdW1lbnQqPihk
b2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBJbWFnZURvY3VtZW50KiB0b0ltYWdlRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNJbWFnZURvY3VtZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbWFnZURvY3VtZW50Kj4oZG9jdW1lbnQpOwor
fQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3Qu
Cit2b2lkIHRvSW1hZ2VEb2N1bWVudChjb25zdCBJbWFnZURvY3VtZW50Kik7CisKIH0KIAogI2Vu
ZGlmIC8vIEltYWdlRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAppbmRl
eCAyZDgxMjk2M2JmMTFmYmVhNmQxYzVjNjBlZTc2MWNjMjg2NDIxODdlLi5lYzc3N2FlZGJlMzg3
YjM2NmQ0OWQ0YzZjMTdmYWNlMWE4OThjMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1l
bnQuaApAQCAtNTQsNyArNTQsMjIgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPE1lZGlhRG9jdW1l
bnQ+IG1fcmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyOwogfTsKLSAgICAKKworaW5saW5lIE1lZGlh
RG9jdW1lbnQqIHRvTWVkaWFEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc01l
ZGlhRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhRG9jdW1lbnQqPihk
b2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBNZWRpYURvY3VtZW50KiB0b01lZGlhRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+aXNNZWRpYURvY3VtZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRpYURvY3VtZW50Kj4oZG9jdW1lbnQpOwor
fQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3Qu
Cit2b2lkIHRvTWVkaWFEb2N1bWVudChjb25zdCBNZWRpYURvY3VtZW50Kik7CisKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGM5OWUzNTA5OTNj
MzI5Zjg5NzI5MmM5MjUyMGYxMDhlZGY4M2E2NTYuLjhlZDU2NzJiN2VhYTAzMDEwMGM1ZWRkODVj
MmE4MmI2YjI3NzFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50
U3RydWN0dXJlKCkKICAgICBpZiAobG9hZGVyKQogICAgICAgICBtX2VtYmVkRWxlbWVudC0+c2V0
QXR0cmlidXRlKHR5cGVBdHRyLCBsb2FkZXItPndyaXRlcigpLT5taW1lVHlwZSgpKTsKIAotICAg
IHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnNldFBsdWdpbk5vZGUo
bV9lbWJlZEVsZW1lbnQpOworICAgIHRvUGx1Z2luRG9jdW1lbnQoZG9jdW1lbnQoKSktPnNldFBs
dWdpbk5vZGUobV9lbWJlZEVsZW1lbnQpOwogCiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZW1iZWRF
bGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcAppbmRleCBiMjE5NDNiZDkyNWRlOGNhYjFkNGJkZmI2ZjJhMTE1MTVk
NmQzMzA1Li41ZWUzZDIyMzdmNGE0MDE1M2Y3ZDA4ODliZWEzZjBkZjRmODFkYTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0yMDIsNyArMjAyLDcg
QEAgVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgZG91YmxlIHN0YXJ0LCBkb3VibGUKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAg
LCBtX3BhdXNlT25FeGl0KGZhbHNlKQogICAgICwgbV9zbmFwVG9MaW5lcyh0cnVlKQotICAgICwg
bV9jdWVCYWNrZ3JvdW5kQm94KEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihjb250ZXh0KSkpCisgICAgLCBtX2N1ZUJhY2tncm91bmRCb3goSFRNTERpdkVsZW1l
bnQ6OmNyZWF0ZSh0b0RvY3VtZW50KGNvbnRleHQpKSkKICAgICAsIG1fZGlzcGxheVRyZWVTaG91
bGRDaGFuZ2UodHJ1ZSkKIHsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5k
ZXggODlkZDI1MjE2ZjFkMjQ5NDE3YmNiMGFjNzc4MjE5NmJhM2ZmYWVlNC4uYjVjNWNmNGVkMGEw
OWE3Y2E0OGEwN2YxMmE5ZWEzNTE1ZmM1YWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgVGV4
dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBl
bmQsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKLSAgICBEb2N1bWVudCogb3duZXJEb2N1bWVu
dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsgfQorICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gdG9Eb2N1bWVu
dChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlQm94PiBjcmVhdGVEaXNwbGF5VHJlZSgpOwogICAgIFBhc3NSZWZQdHI8VGV4
dFRyYWNrQ3VlQm94PiBkaXNwbGF5VHJlZUludGVybmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMmQwZjM4MWQ5ZmYxMDU0NTM5OGFiZmY1YzQ1
MzIxNGRhOTAyNmI5OC4uZDM4M2E4NGFkMjY2ZDA1MmY0YWRjYTRhMjE0Y2QxNmNiNWYxMmE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMjQ0LDcg
KzI0NCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gIFdlYlZUVFBhcnNlcjo6Y3Jl
YXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KGNvCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIAogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgbV9jdXJy
ZW50Tm9kZSA9IGZyYWdtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKaW5kZXggZWVlN2Q0ZjFlZjU2MGRlNWJjZTA1MmQ5NDNmYzY5OTI3ZjM2
YmMwYS4uMTA5MGZlNTA4OTQ4YTFjYjI1OTRiM2RjODgxNDNmZWRjNDkwNWYwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0zNzgsNyAr
Mzc4LDcgQEAgRG9jdW1lbnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnREb2N1bWVudChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQKICAgICAgICAgKmVycm9yU3RyaW5nID0g
IkRvY3VtZW50IGlzIG5vdCBhdmFpbGFibGUiOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSk7CisgICAgcmV0dXJuIHRvRG9j
dW1lbnQobm9kZSk7CiB9CiAKIEVsZW1lbnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRFbGVt
ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKQEAgLTczMyw3ICs3MzMs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbm9kZS0+aXNEb2N1bWVudE5vZGUoKSA/
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSkgOiBub2RlLT5vd25lckRvY3VtZW50KCk7Cisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbm9kZS0+aXNEb2N1bWVudE5vZGUoKSA/IHRvRG9jdW1l
bnQobm9kZSkgOiBub2RlLT5vd25lckRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5v
dCBhbiBIVE1MIGRvY3VtZW50IjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM1NCw3ICsxMzU0LDcg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG4KICNlbmRpZgogCiAgICAgfSBlbHNlIGlmIChub2Rl
LT5pc0RvY3VtZW50Tm9kZSgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4obm9kZSk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRv
RG9jdW1lbnQobm9kZSk7CiAgICAgICAgIHZhbHVlLT5zZXREb2N1bWVudFVSTChkb2N1bWVudFVS
TFN0cmluZyhkb2N1bWVudCkpOwogICAgICAgICB2YWx1ZS0+c2V0QmFzZVVSTChkb2N1bWVudEJh
c2VVUkxTdHJpbmcoZG9jdW1lbnQpKTsKICAgICAgICAgdmFsdWUtPnNldFhtbFZlcnNpb24oZG9j
dW1lbnQtPnhtbFZlcnNpb24oKSk7CkBAIC0xNDg5LDcgKzE0ODksNyBAQCB1bnNpZ25lZCBJbnNw
ZWN0b3JET01BZ2VudDo6aW5uZXJDaGlsZE5vZGVDb3VudChOb2RlKiBub2RlKQogTm9kZSogSW5z
cGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShOb2RlKiBub2RlKQogewogICAgIGlmIChu
b2RlLT5pc0RvY3VtZW50Tm9kZSgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHRvRG9jdW1lbnQobm9kZSk7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC0+b3duZXJFbGVtZW50
KCk7CiAgICAgfQogICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IDRiZGFkNTc2YWYxNDA0ODgwY2EwMTgzMDkxZWQyOThmMzA0ZjkwYTMuLmZmMGYwYjg2M2M2Zjlj
ZWY5ZWQwYWUxOGQ5ODYxZjdlYzgzODliZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xMTcsNyArMTE3LDcg
QEAgc3RhdGljIEZyYW1lKiBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSAwOwogICAgIGlm
IChjb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICAgICAgZnJhbWUgPSB0b0RvY3VtZW50KGNv
bnRleHQpLT5mcmFtZSgpOwogICAgIHJldHVybiBmcmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDUzZDhm
ZmEzMjk5ODA2N2MyMDFkMzg4NGZmM2IyOWNkNTEwM2MxMmIuLmI0YTgzMjJkMTNmNzdjMWJjNWY0
YjhiNTNhYjQ1NTYzMzk4NGQ2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTIwNTYsNyArMjA1Niw3IEBAIGlubGlu
ZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnRpbmdBZ2VudHNGb3JDb250CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2Uoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgp
KTsKKyAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHRvRG9jdW1lbnQo
Y29udGV4dCktPnBhZ2UoKSk7CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgcmV0dXJuIGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVudENvbnRleHQoY29udGV4dCk7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5jcHAKaW5kZXggM2M3MDVmZmZlMzAzZDc4NTc3MDgx
NzBjMDczMDkxZjZkZjRkNWRjNy4uNTFlYTI1ZThiYjg0MzMwNTAyODY3ODViNTU3YmMwMmU2M2Q4
Mzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBQcmVyZW5kZXJlcjo6cmVzdW1lKCkKIERvY3VtZW50KiBQcmVyZW5kZXJlcjo6
ZG9jdW1lbnQoKQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9j
dW1lbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogfQogCiBQcmVyZW5kZXJlckNsaWVudCogUHJlcmVuZGVyZXI6OmNsaWVudCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDI2YmM4Y2IxZGI5
YmRhNDc1MGQ5NDNlOWY3YWY0Y2VlZWZmYmJlZjAuLjAwYTFkOGZlNjc0ZmM2NDFlMTYzZjJkM2Zh
MDNkZmU1YmU5MjYyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmRlcHJlY2F0ZWRE
aWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmMKIHZvaWQgVGV4
dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCgpCiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJDcm9zcy1v
cmlnaW4gdGV4dCB0cmFjayBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hh
cmluZyBwb2xpY3kuIikpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShTZWN1cml0eU1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxl
dmVsLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgbV9zdGF0ZSA9IEZhaWxlZDsKIH0KQEAgLTEyNiw3
ICsxMjYsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQogewogICAgIEFTU0VSVChtX2NhY2hlZEN1ZURhdGEgPT0gcmVzb3Vy
Y2UpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPiht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9j
dW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBpZiAoIW1fY3Jvc3NPcmlnaW5N
b2RlLmlzTnVsbCgpCiAgICAgICAgICYmICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
UmVxdWVzdChyZXNvdXJjZS0+cmVzcG9uc2UoKS51cmwoKSkKICAgICAgICAgJiYgIXJlc291cmNl
LT5wYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKSB7
CkBAIC0xNTQsNyArMTU0LDcgQEAgYm9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgp
KTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVu
dChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBj
dWVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKSkpOwog
CiAgICAgaWYgKCFjcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1M2UzNDc4MzQ5YjQ3ZDRmNTEyMzQyYTc2
MzgzZTAwMzY3NzA1ZWMwLi5lMzAxOGIzNTZiM2IwOGQ5NTNjYzVmYTE4ZjI4Yzk0NmZjZmQ0OTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01MSw3
ICs1MSw3IEBAIFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktF
UlMpCiAKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5pc0Rv
Y3VtZW50KCkpOwotICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMp
OworICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh0b0RvY3VtZW50
KGNvbnRleHQpLCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogI2VuZGlmIC8vIEVO
QUJMRShXT1JLRVJTKQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgcmVx
dWVzdCwgY2xpZW50LCBvcHRpb25zKTsKKyAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodG9Eb2N1bWVudChjb250ZXh0KSwgcmVxdWVzdCwgY2xp
ZW50LCBvcHRpb25zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDQ0NjE4ODkz
ZDJlOGU4OTRhNmE5N2UyZDMwODg4ZGJkZTViYjZiYTcuLmJhZGU2ZTk2N2JmMmRhNWZkNzRjN2Y1
NDNlZTc4NjM0N2MxMDhiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2Ny
aXB0RXhlYwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAKICAgICBPd25QdHI8UmVzb3Vy
Y2VSZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQocmVxdWVzdERhdGEpKTsK
ICAgICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTljNmY1MWQ4
ZjI4MzgyYjJhN2QyMzU0ZjY4MzkzOWM5NzNhMjc5MS4uNjNjMjBkMjUyNWM1MThiN2Y4Y2RkZDYw
NDFkMDJlY2YxOWViNzhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcApAQCAtMTQzMiw3ICsxNDMyLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmNvcHlTdGF0ZUZyb20oY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5KiBvdGhlcikK
IHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyLCBIZWFkZXJUeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwogICAgICAgICBpZiAoZG9jdW1lbnQtPmRvbVdpbmRvdygpKQogICAgICAgICAgICAgRmVhdHVy
ZU9ic2VydmVyOjpvYnNlcnZlKGRvY3VtZW50LT5kb21XaW5kb3coKSwgZ2V0RmVhdHVyZU9ic2Vy
dmVyVHlwZSh0eXBlKSk7CiAgICAgfQpAQCAtMTY3Niw3ICsxNjc2LDcgQEAgdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRl
eHQsIGNvbnN0IFMKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBlNGQwMjU2MzFiYjA2NjI3
YjU1YjQwZDU3MGM4NzdjYTdkYmY4MGUyLi5mNGM5ZjFhODhmZDM0M2M4MGY1OTQyN2Q1YjhhMGZl
ZjdjOTE2ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05MjAsNyArOTIwLDcg
QEAgdm9pZCBET01XaW5kb3c6OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgYm9vbCBhbGxvd0ZvY3VzID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yOjp3aW5k
b3dGb2N1c0FsbG93ZWQoKSB8fCAhbV9mcmFtZS0+c2V0dGluZ3MoKS0+d2luZG93Rm9jdXNSZXN0
cmljdGVkKCk7CiAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gdG9E
b2N1bWVudChjb250ZXh0KTsKICAgICAgICAgaWYgKG9wZW5lcigpICYmIGFjdGl2ZURvY3VtZW50
LT5kb21XaW5kb3coKSA9PSBvcGVuZXIoKSkKICAgICAgICAgICAgIGFsbG93Rm9jdXMgPSB0cnVl
OwogICAgIH0KQEAgLTk3Myw3ICs5NzMsNyBAQCB2b2lkIERPTVdpbmRvdzo6Y2xvc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIAogICAgIGlmIChjb250ZXh0KSB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIERvY3VtZW50KiBhY3RpdmVEb2N1bWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBh
Y3RpdmVEb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIGlmICghYWN0aXZl
RG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEzMjQsNyArMTMyNCw3IEBAIERv
Y3VtZW50KiBET01XaW5kb3c6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigh
Y29udGV4dCB8fCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIHJldHVybiB0b0RvY3VtZW50KGNvbnRleHQpOwog
fQogCiBQYXNzUmVmUHRyPFN0eWxlTWVkaWE+IERPTVdpbmRvdzo6c3R5bGVNZWRpYSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDg0YWI5NWIyYzg1MWNj
NmMxMGQyZTZhN2RjYjJiZTFiZTYxODIxNTUuLmNjYzRjZjY1NWExOGM4ODNkNDNhYzcwNDA0OWE3
NzA3ODE1ZjIzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00
MTQsNyArNDE0LDcgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9y
TG9hZChEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgYm9vbCBwbHVnaW5Eb2N1bWVudEFjY2VwdHNE
cmFncyA9IGZhbHNlOwogCiAgICAgaWYgKGRvYyAmJiBkb2MtPmlzUGx1Z2luRG9jdW1lbnQoKSkg
ewotICAgICAgICBjb25zdCBXaWRnZXQqIHdpZGdldCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3Vt
ZW50Kj4oZG9jKS0+cGx1Z2luV2lkZ2V0KCk7CisgICAgICAgIGNvbnN0IFdpZGdldCogd2lkZ2V0
ID0gdG9QbHVnaW5Eb2N1bWVudChkb2MpLT5wbHVnaW5XaWRnZXQoKTsKICAgICAgICAgY29uc3Qg
UGx1Z2luVmlld0Jhc2UqIHBsdWdpblZpZXcgPSAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5W
aWV3QmFzZSgpKSA/IHN0YXRpY19jYXN0PGNvbnN0IFBsdWdpblZpZXdCYXNlKj4od2lkZ2V0KSA6
IDA7CiAKICAgICAgICAgaWYgKHBsdWdpblZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKaW5kZXggOTRhODQwMjRjMzI0YjdmYmE1MTAzZjAwZGE2ZGRmZmEyNDY0ZjdhZS4uZmYx
NDQ5NzRiY2IyNTZiYTA1OThlMDliZjYyYmY1MGFlOGQzM2FmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcApAQCAtNjY0LDEwICs2NjQsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmUKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPmlz
U1ZHRG9jdW1lbnQoKQotICAgICAgICAmJiBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJh
bWUtPmRvY3VtZW50KCkpLT56b29tQW5kUGFuRW5hYmxlZCgpKSB7CisgICAgICAgICYmIHRvU1ZH
RG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSktPnpvb21BbmRQYW5FbmFibGVkKCkpIHsKICAg
ICAgICAgaWYgKGV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKSAmJiBzaW5nbGVDbGljaykgewogICAg
ICAgICAgICAgbV9zdmdQYW4gPSB0cnVlOwotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHRG9j
dW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+c3RhcnRQYW4obV9mcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpOworICAgICAgICAgICAg
dG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+c3RhcnRQYW4obV9mcmFtZS0+dmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjk0LDcgKzE2OTQsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAobV9z
dmdQYW4pIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1
bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xh
c3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICAgICAgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5k
b2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyht
X2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
I2VuZGlmCkBAIC0xODQzLDcgKzE4NDMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogI2lm
IEVOQUJMRShTVkcpCiAgICAgaWYgKG1fc3ZnUGFuKSB7CiAgICAgICAgIG1fc3ZnUGFuID0gZmFs
c2U7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQo
KSktPnVwZGF0ZVBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25v
d25Nb3VzZVBvc2l0aW9uKSk7CisgICAgICAgIHRvU1ZHRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1l
bnQoKSktPnVwZGF0ZVBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0
S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCAxNjIyYTBjMGMzYTc3MmM4Y2Qz
MGRlNzZkYjA2N2FlNzRhZTVmMDgzLi5jNmNhMGM5ZDllMjFmNTVlZGQ1MjNkZmJiODI2OTYwODlj
OWYxN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtODgsNyArODgsNyBA
QCBQYXNzUmVmUHRyPEV2ZW50U291cmNlPiBFdmVudFNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbgogICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
Y2hlY2sgdGhlIGlzb2xhdGVkIHdvcmxkJ3MgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgb25jZSB3
ZWJraXQub3JnL2IvMTA0NTIwIGlzIHNvbHZlZC4KICAgICBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlOwogICAgIGlmIChjb250ZXh0LT5pc0Rv
Y3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVu
dChjb250ZXh0KTsKICAgICAgICAgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpLT5zaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICB9CiAgICAgaWYgKCFzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgIWNvbnRleHQtPmNvbnRlbnRTZWN1cml0
eVBvbGljeSgpLT5hbGxvd0Nvbm5lY3RUb1NvdXJjZShmdWxsVVJMKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDZmNTllMTNlNWY5MGE0MGFiNGQ3ZGU1ZjAw
YzIzMGYyZjhhMTc3MWIuLmU4MTFlYTEzMzU0ZmRkMDhiZmE1NzE0MmQ5NjA4NjFmZmM3ZjBiYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTg0OCw3ICs4NDgs
NyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgIE5vZGUqIGNvbnRhaW5lciA9IGZvY3Vz
ZWREb2N1bWVudDsKIAogICAgIGlmIChjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAg
ICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGFpbmVyKS0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgICAgIHRvRG9jdW1lbnQoY29udGFpbmVyKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgICAgIAogICAgIC8vIEZp
Z3VyZSBvdXQgdGhlIHN0YXJ0aW5nIHJlY3QuCiAgICAgTGF5b3V0UmVjdCBzdGFydGluZ1JlY3Q7
CkBAIC04NjksNyArODY5LDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0Rp
cmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2EKICAgICAgICAgc3Rh
cnRpbmdSZWN0ID0gbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoY29udGFpbmVyLCB0cnVl
IC8qIGlnbm9yZSBib3JkZXIgKi8pOwogICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxlRW5j
bG9zaW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNvbnRh
aW5lcik7CiAgICAgICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbmVyLT5pc0RvY3VtZW50Tm9k
ZSgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250YWluZXIpLT51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAgICAgICAgIHRvRG9jdW1l
bnQoY29udGFpbmVyKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAg
ICAgfSB3aGlsZSAoIWNvbnN1bWVkICYmIGNvbnRhaW5lcik7CiAKICAgICByZXR1cm4gY29uc3Vt
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGVjZDE3NTJiZTNmZDA0Y2Y4MTk1NjA4MzI3YTVm
YWM5OTliNTVjNmYuLjJlOGQxYmUzZTYxYzU5NTJkNjM1YjhiNWNlY2FjYTBhMmU2MjkzZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05MzEsNyArOTMxLDcgQEAgdm9pZCBGcmFtZTo6c2V0UGFn
ZUFuZFRleHRab29tRmFjdG9ycyhmbG9hdCBwYWdlWm9vbUZhY3RvciwgZmxvYXQgdGV4dFpvb21G
YWN0b3IKICAgICAvLyBSZXNwZWN0IFNWR3Mgem9vbUFuZFBhbj0iZGlzYWJsZWQiIHByb3BlcnR5
IGluIHN0YW5kYWxvbmUgU1ZHIGRvY3VtZW50cy4KICAgICAvLyBGSVhNRTogSG93IHRvIGhhbmRs
ZSBjb21wb3VuZCBkb2N1bWVudHMgKyB6b29tQW5kUGFuPSJkaXNhYmxlZCI/IE5lZWRzIFNWRyBX
RyBjbGFyaWZpY2F0aW9uLgogICAgIGlmIChkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKSB7Ci0g
ICAgICAgIGlmICghc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2N1bWVudCktPnpvb21BbmRQ
YW5FbmFibGVkKCkpCisgICAgICAgIGlmICghdG9TVkdEb2N1bWVudChkb2N1bWVudCktPnpvb21B
bmRQYW5FbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMWY1N2UwYzI3NGM3ZjNiOTAzYTdjNmM2NDE5ODAx
ZmFlNTU3NjkzYi4uZjZhYmIxOTczNTg0YzljYjhmYWQxMThjNmFiZjRiNGJjZmRiNDhjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTc5Miw3ICsxNzkyLDcgQEAgYm9vbCBGcmFt
ZVZpZXc6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogI2lmIEVOQUJMRShT
VkcpCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSkgewotICAg
ICAgICBpZiAoU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPiht
X2ZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoU1ZHU1ZH
RWxlbWVudCogc3ZnID0gdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVs
ZW1lbnQoKSkgewogICAgICAgICAgICAgc3ZnLT5zZXR1cEluaXRpYWxWaWV3KG5hbWUsIGFuY2hv
ck5vZGUpOwogICAgICAgICAgICAgaWYgKCFhbmNob3JOb2RlKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggODdkODUwNmQ3MzRjZjc5NjYx
YzE0NDQxMmRjMWIwNDY2MTQxMzhlNC4uNThhZWZjNDI3YjhhNGEwZDFhMTM2ZmQ3ZWJiY2YwZmJl
ZGZkMzA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9p
ZCBIaXN0b3J5OjpnbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgZGlzdGFu
Y2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
RG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KTsKKyAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwog
ICAgIGlmICghYWN0aXZlRG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCAzMzhjMzg5OTM4NjA0OWY3ZmZkNjcx
NjdkNGMzOGRhMGRjODc1OTMyLi42MDA3ZmM3N2E3NjNlZWExMmQ3MDQ3YjVkYTc2ZDBhNmM4YzA3
ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtMzcx
LDcgKzM3MSw3IEBAIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCBGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJUKGNvbnRhaW5lcik7CiAgICAgaWYg
KGNvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIHNjcm9sbEluRGly
ZWN0aW9uKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGFpbmVyKS0+ZnJhbWUoKSwgZGlyZWN0
aW9uKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbEluRGlyZWN0aW9uKHRvRG9jdW1lbnQoY29udGFp
bmVyKS0+ZnJhbWUoKSwgZGlyZWN0aW9uKTsKIAogICAgIGlmICghY29udGFpbmVyLT5yZW5kZXJC
b3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIE5vZGUqIHNj
cm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKEZvY3Vz
RGlyZWN0aW9uIGRpcmVjCiAgICAgTm9kZSogcGFyZW50ID0gbm9kZTsKICAgICBkbyB7CiAgICAg
ICAgIGlmIChwYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgICAgICBwYXJlbnQgPSBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KHBhcmVudCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVy
RWxlbWVudCgpOworICAgICAgICAgICAgcGFyZW50ID0gdG9Eb2N1bWVudChwYXJlbnQpLT5kb2N1
bWVudCgpLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7CiAgICAgfSB3aGlsZSAocGFyZW50ICYm
ICFjYW5TY3JvbGxJbkRpcmVjdGlvbihwYXJlbnQsIGRpcmVjdGlvbikgJiYgIXBhcmVudC0+aXNE
b2N1bWVudE5vZGUoKSk7CkBAIC00NTIsNyArNDUyLDcgQEAgYm9vbCBjYW5TY3JvbGxJbkRpcmVj
dGlvbihjb25zdCBOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
ICAgICBBU1NFUlQoY29udGFpbmVyKTsKICAgICBpZiAoY29udGFpbmVyLT5pc0RvY3VtZW50Tm9k
ZSgpKQotICAgICAgICByZXR1cm4gY2FuU2Nyb2xsSW5EaXJlY3Rpb24oc3RhdGljX2Nhc3Q8Y29u
c3QgRG9jdW1lbnQqPihjb250YWluZXIpLT5mcmFtZSgpLCBkaXJlY3Rpb24pOworICAgICAgICBy
ZXR1cm4gY2FuU2Nyb2xsSW5EaXJlY3Rpb24odG9Eb2N1bWVudChjb250YWluZXIpLT5mcmFtZSgp
LCBkaXJlY3Rpb24pOwogCiAgICAgaWYgKCFpc1Njcm9sbGFibGVOb2RlKGNvbnRhaW5lcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyMSw3ICs1MjEsNyBAQCBMYXlvdXRSZWN0IG5vZGVS
ZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5vZGUqIG5vZGUsIGJvb2wgaWdub3JlQm9yZGVyKQog
ICAgIEFTU0VSVChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgIW5vZGUtPmRvY3VtZW50KCkt
PnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUo
KSkKLSAgICAgICAgcmV0dXJuIGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG5vZGUpLT5mcmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lUmVj
dEluQWJzb2x1dGVDb29yZGluYXRlcyh0b0RvY3VtZW50KG5vZGUpLT5mcmFtZSgpKTsKICAgICBM
YXlvdXRSZWN0IHJlY3QgPSByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKG5vZGUtPmRvY3VtZW50
KCktPmZyYW1lKCksIG5vZGUtPmJvdW5kaW5nQm94KCkpOwogCiAgICAgLy8gRm9yIGF1dGhvcnMg
dGhhdCB1c2UgYm9yZGVyIGluc3RlYWQgb2Ygb3V0bGluZSBpbiB0aGVpciBDU1MsIHdlIGNvbXBl
bnNhdGUgYnkgaWdub3JpbmcgdGhlIGJvcmRlciB3aGVuIGNhbGN1bGF0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXggZjZjYmEyNTE1NWUwYzhhMTZmZDVhOTVm
OTc4NTNiNWNkOGMzNmM1Ni4uMjY2MDdkNDEyMGJiNGY5NjE3MDdkMmNkZGFmM2E5MWY2NmM0NTVl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgTm9kZSogcGFyZW50U2hhZG93SG9zdE9yT3duZXIoY29uc3Qg
Tm9kZSogbm9kZSkKICAgICBpZiAoTm9kZSogYW5jZXN0b3IgPSBub2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCkpCiAgICAgICAgIHJldHVybiBhbmNlc3RvcjsKICAgICBpZiAobm9kZS0+aXNE
b2N1bWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50
Kj4obm9kZSktPm93bmVyRWxlbWVudCgpOworICAgICAgICByZXR1cm4gdG9Eb2N1bWVudChub2Rl
KS0+b3duZXJFbGVtZW50KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBl
MTk2NTcyNTFkNDg3MDc4NzdiZjNjM2JiYjE5NzQyNmYxNjYxNTgzLi44YTgxMDU1Nzc2YzQzMTI4
MzBiMzU0YjAyZTA2ZmJmNDI0NmRlYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0yMTAsNyArMjEwLDcg
QEAgc3RhdGljIHZvaWQgYWNjdW11bGF0ZURvY3VtZW50RXZlbnRUYXJnZXRSZWN0cyhWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCBjb25zdCBEb2MKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0b3Vj
aFRhcmdldC0+aXNEb2N1bWVudE5vZGUoKSAmJiB0b3VjaFRhcmdldCAhPSBkb2N1bWVudCkgewot
ICAgICAgICAgICAgYWNjdW11bGF0ZURvY3VtZW50RXZlbnRUYXJnZXRSZWN0cyhyZWN0cywgc3Rh
dGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPih0b3VjaFRhcmdldCkpOworICAgICAgICAgICAgYWNj
dW11bGF0ZURvY3VtZW50RXZlbnRUYXJnZXRSZWN0cyhyZWN0cywgdG9Eb2N1bWVudCh0b3VjaFRh
cmdldCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGFhNmIwMzQ2MDk4MDY1ZWExMDUyYjA1ZmQx
OGQ5MTExNjk3Y2YxYWIuLjcxOTVlNTAyZTJhZjI2ZDU4OTZkYjQ0MWY4MDU5Y2Y2MTNlZGJkYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE1NCw3ICsxNTQs
NyBAQCBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gc3RyKQogICAgIC8vIEZJWE1FOiBTb21lIGNsaWVudHMgb2YgUmVuZGVyVGV4dCAoYW5k
IHN1YmNsYXNzZXMpIHBhc3MgRG9jdW1lbnQgYXMgbm9kZSB0byBjcmVhdGUgYW5vbnltb3VzIHJl
bmRlcmVyLgogICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN3aXRjaGVkIHRvIHBhc3NpbmcgbnVsbCBh
bmQgdXNpbmcgc2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMuCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+
aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgc2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihub2RlKSk7CisgICAgICAgIHNldERvY3VtZW50Rm9yQW5vbnltb3Vz
KHRvRG9jdW1lbnQobm9kZSkpOwogCiAgICAgbV9pc0FsbEFTQ0lJID0gbV90ZXh0LmNvbnRhaW5z
T25seUFTQ0lJKCk7CiAgICAgbV9jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGggPSBjb21wdXRlQ2Fu
VXNlU2ltcGxlRm9udENvZGVQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMTE5MWY2MTYxZWUzMzNhZjY3MDY2ZTg5YTQ2MDgzNmQ3
MjJmZDJkOS4uZDNmOGQ3NDYwYTczYmEyOGEwNWMyZTBiZTA0MDU4NGNkYWM5ZWExOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtODI0LDcg
KzgyNCw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlU2VsZWN0aW9uKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBSZW5kZXJPYmplY3QqIG8pCiAgICAgaWYgKCFuIHx8ICFuLT5pc0RvY3VtZW50Tm9kZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihuKTsKKyAgICBEb2N1bWVudCogZG9jID0gdG9Eb2N1bWVudChuKTsKICAgICBGcmFtZSog
ZnJhbWUgPSBkb2MtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRleCBhNjM3ODcyMThlNjgxZGExOTM3YTFhODIwYWY5
YjFkMDNlZThiN2JiLi41MjdlYWI4OGE1ZmEzNjNmZDRmN2RkM2YyYjBhM2YyYWY3OTVhODRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtNTgsNiArNTgsMjEgQEAgcHJpdmF0ZToKICAg
ICBGbG9hdFBvaW50IG1fdHJhbnNsYXRlOwogfTsKIAoraW5saW5lIFNWR0RvY3VtZW50KiB0b1NW
R0RvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwgZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCitpbmxp
bmUgY29uc3QgU1ZHRG9jdW1lbnQqIHRvU1ZHRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQqIGRvY3Vt
ZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCB8
fCBkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgU1ZHRG9jdW1lbnQqPihkb2N1bWVudCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlv
bmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9TVkdEb2N1bWVudChjb25zdCBT
VkdEb2N1bWVudCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDAx
MzQ4NDUzMTY2ZWE3ZjQ0OTQyZWM4ZDRiMDJlMjdhMzczN2IwYS4uMGM4YmE0MDEyYjRkZDU3YjA0
ODE2NDY0YzA2MTc1MmJhNTQ5NDA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVu
dCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxl
bWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChm
cmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIFJlbmRlclNWR1Jvb3QqIHJlbmRlcmVyID0gdG9SZW5kZXJT
VkdSb290KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKQEAgLTg0LDcgKzg0LDcgQEAgSW50U2l6
ZSBTVkdJbWFnZTo6c2l6ZSgpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
biBJbnRTaXplKCk7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAg
ICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4o
ZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJv
b3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50
KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIApA
QCAtMjEzLDcgKzIxMyw3IEBAIFJlbmRlckJveCogU1ZHSW1hZ2U6OmVtYmVkZGVkQ29udGVudEJv
eCgpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiAwOwogICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9v
dEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRvU1ZHRG9jdW1l
bnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiB0b1JlbmRlckJveChyb290RWxlbWVu
dC0+cmVuZGVyZXIoKSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0Vs
ZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9j
dW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQg
PSB0b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBp
ZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJvb3RF
bGVtZW50LT5pbnRyaW5zaWNXaWR0aCgpLmlzUGVyY2VudCgpOwpAQCAtMjQzLDcgKzI0Myw3IEBA
IGJvb2wgU1ZHSW1hZ2U6Omhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFp
bkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBTVkdT
VkdFbGVtZW50KiByb290RWxlbWVudCA9IHRvU1ZHRG9jdW1lbnQoZnJhbWUtPmRvY3VtZW50KCkp
LT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJpbnNpY0hlaWdodCgpLmlzUGVyY2Vu
dCgpOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluCiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgp
KS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm47
CiAKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbihib29s
IC8qIGNhdGNoVXBJZk5lY2Vzc2FyeSAqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuOwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZH
RWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5k
b2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVu
dCA9IHRvU1ZHRG9jdW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAg
IGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICByb290RWxlbWVudC0+dW5w
YXVzZUFuaW1hdGlvbnMoKTsKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFNWR0ltYWdlOjpzdG9w
QW5pbWF0aW9uKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9v
dEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRvU1ZHRG9jdW1l
bnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKICAgICByb290RWxlbWVudC0+cGF1c2VBbmltYXRpb25zKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNmNiMTQ2NzVkNDFlZjQ5MDMy
NGY5MzkzZjNhNGE2ZjZkZDhmZDAzMy4uZDExYzMwMzYwYTY0NDUzY2E0MjQwMDI3YzZiN2ZjZTBh
ZjI2MzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjgyLDcgKzI4
Miw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50KiBkb2N1bWVudCkKIAogRG9jdW1l
bnQqIEludGVybmFsczo6Y29udGV4dERvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHJldHVy
biB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIEZyYW1lKiBJbnRl
cm5hbHM6OmZyYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2Vi
Q29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCAwOTgxZGE4NjQwNGM2NjkxNTFlNzEzYjE4YTQ2ZGM3
OGU0YmVhYmFiLi44ZDE4MDY3YTAxMTViNjkyMTY2ZDVjY2Y3OWI1MGM0NWFmNDQ2ODhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIHZvaWQgaW5qZWN0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZiBj
b250ZXh0KQogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnbG9iYWxPYmplY3QtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoc2NyaXB0Q29udGV4dC0+aXNEb2N1bWVudCgpKQot
ICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdENvbnRl
eHQpKSkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZSh0b0RvY3VtZW50KHNjcmlwdENvbnRleHQp
KSkpOwogfQogCiB2b2lkIHJlc2V0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0
KQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIHJlc2V0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJl
ZiBjb250ZXh0KQogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnbG9iYWxPYmplY3QtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIFBhZ2UqIHBhZ2UgPSBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KHNjcmlwdENvbnRleHQpLT5mcmFtZSgpLT5wYWdlKCk7CisgICAgUGFn
ZSogcGFnZSA9IHRvRG9jdW1lbnQoc2NyaXB0Q29udGV4dCktPmZyYW1lKCktPnBhZ2UoKTsKICAg
ICBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUocGFnZSk7CiAgICAgSW50ZXJuYWxT
ZXR0aW5nczo6ZnJvbShwYWdlKS0+cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGI2
YzAwMTQ1YmRiODJhNTVhZDk0NjZjOTdjMGM5M2I2MjkzNGU1MGMuLjE0OTEwOGFiYjY2ZjJjMzI1
ZTE0NzQ5YTE1YmI1ZWJjNzkwZTBmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBpbmplY3RJ
bnRlcm5hbHNPYmplY3Qodjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KQogCiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKICAgICBpZiAoc2NyaXB0Q29udGV4dC0+aXNEb2N1bWVudCgpKQotICAgICAgICBj
b250ZXh0LT5HbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhJbnRlcm5hbHM6OmludGVybmFs
c0lkKSwgdG9WOChJbnRlcm5hbHM6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlw
dENvbnRleHQpKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBjb250ZXh0LT5HZXRJc29sYXRl
KCkpKTsKKyAgICAgICAgY29udGV4dC0+R2xvYmFsKCktPlNldCh2ODo6U3RyaW5nOjpOZXcoSW50
ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvVjgoSW50ZXJuYWxzOjpjcmVhdGUodG9Eb2N1bWVudChz
Y3JpcHRDb250ZXh0KSksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgY29udGV4dC0+R2V0SXNv
bGF0ZSgpKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3Qodjg6OkxvY2FsPHY4OjpD
b250ZXh0PiBjb250ZXh0KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIHJlc2V0SW50ZXJuYWxzT2Jq
ZWN0KHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCkKIAogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC0+aXNEb2N1
bWVudCgpKTsKLSAgICBQYWdlKiBwYWdlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRD
b250ZXh0KS0+ZnJhbWUoKS0+cGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSB0b0RvY3VtZW50KHNj
cmlwdENvbnRleHQpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgSW50ZXJuYWxzOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlKHBhZ2UpOwogICAgIEludGVybmFsU2V0dGluZ3M6OmZyb20ocGFnZSktPnJl
c2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNw
cAppbmRleCA1NTAwMDI1NzljZWI5OTJjN2UzYzc0Mzc1NGVkZGQ5NzQ1YjhhOGJjLi4wNWRiNTVh
NjQxYjkxYzQzOTI3YWRhMTA0OTAzMjI0OTVkNTU5Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRN
TENsYXNzZXMuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MRG9jdW1lbnQ6OlVSTCgKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBCU3RyaW5nKHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KG1fZG9jdW1lbnQpLT51cmwoKSkucmVsZWFzZSgpOworICAgICpyZXN1bHQgPSBCU3Ry
aW5nKHRvSFRNTERvY3VtZW50KG1fZG9jdW1lbnQpLT51cmwoKSkucmVsZWFzZSgpOwogICAgIHJl
dHVybiBTX09LOwogfQogICAgIApAQCAtMjYxLDcgKzI2MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTERvY3VtZW50Ojpib2R5KAogICAgIGlmICghbV9kb2N1bWVudCB8fCAh
bV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgIEhUTUxEb2N1bWVudCogaHRtbERvYyA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KG1f
ZG9jdW1lbnQpOworICAgIEhUTUxEb2N1bWVudCogaHRtbERvYyA9IHRvSFRNTERvY3VtZW50KG1f
ZG9jdW1lbnQpOwogICAgIENPTVB0cjxJRE9NRWxlbWVudD4gZG9tRWxlbWVudDsKICAgICBkb21F
bGVtZW50LmFkb3B0UmVmKERPTUhUTUxFbGVtZW50OjpjcmVhdGVJbnN0YW5jZShodG1sRG9jLT5i
b2R5KCkpKTsKICAgICBpZiAoZG9tRWxlbWVudCkKQEAgLTMwNCw3ICszMDQsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6Zm9ybXMoCiAgICAgaWYgKCFtX2Rv
Y3VtZW50IHx8ICFtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCi0gICAgSFRNTERvY3VtZW50KiBodG1sRG9jID0gc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4obV9kb2N1bWVudCk7CisgICAgSFRNTERvY3VtZW50KiBodG1sRG9jID0gdG9IVE1M
RG9jdW1lbnQobV9kb2N1bWVudCk7CiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBmb3JtcyA9
IGh0bWxEb2MtPmZvcm1zKCk7CiAgICAgKmNvbGxlY3Rpb24gPSBET01IVE1MQ29sbGVjdGlvbjo6
Y3JlYXRlSW5zdGFuY2UoZm9ybXMuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
RG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tET01Eb2N1bWVudC5tbQppbmRleCA5OWY1MTUwMjFkNGYxMjVlMzE0NmQwNjQ0MTZj
NjBmMDYyMzU2ZGQ3Li5mMzU1ZGE4YmY1Zjg5MzdiNDEwMzk3NmUwZmNjMTE5Yjc4MzRiMzkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQpAQCAtMzQsMTIgKzM0LDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgog
Ci1zdGF0aWMgaW5saW5lIFdlYkNvcmU6OkRvY3VtZW50KiB0b0RvY3VtZW50KFdlYkNvcmU6Ok5v
ZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KG5vZGUpOwotfQot
CiBAaW1wbGVtZW50YXRpb24gV0tET01Eb2N1bWVudAogCiAtIChXS0RPTUVsZW1lbnQgKiljcmVh
dGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192968</attachid>
            <date>2013-03-13 12:52:41 -0700</date>
            <delta_ts>2013-03-13 13:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112225-20130313124839.patch</filename>
            <type>text/plain</type>
            <size>94518</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMzOGFmNGQ1NDdmOWRm
ZWM3ZWViZmU4Yjc3MjM1NDIyMzExMWRhYi4uYTcxODg3YjVlM2VhNzA4MTcxMjUyODdkYTA1OTU5
ZjgzZTA5YzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEzLTAzLTEyICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zIGZvciBkb2N1bWVudCB0eXBlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICB0byogaGVscGVyIGZ1bmN0aW9u
cyBhcmUgcHJlZmVycmVkIG92ZXIgc3RhdGljX2Nhc3QgY2FsbHMgc2luY2UgdGhleQorICAgICAg
ICBoZWxwIHRvIGNhdGNoIGJhZCBjYXN0cyBlYXNpbHkgb24gdGhlIHRlc3RpbmcgaW5mcmFzdHJ1
Y3R1cmUuCisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpkb2N1bWVudCk6CisgICAgICAgIC4uLi5s
b3Qgb2YgZmlsZXMuCisKKzIwMTMtMDMtMTIgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9t
aXVtLm9yZz4KKwogICAgICAgICBSZXBsYWNlIHN0YXRpY19jYXN0cyB3aXRoIHRvKiBoZWxwZXIg
ZnVuY3Rpb25zLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEyMTY0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNGYxZjk5MWNlODI5OThiNjQzZWVhYTdhNDU0ZDcw
YjdkNjQ4NjIxLi4yYzE5MzhhMmZlNWM4YjlmNGM3MjQ5OTRkMjZkOWNjNTFkOGQxZDg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDMtMTIgIEFiaGlzaGVrIEFyeWEgIDxpbmZl
cm5vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXBsYWNlIHN0YXRpY19jYXN0cyB3aXRoIHRv
KiBmdW5jdGlvbnMgZm9yIGRvY3VtZW50IHR5cGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlv
c3VrZSBOaXdhLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NRG9jdW1lbnQubW06IFJlbW92ZSB0aGUgcmVkdW5kYW50IGhlbHBlci4KKwogMjAxMy0w
My0xMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmVk
IFJ1bkxvb3BUaW1lciBhbmQgU2NoZWR1bGVQYWlyIHRvIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBmOTg3ZDBmYmNk
MTE0OGY4YTM3ZWU2NzliYzZlYmRjOGY4Nzg3YTI0Li42MjAyZDI5ZWFmMGIyNWU1ZWE1YjE2MjJk
YmNhZjYxMmE1ODVkZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMjUzLDggKzI1Myw3IEBAIEdlb2xvY2F0aW9uOjp+
R2VvbG9jYXRpb24oKQogCiBEb2N1bWVudCogR2VvbG9jYXRpb246OmRvY3VtZW50KCkgY29uc3QK
IHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworICAgIHJldHVybiB0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAK
IEZyYW1lKiBHZW9sb2NhdGlvbjo6ZnJhbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBkMDEyMGY2MGE4OWFkZmZiN2Qx
NjVjOWFhYjczZjlmNzZmMzExMGIwLi40YjAyYjExNjRkNDBhNDE5YzM2N2Y5NGQyM2VlYmMyMzZk
YWZhZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgYm9vbCBpc0NvbnRleHRWYWxpZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0LT5pc0Rv
Y3VtZW50KCkgfHwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIGlmIChjb250ZXh0
LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9E
b2N1bWVudChjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpICYmIGRv
Y3VtZW50LT5wYWdlKCk7CiAgICAgfQogI2lmICFFTkFCTEUoV09SS0VSUykKQEAgLTg0LDcgKzg0
LDcgQEAgc3RhdGljIFN0cmluZyBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoaXNDb250ZXh0VmFsaWQoY29udGV4
dCkpOwogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIGRv
Y3VtZW50LT5wYWdlKCktPmdyb3VwKCkuZ3JvdXBTZXR0aW5ncygpLT5pbmRleGVkREJEYXRhYmFz
ZVBhdGgoKTsKICAgICB9CiAjaWYgRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4
IDZmMTllYWZmMjZkZjE1ODZlNmMxOGZkYmIyMmJhY2IwMTFlNjlkZWUuLjRlYTZlNTA0YzUyNWVm
MTczZDEyYmNkYjY0ZjRmMzdmMTYzMDc2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMzksOCAr
MTM5LDcgQEAgUlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKICAgICAsIG1fc2NoZWR1bGVkRXZlbnRU
aW1lcih0aGlzLCAmUlRDUGVlckNvbm5lY3Rpb246OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCkK
ICAgICAsIG1fc3RvcHBlZChmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19j
YXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICBp
ZiAoIWRvY3VtZW50LT5mcmFtZSgpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmNwcAppbmRleCBiOTQ5NDAwMmE5MmY0Y2UxY2ZjOWZjM2IzYmNmMzJhZTM2OGNk
Mzc0Li42NjMxOTNjMzk3MjMwOGQ3NjczOTBkMjBjMGEyYmM2NWQ3YzU2ZTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5jcHAKQEAgLTExOCw4ICsxMTgsNyBAQCBNZWRpYUNvbnN0cmFpbnRzKiBVc2VyTWVkaWFSZXF1
ZXN0Ojp2aWRlb0NvbnN0cmFpbnRzKCkgY29uc3QKIERvY3VtZW50KiBVc2VyTWVkaWFSZXF1ZXN0
Ojpvd25lckRvY3VtZW50KCkKIHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7
Ci0gICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIHJldHVybiB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDUyZWM2MThkNTlk
ZTE4YTNkNDM1NGQyODFhNTk3YTZhNGY0MGYwMzcuLmIzOTg3NzI3NmM1MjNlMzQzODE3NGJiNDVm
OGE0M2FjNzg0M2NlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0xMDksOCArMTA5LDcgQEAgTm90aWZpY2F0
aW9uOjpOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKICAgICAsIG1fc3RhdGUoSWRsZSkKICAgICAsIG1fdGFza1RpbWVyKGFk
b3B0UHRyKG5ldyBUaW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3RpZmljYXRpb246OnRhc2tU
aW1lckZpcmVkKSkpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihjb250ZXh0KS0+ZG9tV2luZG93KCkpOworICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gRE9N
V2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyh0b0RvY3VtZW50KGNvbnRl
eHQpLT5kb21XaW5kb3coKSk7CiAgICAgCiAgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKSk7CiAgICAgbV90YXNrVGltZXItPnN0YXJ0T25lU2hvdCgwKTsKQEAgLTE3MSw5
ICsxNzAsOSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgLy8gcHJldmVudCBkb3Vi
bGUtc2hvd2luZwogICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3RpZmljYXRpb25DZW50
ZXItPmNsaWVudCgpKSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgICAgIGlmICgh
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5wYWdlKCkp
CisgICAgICAgIGlmICghdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5wYWdl
KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChOb3RpZmljYXRpb25Db250cm9s
bGVyOjpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKKyAgICAg
ICAgaWYgKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20odG9Eb2N1bWVudChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpLT5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxs
b3dlZCkgewogICAgICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTI1OSw5ICsyNTgsOCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6
dGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uPiogdGltZXIpCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiBjb25zdCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7Ci0gICAgcmV0dXJuIHBlcm1pc3Npb25T
dHJpbmcoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsK
KyAgICBBU1NFUlQodG9Eb2N1bWVudChjb250ZXh0KS0+cGFnZSgpKTsKKyAgICByZXR1cm4gcGVy
bWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHRvRG9jdW1lbnQoY29u
dGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oY29udGV4dCkpOwogfQog
CiBjb25zdCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRp
b25DbGllbnQ6OlBlcm1pc3Npb24gcGVybWlzc2lvbikKQEAgLTI4NSw5ICsyODMsOCBAQCBjb25z
dCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25DbGll
bnQ6OlBlcm1pc3Npb24gcGVybQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7Ci0gICAgTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpLT5j
bGllbnQoKS0+cmVxdWVzdFBlcm1pc3Npb24oY29udGV4dCwgY2FsbGJhY2spOworICAgIEFTU0VS
VCh0b0RvY3VtZW50KGNvbnRleHQpLT5wYWdlKCkpOworICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXI6OmZyb20odG9Eb2N1bWVudChjb250ZXh0KS0+cGFnZSgpKS0+Y2xpZW50KCktPnJlcXVlc3RQ
ZXJtaXNzaW9uKGNvbnRleHQsIGNhbGxiYWNrKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwCmluZGV4IDUwYTE0MDYwMDU2
ZGUzMWU2OTVkZDQwNDU3MzUyYzEyY2U3OTc1YWYuLjU5ZDQyZjk4ODAyMzQ3NzE2OTViMmIxNDI2
ZTVlMWE5OTY5MWNhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaEdyYW1tYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaEdyYW1tYXIuY3BwCkBAIC00NSw4ICs0NSw3IEBAIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1h
cj4gU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdlaWdodCkK
IAogdm9pZCBTcGVlY2hHcmFtbWFyOjpzZXRTcmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiBzcmMpCiB7Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1l
bnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgbV9zcmMgPSBkb2N1bWVudC0+Y29tcGxl
dGVVUkwoc3JjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoR3JhbW1hckxpc3QuY3BwCmluZGV4IDk4NTNlZjdhMDQwNDRjY2EwYzc5ZDYwMjA2MTAx
NDEyZjY5MTYxN2UuLmMzZGRiZTExZjg5YWIzOWUzNTc1NzdiOWNjNzEzNzljMmJlNDk5ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlz
dC5jcHAKQEAgLTQ4LDggKzQ4LDcgQEAgU3BlZWNoR3JhbW1hciogU3BlZWNoR3JhbW1hckxpc3Q6
Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkgY29uc3QKIAogdm9pZCBTcGVlY2hHcmFtbWFyTGlz
dDo6YWRkRnJvbVVyaShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIHdlaWdodCkKIHsKLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVu
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBtX2dyYW1tYXJzLmFwcGVuZChTcGVlY2hH
cmFtbWFyOjpjcmVhdGUoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHNyYyksIHdlaWdodCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5jcHAKaW5kZXggYmVkYTgyNzhmYzNmNmQzYjk1OWM3YTZmY2QwMGU4MzdmNzgxYzU3ZC4uMjEy
YjIwMWQ4NGNmYzg4N2JkMzkyMWZhZjY0NmI3YzFiZWMzYzVjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMTcxLDgg
KzE3MSw3IEBAIFNwZWVjaFJlY29nbml0aW9uOjpTcGVlY2hSZWNvZ25pdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9zdG9wcGVkQnlBY3RpdmVET01PYmplY3Qo
ZmFsc2UpCiAgICAgLCBtX3N0YXJ0ZWQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgQVNTRVJUKHBhZ2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29udGV4dC5jcHAKaW5kZXggM2ZlMzYyNzM5YjA0YjhjN2UwODZhM2UxNmY0N2M4NmNiNDlkOThl
Yi4uZTIyMDEyYjRjNDEzZDA1NmJhNDI0OWFjYTVlNmZmM2RlM2Q5OGE4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIFBhc3NSZWZQdHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gT2Zm
bGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oY29udGV4dCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChj
b250ZXh0KTsKIAogICAgIC8vIEZJWE1FOiBvZmZsaW5lIGNvbnRleHRzIGhhdmUgbGltaXRhdGlv
bnMgb24gc3VwcG9ydGVkIHNhbXBsZS1yYXRlcy4KICAgICAvLyBDdXJyZW50bHkgYWxsIEF1ZGlv
Q29udGV4dHMgbXVzdCBoYXZlIHRoZSBzYW1lIHNhbXBsZS1yYXRlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4
IDBlODE4YWVkYzVkZjIzYjFjNDRkZjFkMWQ4OTcwOTk2OWM3MjVlMzcuLjc5OGIzOTkxMWQ0NmNm
NzBiZTA1NzQ2ZTRhYjQzYWVkNmI1YzJmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwNSw3ICsyMDUs
NyBAQCBib29sIERhdGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhEYXRhYmFzZVRhc2tTeW5j
aHJvbml6ZXIqIGNsZWFudXBTeW5jKQogYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJh
c2VBY2Nlc3MoKSBjb25zdAogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAg
aWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IChkb2N1bWVudC0+cGFnZSgpLT5zZXR0aW5ncygpLT5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFz
ZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5wcm90
b2NvbCgpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgRGF0YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNl
QWNjZXNzKCkgY29uc3QKIHZvaWQgRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZUV4Y2VlZGVkUXVv
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMgZGV0YWlscykKIHsKICAgICBp
ZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQt
PnBhZ2UoKSkKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKGRvY3VtZW50LT5mcmFtZSgpLCBuYW1lLCBkZXRhaWxzKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTVmNDVlYTUxZGE2
Zjg2MTU2OWZmMTNjZGRhMzdkZjQ3ZGQ5MzIwYy4uOWU1MTg0OWRiNTZlYjA1MzQ0NjFiMTY5MGVm
MjYyMWFiNzRhNWU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC02NSw4
ICs2NSw3IEBAIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoU2NyaXB0CiAgICAgfQogI2VuZGlmIC8vIEVOQUJM
RShXT1JLRVJTKQogCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKLSAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGNsaWVudCk7CisgICAgcmV0dXJuIFdlYlNv
Y2tldENoYW5uZWw6OmNyZWF0ZSh0b0RvY3VtZW50KGNvbnRleHQpLCBjbGllbnQpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDE2NTQ1YTQxMTI5NmJjN2UyZjU2ODJjZGMxZTc2MTZi
Zjg2NTM2NzIuLmMzM2M3NDcxMDY1N2JmMzdhM2Y0NzkwYjJhM2E4ODc2Y2MxOTY5YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0y
NDMsNyArMjQzLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2UKICAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGNoZWNrIHRoZSBpc29sYXRlZCB3b3JsZCdzIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IG9uY2Ugd2Via2l0Lm9yZy9iLzEwNDUyMCBpcyBzb2x2ZWQuCiAgICAgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZTsKICAgICBpZiAo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSA9IGRvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQoKS0+c2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgfQogICAgIGlmICghc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Nvbm5lY3RUb1NvdXJjZSht
X3VybCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZmQ4ZDM2ZGU1ZjQ1NmJiODNlOGUwODg3OTJj
ZTY4OGYyMWVmNzk0My4uY2RjM2JjNGRkYzkzMmIzMWMyNDk0NTljOTljYjc1NDU2OTk4OTI1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBDU3RyaW5nIFdlYlNvY2tldEhh
bmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiAKICAgICBLVVJMIHVybCA9
IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKICAgICBpZiAobV9jb250ZXh0
LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KG1fY29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKICAgICAgICAgaWYgKCFjb29raWUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgiQ29va2llOiAiICsgY29va2ll
KTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBQYXNzUmVmUHRyPFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3Q+IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdAogCiAgICAgS1VS
TCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1f
Y29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdG9Eb2N1bWVudChtX2NvbnRleHQpOwogICAgICAgICBTdHJpbmcgY29va2llID0gY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZG9jdW1lbnQsIHVybCk7CiAgICAgICAgIGlmICgh
Y29va2llLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVlc3QtPmFkZEhlYWRlckZpZWxkKCJD
b29raWUiLCBjb29raWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggMTQzYzhmMmIwYTdhZmY3NWQ0MDEyMjc2Y2Y3ZTg5MjZmYjQ2ZjIyMC4uYjE2ZGZk
MjMyN2FmZDEyNDQwNTVhYTA4MzU3ZTE3M2E5ZDgyZWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9h
ZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGFza01vZGUpCiAgICAgOiBtX3dvcmtlckNsaWVudFdyYXBwZXIoY2xpZW50V3JhcHBlcikKICAg
ICAsIG1fbG9hZGVyUHJveHkobG9hZGVyUHJveHkpCi0gICAgLCBtX21haW5XZWJTb2NrZXRDaGFu
bmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpLCB0aGlzKSkKKyAgICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29ja2V0Q2hhbm5l
bDo6Y3JlYXRlKHRvRG9jdW1lbnQoY29udGV4dCksIHRoaXMpKQogICAgICwgbV90YXNrTW9kZSh0
YXNrTW9kZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKaW5kZXggNDFlOWNhMTcyM2RjNTdiNmFmZWUwODYwZjljNmZkMjZhMDI4NGQxYi4uZTVmMDU4
OTE5YmQ1MzA4ZTk0ZDUzYTgxMDE1NDkwMjRlMTBlOGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC0yODAxLDcgKzI4MDEsNyBAQCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSBjb25zdAogICAgIGlmICghZG9j
IHx8ICFkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAg
U1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGRv
YyktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NW
R0RvY3VtZW50KGRvYyktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlclJvb3QgPSByb290RWxl
bWVudC0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RPTVJlcXVlc3RTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVz
dFN0YXRlLmgKaW5kZXggMzJkNGVkYzlmMjMzYmM0YTk1ZDFkZGE0MDFjNDdhYTY3YjhjMmFkMS4u
NDFkMzM2ZWU2MTEyMzk1NWFiNjQxMjM3MmI4MTE0NjFmMWE5YmM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgICAgICAsIG1fZXhlYygwKQogICAgIHsKICAgICAgICAgaWYgKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CisgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CiAgICAgICAgICAgICBtX2V4ZWMgPSBzY3JpcHRTdGF0ZUZyb21QYWdl
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBkb2N1bWVudC0+cGFnZSgpKTsKICAgICAgICAgfSBl
bHNlIHsKICNpZiBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCA2MWQ3ODdkNGZlMjE1MDE5MjJm
MTEyMmYwMzQyMzcyODcwMjNjNjdlLi4xMjllNjVkMWQ4Y2IyZDljNzQ3Zjg4ODU2ZTUyZjllMzU1
YTA1NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
dGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnRleHRDdXN0b20uY3BwCkBAIC02NCw3ICs2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNBdWRpb0NvbnRleHRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNBdWRpb0NvbnRleHQo
CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkF1
ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBjYWxsZWQgaW4gYSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRl
eHQgd2hpY2ggaXMgbm90IGEgZG9jdW1lbnQiKSk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAK
ICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRleHQ7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGFmNjk5ODM5NzkzNDgwMTBlNTIz
MmRkYjA5N2U2M2M5NTVlZTAwNWMuLmJiMGQ4OWM4MDMwNzBhMzAyZjM1OWU0ODA5YzllOTUxMjk0
MzZiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC04
Miw3ICs4Miw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgcHVibGljOgogICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAg
ICAgICAgcmV0dXJuIHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAg
ICAgfQogCiAgICAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGQ1YTk1YjE5OGNlN2E3YTRhODFiYjIzM2QwODNh
MTQwNjkxM2ExMjYuLjkxZmZhYjgwMDY5NzAzZjNhNjEyZWExNGI4MTIwZjY0ZjQxYWU2OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTExMyw3ICsxMTMsNyBAQCBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVj
dChEb2N1bWVudCogZG9jdW1lbnQsIEpTQzo6RXhlY1N0YXRlKiBleGVjKQogSlNET01HbG9iYWxP
YmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlNET01H
bG9iYWxPYmplY3Qoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSwgZXhlYyk7CisgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHRvRG9jdW1lbnQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIGV4ZWMpOwogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAg
ICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQpAQCAtMTMy
LDcgKzEzMiw3IEBAIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3Vt
ZW50KiBkb2N1bWVudCwgRE9NV3JhcHBlcldvcmxkKiB3b3JsCiBKU0RPTUdsb2JhbE9iamVjdCog
dG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewogICAgIGlmIChzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFs
T2JqZWN0KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIHdv
cmxkKTsKKyAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3QodG9Eb2N1bWVudChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSwgd29ybGQpOwogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAg
aWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDI1YjUz
MzkxYmI1Yzg2NzMzNjMxMWE5ODA0ZDRkMzYzYmEwZWEyYWIuLmYyZDkyYjRiMmY5MGU0YzRlYTUy
YTlhNDU0OTY3YmYwNmJiOGI0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkp
IHsKICAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gZmluZEF0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1l
ICYmIChzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCktPmhhc05hbWVkSXRlbShh
dG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElkKGF0b21pY1By
b3BlcnR5TmFtZSkpKSB7CisgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgKHRvSFRN
TERvY3VtZW50KGRvY3VtZW50KS0+aGFzTmFtZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkgfHwg
ZG9jdW1lbnQtPmhhc0VsZW1lbnRXaXRoSWQoYXRvbWljUHJvcGVydHlOYW1lKSkpIHsKICAgICAg
ICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIG5hbWVkSXRlbUdldHRlcik7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+
aW1wbCgpLT5mcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSkgewogICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUg
PSBmaW5kQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChhdG9taWNQcm9w
ZXJ0eU5hbWUgJiYgKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KS0+aGFzTmFt
ZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkgfHwgZG9jdW1lbnQtPmhhc0VsZW1lbnRXaXRoSWQo
YXRvbWljUHJvcGVydHlOYW1lKSkpIHsKKyAgICAgICAgaWYgKGF0b21pY1Byb3BlcnR5TmFtZSAm
JiAodG9IVE1MRG9jdW1lbnQoZG9jdW1lbnQpLT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlO
YW1lKSB8fCBkb2N1bWVudC0+aGFzRWxlbWVudFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkg
ewogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgbmFtZWRJdGVtR2V0dGVy
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC00MDcsNyArNDA3LDcg
QEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHIKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50LT5p
c0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3Bl
cnR5TmFtZSA9IGZpbmRBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKGF0
b21pY1Byb3BlcnR5TmFtZSAmJiAoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQp
LT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSB8fCBkb2N1bWVudC0+aGFzRWxlbWVu
dFdpdGhJZChhdG9taWNQcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICBpZiAoYXRvbWljUHJvcGVy
dHlOYW1lICYmICh0b0hUTUxEb2N1bWVudChkb2N1bWVudCktPmhhc05hbWVkSXRlbShhdG9taWNQ
cm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFbGVtZW50V2l0aElkKGF0b21pY1Byb3BlcnR5
TmFtZSkpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgICAgIHNs
b3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIG5hbWVkSXRlbUdldHRlcik7CiAgICAgICAgICAgICBk
ZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggM2M2ODkzYjAw
ODc5NDkwNTNmZmYzM2Q1YzM0MWY1MThhMDYyYThlNC4uZTY4ODVlMWYwMDdmMTk2NmZlNzUxNWJm
YWEzMjgzZDA4Mzg0Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIEpTSFRNTERv
Y3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTERvY3VtZW50KiBkb2N1
bWVudCwgUHJvcAogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNIVE1MRG9jdW1lbnQqIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MRG9jdW1lbnQqPihhc09i
amVjdChzbG90QmFzZSkpOwotICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MRG9jdW1lbnQqPih0aGlzT2JqLT5pbXBsKCkpOworICAgIEhUTUxEb2N1bWVudCogZG9j
dW1lbnQgPSB0b0hUTUxEb2N1bWVudCh0aGlzT2JqLT5pbXBsKCkpOwogCiAgICAgUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIApAQCAtODksNyArODks
NyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
ICAgIGlmICh2KQogICAgICAgICByZXR1cm4gdjsKIAotICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKCkpLT5hbGwoKSk7
CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIHRvSFRNTERvY3VtZW50KGlt
cGwoKSktPmFsbCgpKTsKIH0KIAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU1ZhbHVlIEpTSFRN
TERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBGb3IgY29tcGF0aWJp
bGl0eSB3aXRoIG90aGVyIGJyb3dzZXJzLCBwYXNzIG9wZW4gY2FsbHMgd2l0aCBtb3JlIHRoYW4g
MiBwYXJhbWV0ZXJzIHRvIHRoZSB3aW5kb3cuCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA+IDIpIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50
Kj4oaW1wbCgpKS0+ZnJhbWUoKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gdG9IVE1MRG9jdW1l
bnQoaW1wbCgpKS0+ZnJhbWUoKTsKICAgICAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgICAgICBK
U0RPTVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJy
ZW50V29ybGQoZXhlYykpOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZG9jdW1lbnQoKTsKIAogICAgIC8vIEluIHRoZSBjYXNl
IG9mIHR3byBwYXJhbWV0ZXJzIG9yIGZld2VyLCBkbyBhIG5vcm1hbCBkb2N1bWVudCBvcGVuLgot
ICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGltcGwoKSktPm9wZW4oYWN0aXZlRG9jdW1l
bnQpOworICAgIHRvSFRNTERvY3VtZW50KGltcGwoKSktPm9wZW4oYWN0aXZlRG9jdW1lbnQpOwog
ICAgIHJldHVybiB0aGlzOwogfQogCkBAIC0xNTcsMTMgKzE1NywxMyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgZG9jdW1lbnRXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIEhUTUxEb2N1bWVudCogZG9jdW1l
bnQsIE5ld2xpbgogCiBKU1ZhbHVlIEpTSFRNTERvY3VtZW50Ojp3cml0ZShFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgZG9jdW1lbnRXcml0ZShleGVjLCBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
PihpbXBsKCkpLCBEb05vdEFkZE5ld2xpbmUpOworICAgIGRvY3VtZW50V3JpdGUoZXhlYywgdG9I
VE1MRG9jdW1lbnQoaW1wbCgpKSwgRG9Ob3RBZGROZXdsaW5lKTsKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6d3JpdGVsbihFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgZG9jdW1lbnRXcml0ZShleGVjLCBzdGF0aWNfY2FzdDxIVE1MRG9jdW1l
bnQqPihpbXBsKCkpLCBEb0FkZE5ld2xpbmUpOworICAgIGRvY3VtZW50V3JpdGUoZXhlYywgdG9I
VE1MRG9jdW1lbnQoaW1wbCgpKSwgRG9BZGROZXdsaW5lKTsKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVu
dExpc3RlbmVyLmNwcAppbmRleCA4NzQ0OWFmNzEyMzZmN2U3ZDJmZWQ0OWI5MTVjMTgzMDQ3NGQy
YzAyLi4zZGY2NjQ0YzRiOTY5YWYxOWIxMTVmODg2Y2E5OTU4Mjg4MTBhMGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpT
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGlmIChtX2NvZGUuaXNO
dWxsKCkgfHwgbV9ldmVudFBhcmFtZXRlck5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihleGVj
dXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGV4ZWN1
dGlvbkNvbnRleHQpOwogCiAgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRl
eCA5OWYyZDU1MjJiY2Y5MGEwNDlkMDI0YjQ1MmI2ZjNlMGM5MDA1YjQ0Li4wZjc0YWE1MWQxN2Qy
ZTk2YTM2MzljNmI1MGZmZTIyZDIyZmQwYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iagogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRf
Tk9ERToKICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgdGhlIGRvY3VtZW50
IGl0c2VsZiBpbiB0aGUgcGVyLWRvY3VtZW50IGRpY3Rpb25hcnkKLSAgICAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKSk7
CisgICAgICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHRvRG9jdW1lbnQo
bm9kZSkpOwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAg
ICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBEb2N1
bWVudFR5cGUsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBmZTUxYzg0ZTQzMzkyNWFkMjUx
Y2RlYjExOWJjYmU5Y2M4NGM4OTNiLi5hOGMwYzgzYTBkNjdjYzNhYjljNjk0MTQwMzQxNzljNjE3
NjQ1ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgU2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBET01XcmFwcGVyV28KIHZvaWQgU2No
ZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgZXhlY3V0ZShzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKTsKKyAgICAgICAgZXhlY3V0ZSh0b0RvY3VtZW50KGNv
bnRleHQpKTsKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZWYyMGY5ZmVlZDNjZDRmM2E2
Mjg2NzA5ZmY3MDU0NTlmOTM2ZTkyZi4uOGZlZDE4ZTBjZDhlMDU2ZTQ2YzU0MTg4OWFkNDYwOTQ4
YzY3ZjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTMyMjAsNyArMzIyMCw3IEBAIEVORAogICAgICAgICAgICAgbXkg
JGVuYWJsZUZ1bmN0aW9uID0gR2V0Q29udGV4dEVuYWJsZUZ1bmN0aW9uKCRydW50aW1lRnVuYy0+
c2lnbmF0dXJlKTsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRydW50aW1lRnVuYy0+c2lnbmF0dXJl
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiAke2Vu
YWJsZUZ1bmN0aW9ufShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkge1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0
LT5pc0RvY3VtZW50KCkgJiYgJHtlbmFibGVGdW5jdGlvbn0odG9Eb2N1bWVudChjb250ZXh0KSkp
IHtcbiIpOwogICAgICAgICAgICAgbXkgJG5hbWUgPSAkcnVudGltZUZ1bmMtPnNpZ25hdHVyZS0+
bmFtZTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCIke25hbWV9IiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7bmFtZX1NZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcAppbmRleCAwYTRjYzMzM2EyOTIyMTM0YzNkODUyZmQzMmRkY2U2MjBiZjJjZDE0Li5l
NzJkMTZlMDQ5YzhjMTExMzNkMDk4YmYzNWIzZTY1MWIyYzJiOTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAt
MzE5NSwxMCArMzE5NSwxMCBAQCB2b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdAogICAgIFVOVVNFRF9Q
QVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUg
dXNlZC4KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQocHJvdG8tPkNyZWF0aW9uQ29udGV4dCgpKTsKLSAgICBpZiAoY29udGV4
dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgQ29udGV4dEZlYXR1cmVzOjplbmFibGVkUGVy
Q29udGV4dE1ldGhvZDFFbmFibGVkKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkpKSB7
CisgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpICYmIENvbnRleHRGZWF0
dXJlczo6ZW5hYmxlZFBlckNvbnRleHRNZXRob2QxRW5hYmxlZCh0b0RvY3VtZW50KGNvbnRleHQp
KSkgewogICAgICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZW5hYmxlZFBl
ckNvbnRleHRNZXRob2QxIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBkZWZhdWx0U2lnbmF0dXJlKS0+R2V0RnVuY3Rpb24oKSk7CiAgICAgfQotICAgIGlmIChj
b250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmZlYXR1
cmVOYW1lRW5hYmxlZChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkgeworICAgIGlm
IChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmZl
YXR1cmVOYW1lRW5hYmxlZCh0b0RvY3VtZW50KGNvbnRleHQpKSkgewogICAgICAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZW5hYmxlZFBlckNvbnRleHRNZXRob2QyIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250
ZXh0TWV0aG9kMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJl
KS0+R2V0RnVuY3Rpb24oKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZjk1ZTJhYTEzNzVlNDIw
NDIxZDRkMjcxOGEyMTBhMzg1MTQ0NjA3NC4uMjdlODAxNTFjNTI1NzZlOTRjMWY2ZTA0ZjdlMjg0
ZmEyMTQwZjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OnNldENsaWVudE1lc3NhZ2VMb29wKFBhc3NPd25QdHI8Q2xpZW50TWVzc2Fn
ZUxvb3A+IGMKIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpjb21waWxlU2NyaXB0KFNjcmlw
dFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgU3RyaW5nKiBzY3JpcHRJZCwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKQogewog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0
ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdCA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmZyYW1lKCk7
CisgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0ID0gdG9Eb2N1bWVudChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KS0+ZnJhbWUoKTsKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29tcGlsZVNjcmlwdChz
dGF0ZSwgZXhwcmVzc2lvbiwgc291cmNlVVJMLCBzY3JpcHRJZCwgZXhjZXB0aW9uTWVzc2FnZSk7
CiAgICAgaWYgKCFzY3JpcHRJZC0+aXNOdWxsKCkpCiAgICAgICAgIG1fY29tcGlsZWRTY3JpcHRV
UkxzLnNldCgqc2NyaXB0SWQsIHNvdXJjZVVSTCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNjcmlwdChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0
IFN0cmluZyYgc2NyaXB0SWQKICAgICBTdHJpbmcgc291cmNlVVJMID0gbV9jb21waWxlZFNjcmlw
dFVSTHMudGFrZShzY3JpcHRJZCk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gc3RhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCktPmZyYW1lKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZTsKICAgICBpZiAoZnJhbWUpCiAgICAgICAgIGNvb2tpZSA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KGZyYW1lLCBzb3VyY2VVUkwsIFRleHRQ
b3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2VkSW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggZTVhZTdj
M2E0MWRlNDFmMjIyZDg4MzhjYzFmZDVlZWQ4YTZlM2U2My4uYWUyZjE3MjYzNGNhZWY5ODQ4Y2Vj
NTRkM2JiOTFiMjI5YzZjMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y2hlZHVsZWRBY3Rpb24uY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNjaGVkdWxlZEFjdGlvbjo6flNj
aGVkdWxlZEFjdGlvbigpCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkp
IHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+ZnJhbWUoKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+
ZnJhbWUoKTsKICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRl
U2NyaXB0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGM1
MDUzYmE5Y2M5ZmM1ZWIzZGU3YzZhYzg3MTlmYTRmMWNhMjU3YjQuLmViOGFjNGEyMTZlZTNlZWNk
ZDc0ZmQwNTYxYzU3NmI3NDQwODExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIEZyYW1lKiB0b0ZyYW1lSWZOb3REZXRhY2hl
ZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBXb3Js
ZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKIHsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1
bWVudCgpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGNvbnRleHQpLT5mcmFtZSgpKQorICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9Eb2N1
bWVudChjb250ZXh0KS0+ZnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiB3b3JsZENvbnRleHQu
YWRqdXN0ZWRDb250ZXh0KGZyYW1lLT5zY3JpcHQoKSk7CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAg
ICAgfSBlbHNlIGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkgewpAQCAtMjc1LDcgKzI3
NSw3IEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRv
VjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUo
KSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9Eb2N1bWVudChjb250ZXh0KS0+ZnJh
bWUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFN0b3JlIHRoZSBET01XcmFwcGVyV29ybGQg
Zm9yIHRoZSBtYWluIHdvcmxkIGluIHRoZSB2ODo6Q29udGV4dCBzbyBjYWxsZXJzCiAgICAgICAg
ICAgICAvLyB0aGF0IGFyZSBsb29raW5nIHVwIHRoZWlyIHdvcmxkIHdpdGggRE9NV3JhcHBlcldv
cmxkOjppc29sYXRlZFdvcmxkKHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpCiAgICAgICAgICAg
ICAvLyB3b24ndCBlbmQgdXAgcGFzc2luZyBudWxsIGhlcmUgd2hlbiBsYXRlciB0cnlpbmcgdG8g
Z2V0IHRoZWlyIHY4OjpDb250ZXh0IGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhFdmVudExpc3RlbmVyLmNwcAppbmRleCA4NzFjMzI4YjI1M2FhOTMyY2YxMjI4ZTIxOTNl
NGQwMGJmNGU2OGEwLi5jYjgwZjMyNjQyOWNlNDJlZTU3YWM2MTZhNjRkOTdmNTAwNmUxZDljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHAKQEAg
LTg1LDcgKzg1LDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhFdmVudExpc3RlbmVyOjpjYWxs
TGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAoIWNvbnRleHQt
PmlzRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAK
LSAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggYTc0ZTViMDliMmI0Mzg1OTk2NzY0MTI5MjBmMDJiYjhlZjNjNjVkZC4uOTI5YjUw
MzYyYTYxNzg0YTA2Mjg3YzBmZDBmYTEwMDJhMmU0Mjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTkzLDcgKzkzLDcg
QEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVy
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ28KICAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKLSAgICBGcmFtZSog
ZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpOworICAgIEZy
YW1lKiBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKQEAgLTExMywxMyAr
MTEzLDEzIEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKGhhc0V4aXN0aW5nTGlz
dGVuZXJPYmplY3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRleHQtPmlzRG9j
dW1lbnQoKSAmJiAhc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhtX3NvdXJjZVVSTCwgbV9wb3Np
dGlvbi5tX2xpbmUpKQorICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYgIXRvRG9jdW1l
bnQoY29udGV4dCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lubGluZUV2ZW50SGFu
ZGxlcnMobV9zb3VyY2VVUkwsIG1fcG9zaXRpb24ubV9saW5lKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogCiAgICAgQVNTRVJUKGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7Ci0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0b0RvY3VtZW50KGNvbnRl
eHQpLT5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0
KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggZmI3NDJiNGM3N2JhOGMxMjgzODc2ZGI2YWNkOWYw
NWI2YjYzZmRmOC4uNTk1YmRmODk5ZmRmY2Y2M2EzMWU5MDIwZDBlMDhlYTAxMmNiNzZlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwCkBAIC00ODMsNyArNDgzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0K
ICAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CiAKICAgICBpZiAoZG9jICYm
IGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4oZG9jKS0+aGFzTmFtZWRJdGVtKHByb3BOYW1lLmltcGwoKSkgfHwgZG9jLT5oYXNF
bGVtZW50V2l0aElkKHByb3BOYW1lLmltcGwoKSkpIHsKKyAgICAgICAgaWYgKHRvSFRNTERvY3Vt
ZW50KGRvYyktPmhhc05hbWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFzRWxlbWVu
dFdpdGhJZChwcm9wTmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IGl0ZW1zID0gZG9jLT53aW5kb3dOYW1lZEl0ZW1zKHByb3BOYW1lKTsKICAgICAgICAg
ICAgIGlmICghaXRlbXMtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChpdGVtcy0+
aGFzRXhhY3RseU9uZUl0ZW0oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA2MDhlNzA4NGVlMDVmMWY1NjI5
YzQ4ZTNlNmFmNWM2ZjY0MDI0NDg3Li4zZDcxZWE2ODEzODc0MGIzMzk0NTkxN2RiYTAwZGY3Mjcz
MmRkOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
b2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwKERvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGUKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGltcGwtPmlzSFRNTERvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGlt
cGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gd3JhcCh0b0hU
TUxEb2N1bWVudChpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICNpZiBFTkFCTEUo
U1ZHKQogICAgIGlmIChpbXBsLT5pc1NWR0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiB3cmFw
KHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CisgICAgICAgIHJldHVybiB3cmFwKHRvU1ZHRG9jdW1lbnQoaW1wbCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiAjZW5kaWYKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBWOERvY3VtZW50OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCA3YzJmZjlkZWVjMWNl
ODI1MWU5YWIzMGY4OGI3ODUwYjRjOTMwNzQ4Li5jMTdmNmUzMDQyNGFiNDAxODQxNTdkNTc0ZDlh
MTAzOTk2ZDZiNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcChOb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwKICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKICAgICAgICAgcmV0dXJuIHdyYXAo
c3RhdGljX2Nhc3Q8Q29tbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwog
ICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAg
ICAgcmV0dXJuIHdyYXAodG9Eb2N1bWVudChpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgcmV0dXJuIHdy
YXAoc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDdiMzgzMWI3ZTI2ZTA4MTk3YmUzNWVmOGI0M2Ex
ZDVmMTllZjdmNmUuLjVjY2Q3YWNkN2FmMGVmZTIxMjFjMTNiOTAyMzViMDFhMmU3MTMyMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0
aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChDb250YWluZXJOb2RlKiBu
ZXdQYXJlbnQsIE5vZGUqIG5ldwogICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJS
OwogCiAgICAgaWYgKG9sZENoaWxkICYmIG5ld1BhcmVudC0+aXNEb2N1bWVudE5vZGUoKSkgewot
ICAgICAgICBpZiAoIXN0YXRpY19jYXN0PERvY3VtZW50Kj4obmV3UGFyZW50KS0+Y2FuUmVwbGFj
ZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCkpCisgICAgICAgIGlmICghdG9Eb2N1bWVudChuZXdQ
YXJlbnQpLT5jYW5SZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKSkKICAgICAgICAgICAg
IHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CiAgICAgfSBlbHNlIGlmICghaXNDaGlsZFR5
cGVBbGxvd2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKQogICAgICAgICByZXR1cm4gSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvci5oCmluZGV4IDg0NGUwZThiM2Q5OWYyMjlmY2MyZjIzMzRkNDAzNTI1NGI1NjQwODMuLmNl
MWJlZTJjMmM4MWJhNjNlNGM0NTc4MGJjNzRhODZmMTM2MTkxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKCk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAK
ICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggZDhiMGNkOTA1NTA2
NWYzNzhkYTY3ODFhZWIyMDE3ZDNiM2E3YTZmYS4uNDg4NjNiYjE1YTAwOGZlZTQ1MDgxOWM4ZDZl
ZTIyMThhYmE3YmQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYQogCiBp
bmxpbmUgRG9jdW1lbnQqIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZG9jdW1lbnQoKSBjb25zdAog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzU4NDdhZmQ4MjBhMjE3ZDQ4MTE0
MDk5OTA0MGFiZTk3YjBmN2VlNi4uOWQ1ZTc0ZTZjMjIwMDUxNjA2YjM3YTk4OGQ0MWQ0ZGJmZjRj
NjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yODY0LDcgKzI4NjQsNyBAQCB2b2lk
IERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0
cmluZyYgY29udGVudCkKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc2V0Q29va2llIHdvcmsgb24g
WE1MIGRvY3VtZW50cyB0b287IGUuZy4gaW4gY2FzZSBvZiA8aHRtbDptZXRhIC4uLi4uPgogICAg
ICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgLy8gRXhjZXB0aW9uIChm
b3Igc2FuZGJveGVkIGRvY3VtZW50cykgaWdub3JlZC4KLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PEhUTUxEb2N1bWVudCo+KHRoaXMpLT5zZXRDb29raWUoY29udGVudCwgSUdOT1JFX0VYQ0VQVElP
Tik7CisgICAgICAgICAgICB0b0hUTUxEb2N1bWVudCh0aGlzKS0+c2V0Q29va2llKGNvbnRlbnQs
IElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShlcXVpdiwgImNvbnRlbnQtbGFuZ3VhZ2UiKSkKICAgICAgICAgc2V0Q29udGVudExh
bmd1YWdlKGNvbnRlbnQpOwpAQCAtNTc1NSw3ICs1NzU1LDcgQEAgTm9kZSogZXZlbnRUYXJnZXRO
b2RlRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgTm9k
ZSogbm9kZSA9IGRvYy0+Zm9jdXNlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUgJiYgZG9jLT5pc1Bs
dWdpbkRvY3VtZW50KCkpIHsKLSAgICAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdpbkRvY3VtZW50
ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2MpOworICAgICAgICBQbHVnaW5Eb2N1
bWVudCogcGx1Z2luRG9jdW1lbnQgPSB0b1BsdWdpbkRvY3VtZW50KGRvYyk7CiAgICAgICAgIG5v
ZGUgPSAgcGx1Z2luRG9jdW1lbnQtPnBsdWdpbk5vZGUoKTsKICAgICB9CiAgICAgaWYgKCFub2Rl
ICYmIGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTQxYTA1
ZGUxMzQ4MTJhODUzZGNmNTBhYTIwOWFmM2FlZGEwN2ZlYi4uNmRhYjc0OTRiMDc3ZmQ1NmE1MzRm
MTQzYjljOGEyYzcxMTFhOGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyMTQsNyArMTIx
NCw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiB2b2lkICgqQXJndW1lbnRzQ2FsbGJhY2spKGNv
bnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVu
dCosIHZvaWQqIGRhdGEpOwogICAgIHZvaWQgcHJvY2Vzc0FyZ3VtZW50cyhjb25zdCBTdHJpbmcm
IGZlYXR1cmVzLCB2b2lkKiBkYXRhLCBBcmd1bWVudHNDYWxsYmFjayk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNEb2N1bWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwg
Tm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRD
b3VudERlbHRhID0gMCk7CiAKQEAgLTE1ODMsNiArMTU4MywzMyBAQCBpbmxpbmUgY29uc3QgRG9j
dW1lbnQqIERvY3VtZW50Ojp0ZW1wbGF0ZURvY3VtZW50KCkgY29uc3QKIH0KICNlbmRpZgogCitp
bmxpbmUgRG9jdW1lbnQqIHRvRG9jdW1lbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tighc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworfQorCitpbmxpbmUgY29uc3QgRG9jdW1lbnQqIHRvRG9jdW1lbnQoY29u
c3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworfQor
CitpbmxpbmUgRG9jdW1lbnQqIHRvRG9jdW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBub2RlLT5pc0RvY3VtZW50Tm9kZSgp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKTsKK30KKworaW5saW5l
IGNvbnN0IERvY3VtZW50KiB0b0RvY3VtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgbm9kZS0+aXNEb2N1bWVudE5v
ZGUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50Kj4obm9kZSk7Cit9
CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4K
K3ZvaWQgdG9Eb2N1bWVudChjb25zdCBEb2N1bWVudCopOworCiAvLyBQdXQgdGhlc2UgbWV0aG9k
cyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0
IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgogCiBpbmxpbmUgYm9vbCBOb2RlOjppc0Rv
Y3VtZW50Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IGNk
MWQ0ODUzNDY5OWJhODU5YTFmMzNhMWJkMmM2ZjkxY2I4NGUzODQuLmJjOTE3N2JjNWExYTE0M2E0
ZjE0MDNkZTlkMjE2MmIzNWYzZmRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRG9j
dW1lbnRUeXBlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zCiAgICAgLy8gT3VyIGRv
Y3VtZW50IG5vZGUgY2FuIGJlIG51bGwgaWYgd2Ugd2VyZSBjcmVhdGVkIGJ5IGEgRE9NSW1wbGVt
ZW50YXRpb24uICBXZSB1c2UgdGhlIHBhcmVudCgpIGluc3RlYWQuCiAgICAgQVNTRVJUKHBhcmVu
dE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRG9jdW1lbnROb2RlKCkpOwogICAgIGlmIChwYXJl
bnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKSB7Ci0gICAgICAgIERv
Y3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHBhcmVudE5vZGUoKSk7CisgICAg
ICAgIERvY3VtZW50KiBkb2MgPSB0b0RvY3VtZW50KHBhcmVudE5vZGUoKSk7CiAgICAgICAgIGlm
ICghZG9jLT5kb2N0eXBlKCkpCiAgICAgICAgICAgICBkb2MtPnNldERvY1R5cGUodGhpcyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDY2MzA0OWFiMDE0YzI3NjE5ODk1OTU1MjVj
OTQ2YTU3M2YwYTU5N2YuLjlkMzgwNDMwYzliMzY4MWE4MzA1YjlmMTdkZTc3ZTNiNzVhYmU0NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIxOTksNyArMjE5OSw3IEBAIEF0b21pY1N0cmlu
ZyBFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKG4tPmlzRG9jdW1lbnROb2RlKCkpIHsKICAgICAgICAgICAg
IC8vIGNoZWNraW5nIHRoZSBNSU1FIGNvbnRlbnQtbGFuZ3VhZ2UKLSAgICAgICAgICAgIHZhbHVl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPihuKS0+Y29udGVudExhbmd1YWdlKCk7Cisg
ICAgICAgICAgICB2YWx1ZSA9IHRvRG9jdW1lbnQobiktPmNvbnRlbnRMYW5ndWFnZSgpOwogICAg
ICAgICB9CiAKICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKQEAgLTI2ODIsMTAgKzI2ODIs
MTAgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRv
bWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFvbGROYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4o
ZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbShvbGROYW1lKTsKKyAgICAgICAgdG9IVE1MRG9j
dW1lbnQoZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbShvbGROYW1lKTsKIAogICAgIGlmICgh
bmV3TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRv
Y3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CisgICAgICAgIHRvSFRNTERvY3VtZW50
KGRvY3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6
dXBkYXRlRXh0cmFOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJ
ZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKQEAgLTI2OTQsMTAgKzI2OTQsMTAgQEAgdm9p
ZCBFbGVtZW50Ojp1cGRhdGVFeHRyYU5hbWVkSXRlbVJlZ2lzdHJhdGlvbihjb25zdCBBdG9taWNT
dHJpbmcmIG9sZElkLCBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW9sZElkLmlz
RW1wdHkoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSkt
PnJlbW92ZUV4dHJhTmFtZWRJdGVtKG9sZElkKTsKKyAgICAgICAgdG9IVE1MRG9jdW1lbnQoZG9j
dW1lbnQoKSktPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG9sZElkKTsKIAogICAgIGlmICghbmV3SWQu
aXNFbXB0eSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgp
KS0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1
bWVudCgpKS0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiBFbGVtZW50OjplbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9u
VHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggYzExZDIwZjEyZGEz
ZWJkYjYwZGU3OWFhMGE5MDg0OGRmYjUwN2QxNy4uYzA5M2VjMWI5ZmNjYWY5OWI5ZmYxNWQyOWFl
MTk0ZDVhYTk5MjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgYm9vbCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVu
dCkKICAgICBpZiAoIXByZWZpeGVkVHlwZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsK
KyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAg
ICAgICAgICAgICBpZiAoZG9jdW1lbnQtPmRvbVdpbmRvdygpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGxpc3RlbmVyUHJlZml4ZWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0
ZW5lclVucHJlZml4ZWRWZWN0b3IpCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBFdmVudFRhcmdl
dDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCwgRXZlbnRUYXJnZXREYXRhKiBkLCBF
dmVudExpc3QKICAgICBpZiAodXNlckV2ZW50V2FzSGFuZGxlZCkgewogICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
ICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7Cisg
ICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAg
ICAgICAgICAgZG9jdW1lbnQtPnJlc2V0TGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgp
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVk
Rmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwCmluZGV4IDJiYjk0MGM4OWVlMTVlMzk5ZjM2MTk3ZGE2OTE2OGNkYjZkNTAwZDcuLmY5
YzA3M2RlNzJjMzUxZjk2ZGU5OTU3M2I5Yjc3NDVhNjgzZmFkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAgLTEwMyw4ICsxMDMsNyBAQCB2b2lkIE5h
bWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93KiBuYW1l
ZEZsb3cpCiBEb2N1bWVudCogTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAog
ewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIEFTU0VSVCghY29udGV4
dCB8fCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KGNvbnRleHQpOworICAgIHJldHVybiB0b0RvY3VtZW50KGNvbnRleHQpOwogfQogCiBQ
YXNzUmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IE5hbWVkRmxvd0NvbGxlY3Rpb246OmNy
ZWF0ZUNTU09NU25hcHNob3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDNjYjBlNmY3MjFkODc5MzQx
ZTZlYTg0Y2MzN2ZkMzIxZGRjZWI4NGQuLmUwZjk2MzI2ODY4YmQ5NWI0ZmY5MGY2NGFmYTlmMzMw
MGVlMTYwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIGJvb2wgTm9k
ZTo6aXNEZWZhdWx0TmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJTWF5
YmVFbXB0eSkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIERPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoRWxlbWVudCogZGUgPSBz
dGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAg
ICAgICAgICAgIGlmIChFbGVtZW50KiBkZSA9IHRvRG9jdW1lbnQodGhpcyktPmRvY3VtZW50RWxl
bWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBkZS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5h
bWVzcGFjZVVSSSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRU5U
SVRZX05PREU6CkBAIC0xNTI1LDcgKzE1MjUsNyBAQCBTdHJpbmcgTm9kZTo6bG9va3VwUHJlZml4
KGNvbnN0IEF0b21pY1N0cmluZyAmbmFtZXNwYWNlVVJJKSBjb25zdAogICAgICAgICBjYXNlIEVM
RU1FTlRfTk9ERToKICAgICAgICAgICAgIHJldHVybiBsb29rdXBOYW1lc3BhY2VQcmVmaXgobmFt
ZXNwYWNlVVJJLCBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50ICo+KHRoaXMpKTsKICAgICAgICAg
Y2FzZSBET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKEVsZW1lbnQqIGRlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICBpZiAoRWxlbWVudCogZGUgPSB0b0RvY3VtZW50KHRoaXMpLT5kb2N1bWVudEVsZW1lbnQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZGUtPmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkp
OwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEVOVElUWV9OT0RF
OgpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSShj
b25zdCBTdHJpbmcgJnByZWZpeCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAo
RWxlbWVudCogZGUgPSBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVu
dEVsZW1lbnQoKSkKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBkZSA9IHRvRG9jdW1lbnQodGhp
cyktPmRvY3VtZW50RWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBkZS0+bG9va3Vw
TmFtZXNwYWNlVVJJKHByZWZpeCk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
ICAgIGNhc2UgRU5USVRZX05PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2lu
ZG93RXZlbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRl
eHQuY3BwCmluZGV4IDA3MDkzMzA4OGUyNWRlODNjYTA3MGRkNDFiOWE3YmMxZTU5NTAyNjcuLmQ2
M2VlMzk3ZjExZmU3YTNkNjA0ZTEzMGY4MWYzNzUzNjRhMTc5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdpbmRvd0V2ZW50
Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KEV2ZW50KiBldmVudCwgUGFzc1JlZlB0cjxOb2Rl
PiBub2RlLCBjb25zCiAgICAgaWYgKCF0b3BMZXZlbENvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93aW5kb3cgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHRvcExldmVsQ29udGFpbmVyKS0+ZG9tV2luZG93KCk7CisgICAgbV93aW5kb3cgPSB0b0Rv
Y3VtZW50KHRvcExldmVsQ29udGFpbmVyKS0+ZG9tV2luZG93KCk7CiAgICAgbV90YXJnZXQgPSB0
b3BFdmVudENvbnRleHQgPyB0b3BFdmVudENvbnRleHQtPnRhcmdldCgpIDogbm9kZS5nZXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCBlM2FiYjk1Nzg5M2ZiYzc3MTUzNmM0M2U2OWQ1YzI5YmFjN2Y0Yzk4Li4wNTgxMWVhMDAxMDIx
MDg4YzExYjRlMDZkMzQwMzYwMTdkOTRiNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgTWFya3VwQWNj
dW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3Qg
Tm9kZSogbm9kCiAgICAgICAgIGFwcGVuZENvbW1lbnQocmVzdWx0LCBzdGF0aWNfY2FzdDxjb25z
dCBDb21tZW50Kj4obm9kZSktPmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfTk9ERToKLSAgICAgICAgYXBwZW5kWE1MRGVjbGFyYXRpb24ocmVzdWx0LCBz
dGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KG5vZGUpKTsKKyAgICAgICAgYXBwZW5kWE1MRGVj
bGFyYXRpb24ocmVzdWx0LCB0b0RvY3VtZW50KG5vZGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IDJhYWE3OThhZWFmZjc4MTAyZWQ0NDExOWU4OTY4
OGVlNzQyODI3MTMuLjUxNDIwNzI1OGY2MmU2YjVlODFjMzZlYmUyZmUzZjAxZGQxNzkzODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMTA3LDYgKzEwNywyMSBAQCBpbmxpbmUg
Ym9vbCBIVE1MRG9jdW1lbnQ6Omhhc0V4dHJhTmFtZWRJdGVtKEF0b21pY1N0cmluZ0ltcGwqIG5h
bWUpCiAgICAgcmV0dXJuIG1fZXh0cmFOYW1lZEl0ZW1Db3VudHMuY29udGFpbnMobmFtZSk7CiB9
CiAKK2lubGluZSBIVE1MRG9jdW1lbnQqIHRvSFRNTERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwg
ZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
RG9jdW1lbnQqPihkb2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBIVE1MRG9jdW1lbnQqIHRv
SFRNTERvY3VtZW50KGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQgfHwgZG9jdW1lbnQtPmlzSFRNTERvY3Vt
ZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRG9jdW1lbnQqPihkb2N1
bWVudCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3Nh
cnkgY2FzdC4KK3ZvaWQgdG9IVE1MRG9jdW1lbnQoY29uc3QgSFRNTERvY3VtZW50Kik7CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxEb2N1bWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggZTZjM2UyZmFi
NTA1NzZhNzc4ZTUwOWQ2NGEyOGQxYjA4ZjQ5NDU1MC4uMjUyNTIyZWQ0ZmY0ZjNhM2U3MWY1M2Y2
YjEwMjdlYWIzOGUwOTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIFNWR0RvY3VtZW50KiBIVE1MRnJhbWVP
d25lckVsZW1lbnQ6OmdldFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewog
ICAgIERvY3VtZW50KiBkb2MgPSBjb250ZW50RG9jdW1lbnQoKTsKICAgICBpZiAoZG9jICYmIGRv
Yy0+aXNTVkdEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1l
bnQqPihkb2MpOworICAgICAgICByZXR1cm4gdG9TVkdEb2N1bWVudChkb2MpOwogICAgIC8vIFNw
ZWM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCNJbnRlcmZhY2VHZXRTVkdE
b2N1bWVudAogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDRkODY0OGJkMGFiNzgx
MTI3YTczMTc0Mzc3MDRkNDdlN2RlMzY5YWQuLjhiMDE3ZTZhODYwNDg4ZmFlOTIwNjk1ZTk5YjE3
NTM4MzUyODdkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiB7CiAgICAgaWYgKG5h
bWUgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgp
LT5pc0hUTUxEb2N1bWVudCgpICYmICFpc0luU2hhZG93VHJlZSgpKSB7Ci0gICAgICAgICAgICBI
VE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+
ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9IVE1M
RG9jdW1lbnQodGhpcy0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC0+cmVtb3Zl
RXh0cmFOYW1lZEl0ZW0obV9uYW1lKTsKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRFeHRyYU5h
bWVkSXRlbSh2YWx1ZSk7CiAgICAgICAgIH0KQEAgLTExMyw3ICsxMTMsNyBAQCBOb2RlOjpJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxJRnJhbWVFbGVtZW50OjppbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZQogewogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgcmVzdWx0
ID0gSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAg
ICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1M
RG9jdW1lbnQoKSAmJiAhaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAg
IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGRFeHRyYU5hbWVkSXRl
bShtX25hbWUpOworICAgICAgICB0b0hUTUxEb2N1bWVudChkb2N1bWVudCgpKS0+YWRkRXh0cmFO
YW1lZEl0ZW0obV9uYW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjEsNyArMTIx
LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSog
aW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9t
KGluc2VydGlvblBvaW50KTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAm
JiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmICFpbnNlcnRpb25Qb2ludC0+aXNJblNo
YWRvd1RyZWUoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQo
KSktPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1fbmFtZSk7CisgICAgICAgIHRvSFRNTERvY3VtZW50
KGRvY3VtZW50KCkpLT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX25hbWUpOwogfQogCiBib29sIEhU
TUxJRnJhbWVFbGVtZW50OjpzaG91bGREaXNwbGF5U2VhbWxlc3NseSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBjZjhlYWU2YmMwMTg2ODg2Y2Jm
NzIxODllZmJlNGY0ZjM5YWMyOGE1Li5hYzVjMGIyZjA4N2Y2OTQ2ODM5OTM4M2MwYjkxNWU1OTQ1
ZjNiMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM2
MjQsNyArMzYyNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTYXdVbnN1
cHBvcnRlZFRyYWNrcyhNZWRpYVBsYXllciopCiAgICAgLy8gVGhpcyBpcyBub3JtYWxseSBhY2Nl
cHRhYmxlIGV4Y2VwdCB3aGVuIHdlIGFyZSBpbiBhIHN0YW5kYWxvbmUKICAgICAvLyBNZWRpYURv
Y3VtZW50LiBJZiBzbywgdGVsbCB0aGUgZG9jdW1lbnQgd2hhdCBoYXMgaGFwcGVuZWQuCiAgICAg
aWYgKG93bmVyRG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCkpIHsKLSAgICAgICAgTWVkaWFE
b2N1bWVudCogbWVkaWFEb2N1bWVudCA9IHN0YXRpY19jYXN0PE1lZGlhRG9jdW1lbnQqPihvd25l
ckRvY3VtZW50KCkpOworICAgICAgICBNZWRpYURvY3VtZW50KiBtZWRpYURvY3VtZW50ID0gdG9N
ZWRpYURvY3VtZW50KG93bmVyRG9jdW1lbnQoKSk7CiAgICAgICAgIG1lZGlhRG9jdW1lbnQtPm1l
ZGlhRWxlbWVudFNhd1Vuc3VwcG9ydGVkVHJhY2tzKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBmNGQ2NzU4MmQ0OWVhY2Q1NGEzMzcy
MjM5NGNjOGU3NWUyNjM3YzAzLi4yNGUxOTI5Mjg0OWJkYzljOGVkYWE3MWVhNWFiYjRjZmMzZDE2
NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNDQy
LDcgKzQ0Miw3IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgp
CiAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogICAgIGlmIChp
c05hbWVkSXRlbSAhPSB3YXNOYW1lZEl0ZW0gJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQo
KSkgewotICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1l
bnQgPSB0b0hUTUxEb2N1bWVudCh0aGlzLT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGlzTmFt
ZWRJdGVtKSB7CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKGdldE5hbWVBdHRy
aWJ1dGUoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0oZ2V0SWRB
dHRyaWJ1dGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCBkYTI0
ZmE2YzEzNzBmMzZkNDQzN2UyNGRhNmY4ZDdiMjE5MzNmYTk2Li4zMzFkYWEzNzY3YjFhMzkwOTBi
ZGQ0Y2Y5NGJhY2I3ZWI2NGZjZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgSW1hZ2VEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlRG9jdW1l
bnQqPihSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KCkpOworICAgICAgICByZXR1cm4g
dG9JbWFnZURvY3VtZW50KFJhd0RhdGFEb2N1bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiAgICAg
fQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKaW5kZXggZmFm
OTIwNzBmZjQwMjU0ODk0NmU3YTY4MDE1ZWUxMjQxNGM4MjIyMy4uZjZmOTk4ZTgwZGM4NmUyZDBi
ZmIwODRhNjkzZjM0MTZhZGZhZTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgK
QEAgLTcxLDcgKzcxLDIyIEBAIHByaXZhdGU6CiAgICAgLy8gV2hldGhlciB0aGUgaW1hZ2Ugc2hv
dWxkIGJlIHNocnVuayBvciBub3QKICAgICBib29sIG1fc2hvdWxkU2hyaW5rSW1hZ2U7CiB9Owot
ICAgIAorCitpbmxpbmUgSW1hZ2VEb2N1bWVudCogdG9JbWFnZURvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1l
bnQgfHwgZG9jdW1lbnQtPmlzSW1hZ2VEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW1hZ2VEb2N1bWVudCo+KGRvY3VtZW50KTsKK30KKworaW5saW5lIGNvbnN0IEltYWdlRG9j
dW1lbnQqIHRvSW1hZ2VEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5p
c0ltYWdlRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEltYWdlRG9j
dW1lbnQqPihkb2N1bWVudCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcg
YW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9JbWFnZURvY3VtZW50KGNvbnN0IEltYWdlRG9j
dW1lbnQqKTsKKwogfQogCiAjZW5kaWYgLy8gSW1hZ2VEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFEb2N1bWVudC5oCmluZGV4IDJkODEyOTYzYmYxMWZiZWE2ZDFjNWM2MGVlNzYxY2MyODY0
MjE4N2UuLmVjNzc3YWVkYmUzODdiMzY2ZDQ5ZDRjNmMxN2ZhY2UxYTg5OGMxYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCkBAIC01NCw3ICs1NCwyMiBAQCBwcml2YXRlOgogCiAg
ICAgVGltZXI8TWVkaWFEb2N1bWVudD4gbV9yZXBsYWNlTWVkaWFFbGVtZW50VGltZXI7CiB9Owot
ICAgIAorCitpbmxpbmUgTWVkaWFEb2N1bWVudCogdG9NZWRpYURvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1l
bnQgfHwgZG9jdW1lbnQtPmlzTWVkaWFEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TWVkaWFEb2N1bWVudCo+KGRvY3VtZW50KTsKK30KKworaW5saW5lIGNvbnN0IE1lZGlhRG9j
dW1lbnQqIHRvTWVkaWFEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5p
c01lZGlhRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1lZGlhRG9j
dW1lbnQqPihkb2N1bWVudCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcg
YW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9NZWRpYURvY3VtZW50KGNvbnN0IE1lZGlhRG9j
dW1lbnQqKTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5j
cHAKaW5kZXggYzk5ZTM1MDk5M2MzMjlmODk3MjkyYzkyNTIwZjEwOGVkZjgzYTY1Ni4uOGVkNTY3
MmI3ZWFhMDMwMTAwYzVlZGQ4NWMyYTgyYjZiMjc3MWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBh
cnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIGlmIChsb2FkZXIpCiAgICAgICAg
IG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIGxvYWRlci0+d3JpdGVyKCkt
Pm1pbWVUeXBlKCkpOwogCi0gICAgc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2N1bWVu
dCgpKS0+c2V0UGx1Z2luTm9kZShtX2VtYmVkRWxlbWVudCk7CisgICAgdG9QbHVnaW5Eb2N1bWVu
dChkb2N1bWVudCgpKS0+c2V0UGx1Z2luTm9kZShtX2VtYmVkRWxlbWVudCk7CiAKICAgICBib2R5
LT5hcHBlbmRDaGlsZChlbWJlZEVsZW1lbnQsIElHTk9SRV9FWENFUFRJT04pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGIyMTk0M2JkOTI1ZGU4
Y2FiMWQ0YmRmYjZmMmExMTUxNWQ2ZDMzMDUuLjVlZTNkMjIzN2Y0YTQwMTUzZjdkMDg4OWJlYTNm
MGRmNGY4MWRhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZQogICAgICwgbV9p
c0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcGF1c2VPbkV4aXQoZmFsc2UpCiAgICAgLCBtX3NuYXBU
b0xpbmVzKHRydWUpCi0gICAgLCBtX2N1ZUJhY2tncm91bmRCb3goSFRNTERpdkVsZW1lbnQ6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkKKyAgICAsIG1fY3VlQmFja2dy
b3VuZEJveChIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKHRvRG9jdW1lbnQoY29udGV4dCkpKQogICAg
ICwgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSh0cnVlKQogewogICAgIEFTU0VSVChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaAppbmRleCA4OWRkMjUyMTZmMWQyNDk0MTdiY2IwYWM3NzgyMTk2YmEz
ZmZhZWU0Li5iNWM1Y2Y0ZWQwYTA5YTdjYTQ4YTA3ZjEyYTllYTM1MTVmYzVhYjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGRv
dWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIAotICAgIERv
Y3VtZW50KiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPiht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CisgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQo
KSB7IHJldHVybiB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KIAogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IGNyZWF0ZURpc3BsYXlUcmVlKCk7
CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IGRpc3BsYXlUcmVlSW50ZXJuYWwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCAyZDBmMzgx
ZDlmZjEwNTQ1Mzk4YWJmZjVjNDUzMjE0ZGE5MDI2Yjk4Li5kMzgzYTg0YWQyNjZkMDUyZjRhZGNh
NGEyMTRjZDE2Y2I1ZjEyYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiAgV2ViVlRUUGFyc2VyOjpjcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQoY28KICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgCiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKICAgICBtX2N1cnJlbnROb2RlID0gZnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBlZWU3ZDRmMWVmNTYwZGU1
YmNlMDUyZDk0M2ZjNjk5MjdmMzZiYzBhLi4xMDkwZmU1MDg5NDhhMWNiMjU5NGIzZGM4ODE0M2Zl
ZGM0OTA1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTM3OCw3ICszNzgsNyBAQCBEb2N1bWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6
OmFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZAogICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgaXMgbm90IGF2YWlsYWJsZSI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2Rl
KTsKKyAgICByZXR1cm4gdG9Eb2N1bWVudChub2RlKTsKIH0KIAogRWxlbWVudCogSW5zcGVjdG9y
RE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkKQpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldE91dGVy
SFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0CiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2Rl
LT5pc0RvY3VtZW50Tm9kZSgpID8gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKSA6IG5vZGUt
Pm93bmVyRG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5pc0RvY3Vt
ZW50Tm9kZSgpID8gdG9Eb2N1bWVudChub2RlKSA6IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKICAg
ICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiTm90IGFuIEhUTUwgZG9jdW1lbnQiOwogICAgICAgICByZXR1cm47
CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbgogI2VuZGlmCiAK
ICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKTsKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChub2RlKTsKICAgICAgICAgdmFsdWUtPnNldERv
Y3VtZW50VVJMKGRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSk7CiAgICAgICAgIHZhbHVlLT5z
ZXRCYXNlVVJMKGRvY3VtZW50QmFzZVVSTFN0cmluZyhkb2N1bWVudCkpOwogICAgICAgICB2YWx1
ZS0+c2V0WG1sVmVyc2lvbihkb2N1bWVudC0+eG1sVmVyc2lvbigpKTsKQEAgLTE0ODksNyArMTQ4
OSw3IEBAIHVuc2lnbmVkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckNoaWxkTm9kZUNvdW50KE5v
ZGUqIG5vZGUpCiBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKE5vZGUq
IG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKTsKKyAgICAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChub2RlKTsKICAgICAgICAgcmV0dXJuIGRv
Y3VtZW50LT5vd25lckVsZW1lbnQoKTsKICAgICB9CiAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5v
ZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKaW5kZXggNGJkYWQ1NzZhZjE0MDQ4ODBjYTAxODMwOTFlZDI5OGYzMDRm
OTBhMy4uZmYwZjBiODYzYzZmOWNlZjllZDBhZTE4ZDk4NjFmN2VjODM4OWJkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yU2NyaXB0RXhlY3V0
aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIEZyYW1l
KiBmcmFtZSA9IDA7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgZnJh
bWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpOworICAgICAgICBm
cmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCktPmZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1lOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggNTNkOGZmYTMyOTk4MDY3YzIwMWQzODg0ZmYzYjI5Y2Q1MTAzYzEyYi4u
YjRhODMyMmQxM2Y3N2MxYmM1ZjRiOGI1M2FiNDU1NjMzOTg0ZDY0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMjA1
Niw3ICsyMDU2LDcgQEAgaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnQKICAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAg
ICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGNvbnRleHQpLT5wYWdlKCkpOworICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UodG9Eb2N1bWVudChjb250ZXh0KS0+cGFnZSgpKTsKICNpZiBFTkFCTEUoV09SS0VS
UykKICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0Zvck5vbkRvY3VtZW50Q29udGV4dChj
b250ZXh0KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcAppbmRleCAz
YzcwNWZmZmUzMDNkNzg1NzcwODE3MGMwNzMwOTFmNmRmNGQ1ZGM3Li41MWVhMjVlOGJiODQzMzA1
MDI4Njc4NWI1NTdiYzAyZTYzZDgzOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJlcmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJl
ci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFByZXJlbmRlcmVyOjpyZXN1bWUoKQogRG9j
dW1lbnQqIFByZXJlbmRlcmVyOjpkb2N1bWVudCgpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHJldHVybiB0b0RvY3VtZW50
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFByZXJlbmRlcmVyQ2xpZW50KiBQcmVy
ZW5kZXJlcjo6Y2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5j
cHAKaW5kZXggMjZiYzhjYjFkYjliZGE0NzUwZDk0M2U5ZjdhZjRjZWVlZmZiYmVmMC4uMDBhMWQ4
ZmU2NzRmYzY0MWUxNjNmMmQzZmEwM2RmZTViZTkyNjJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFRleHRUcmFj
a0xvYWRlcjo6ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyYwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmNvcnNQb2xpY3lQcmV2ZW50ZWRMb2Fk
KCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChB
U0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRyYWNrIGxvYWQgZGVuaWVkIGJ5IENyb3Nz
LU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSkpOwotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKICAgICBtX3N0YXRlID0g
RmFpbGVkOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fY2Fj
aGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAg
IGlmICghbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkKICAgICAgICAgJiYgIWRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc291cmNlLT5yZXNwb25zZSgpLnVybCgpKQog
ICAgICAgICAmJiAhcmVzb3VyY2UtPnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhkb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKSkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIFRleHRUcmFja0xv
YWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2Rl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19j
YXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IGN1ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5j
b21wbGV0ZVVSTCh1cmwpKSk7CiAKICAgICBpZiAoIWNyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDUzZTM0
NzgzNDliNDdkNGY1MTIzNDJhNzYzODNlMDAzNjc3MDVlYzAuLmJmYzdmM2E3MGM0YjlkNDI2N2Yy
OTRiMTUxNmI1NDMxZmNkM2E2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTUwLDggKzUwLDcgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVy
PiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAg
ICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxX
b3JrZXJDb250ZXh0Kj4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCiAKLSAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5pc0RvY3VtZW50KCkp
OwotICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpLCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOworICAgIHJl
dHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh0b0RvY3VtZW50KGNvbnRleHQp
LCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQpAQCAtNjUs
OCArNjQsNyBAQCB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgIH0KICNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIHJlcXVl
c3QsIGNsaWVudCwgb3B0aW9ucyk7CisgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KHRvRG9jdW1lbnQoY29udGV4dCksIHJlcXVlc3QsIGNsaWVu
dCwgb3B0aW9ucyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA0NDYxODg5M2Qy
ZThlODk0YTZhOTdlMmQzMDg4OGRiZGU1YmI2YmE3Li40ZDBkNmY0YmQ4Y2JkOTgwZDZkNTZmYTUz
YTMzZDMxNDBkYzMzOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDcsOCArMTA3LDcgQEAgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6fk1haW5UaHJlYWRCcmlkZ2UoKQogdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQ
dHIsIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0
YSwgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2lu
Z1JlZmVycmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAKICAgICBPd25QdHI8UmVz
b3VyY2VSZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQocmVxdWVzdERhdGEp
KTsKICAgICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTljNmY1
MWQ4ZjI4MzgyYjJhN2QyMzU0ZjY4MzkzOWM5NzNhMjc5MS4uNjNjMjBkMjUyNWM1MThiN2Y4Y2Rk
ZDYwNDFkMDJlY2YxOWViNzhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcApAQCAtMTQzMiw3ICsxNDMyLDcgQEAgdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmNvcHlTdGF0ZUZyb20oY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5KiBvdGhl
cikKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0
cmluZyYgaGVhZGVyLCBIZWFkZXJUeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwogICAgICAgICBpZiAoZG9jdW1lbnQtPmRvbVdpbmRvdygpKQogICAgICAgICAgICAgRmVh
dHVyZU9ic2VydmVyOjpvYnNlcnZlKGRvY3VtZW50LT5kb21XaW5kb3coKSwgZ2V0RmVhdHVyZU9i
c2VydmVyVHlwZSh0eXBlKSk7CiAgICAgfQpAQCAtMTY3Niw3ICsxNjc2LDcgQEAgdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2
ZVRleHQsIGNvbnN0IFMKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAg
IEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBlNGQwMjU2MzFiYjA2
NjI3YjU1YjQwZDU3MGM4NzdjYTdkYmY4MGUyLi4zNTRiMTYyMzg4NzgwZDJlM2ZjMjNiY2MyYjM3
NzkxNGZiMzE4MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05MjAsNyArOTIw
LDcgQEAgdm9pZCBET01XaW5kb3c6OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgYm9vbCBhbGxvd0ZvY3VzID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yOjp3
aW5kb3dGb2N1c0FsbG93ZWQoKSB8fCAhbV9mcmFtZS0+c2V0dGluZ3MoKS0+d2luZG93Rm9jdXNS
ZXN0cmljdGVkKCk7CiAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0g
dG9Eb2N1bWVudChjb250ZXh0KTsKICAgICAgICAgaWYgKG9wZW5lcigpICYmIGFjdGl2ZURvY3Vt
ZW50LT5kb21XaW5kb3coKSA9PSBvcGVuZXIoKSkKICAgICAgICAgICAgIGFsbG93Rm9jdXMgPSB0
cnVlOwogICAgIH0KQEAgLTk3Myw3ICs5NzMsNyBAQCB2b2lkIERPTVdpbmRvdzo6Y2xvc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIAogICAgIGlmIChjb250ZXh0KSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIERvY3VtZW50KiBhY3RpdmVEb2N1
bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIERvY3VtZW50
KiBhY3RpdmVEb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgICAgIGlmICghYWN0
aXZlRG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEzMjMsOCArMTMyMyw3IEBA
IERPTVdpbmRvdyogRE9NV2luZG93Ojp0b3AoKSBjb25zdAogRG9jdW1lbnQqIERPTVdpbmRvdzo6
ZG9jdW1lbnQoKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFjb250ZXh0IHx8IGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQoY29udGV4dCk7CiB9CiAKIFBhc3NSZWZQdHI8U3R5
bGVNZWRpYT4gRE9NV2luZG93OjpzdHlsZU1lZGlhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKaW5kZXggODRhYjk1YjJjODUxY2M2YzEwZDJlNmE3ZGNiMmJlMWJl
NjE4MjE1NS4uY2NjNGNmNjU1YTE4Yzg4M2Q0M2FjNzA0MDQ5YTc3MDc4MTVmMjMwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBEcmFn
T3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKERyYWdEYXRhKiBkcmFn
RGF0YSkKICAgICBib29sIHBsdWdpbkRvY3VtZW50QWNjZXB0c0RyYWdzID0gZmFsc2U7CiAKICAg
ICBpZiAoZG9jICYmIGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpKSB7Ci0gICAgICAgIGNvbnN0IFdp
ZGdldCogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2MpLT5wbHVnaW5X
aWRnZXQoKTsKKyAgICAgICAgY29uc3QgV2lkZ2V0KiB3aWRnZXQgPSB0b1BsdWdpbkRvY3VtZW50
KGRvYyktPnBsdWdpbldpZGdldCgpOwogICAgICAgICBjb25zdCBQbHVnaW5WaWV3QmFzZSogcGx1
Z2luVmlldyA9ICh3aWRnZXQgJiYgd2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpID8gc3RhdGlj
X2Nhc3Q8Y29uc3QgUGx1Z2luVmlld0Jhc2UqPih3aWRnZXQpIDogMDsKIAogICAgICAgICBpZiAo
cGx1Z2luVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5NGE4NDAy
NGMzMjRiN2ZiYTUxMDNmMDBkYTZkZGZmYTI0NjRmN2FlLi5mZjE0NDk3NGJjYjI1NmJhMDU5OGUw
OWJmNjJiZjUwYWU4ZDMzYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC02NjQsMTAgKzY2NCwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogCiAjaWYgRU5BQkxF
KFNWRykKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpCi0gICAg
ICAgICYmIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnpv
b21BbmRQYW5FbmFibGVkKCkpIHsKKyAgICAgICAgJiYgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5k
b2N1bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgewogICAgICAgICBpZiAoZXZlbnQuZXZl
bnQoKS5zaGlmdEtleSgpICYmIHNpbmdsZUNsaWNrKSB7CiAgICAgICAgICAgICBtX3N2Z1BhbiA9
IHRydWU7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRv
Y3VtZW50KCkpLT5zdGFydFBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZl
bnQuZXZlbnQoKS5wb3NpdGlvbigpKSk7CisgICAgICAgICAgICB0b1NWR0RvY3VtZW50KG1fZnJh
bWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbihtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE2OTQsNyArMTY5NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZl
bnQsIEhpCiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX3N2Z1BhbikgewotICAgICAgICBz
dGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51cGRhdGVQYW4o
bV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlv
bikpOworICAgICAgICB0b1NWR0RvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51cGRhdGVQ
YW4obV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3Np
dGlvbikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTE4NDMsNyAr
MTg0Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAjaWYgRU5BQkxFKFNWRykKICAgICBp
ZiAobV9zdmdQYW4pIHsKICAgICAgICAgbV9zdmdQYW4gPSBmYWxzZTsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsK
KyAgICAgICAgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRlUGFuKG1f
ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24p
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuY3BwCmluZGV4IDE2MjJhMGMwYzNhNzcyYzhjZDMwZGU3NmRiMDY3YWU3NGFlNWYw
ODMuLmM2Y2EwYzlkOWUyMWY1NWVkZDUyM2RmYmI4MjY5NjA4OWM5ZjE3YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRT
b3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uCiAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjaGVjayB0aGUgaXNvbGF0ZWQg
d29ybGQncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvbmNlIHdlYmtpdC5vcmcvYi8xMDQ1MjAg
aXMgc29sdmVkLgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5ID0gZmFsc2U7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOwor
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogICAgICAg
ICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+
ZnJhbWUoKS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSgpOwogICAgIH0KICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSAmJiAhY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Q29u
bmVjdFRvU291cmNlKGZ1bGxVUkwpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAKaW5kZXggNmY1OWUxM2U1ZjkwYTQwYWI0ZDdkZTVmMDBjMjMwZjJmOGExNzcxYi4uZTgx
MWVhMTMzNTRmZGQwOGJmYTU3MTQyZDk2MDg2MWZmYzdmMGJhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtODQ4LDcgKzg0OCw3IEBAIGJvb2wgRm9jdXNDb250
cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
biwgS2V5Ym9hCiAgICAgTm9kZSogY29udGFpbmVyID0gZm9jdXNlZERvY3VtZW50OwogCiAgICAg
aWYgKGNvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihjb250YWluZXIpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKKyAgICAgICAgdG9Eb2N1bWVudChjb250YWluZXIpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgCiAgICAgLy8gRmlndXJlIG91dCB0aGUgc3RhcnRp
bmcgcmVjdC4KICAgICBMYXlvdXRSZWN0IHN0YXJ0aW5nUmVjdDsKQEAgLTg2OSw3ICs4NjksNyBA
QCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgICAgICBzdGFydGluZ1JlY3QgPSBub2RlUmVj
dEluQWJzb2x1dGVDb29yZGluYXRlcyhjb250YWluZXIsIHRydWUgLyogaWdub3JlIGJvcmRlciAq
Lyk7CiAgICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZy
YW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY29udGFpbmVyKTsKICAgICAgICAgaWYg
KGNvbnRhaW5lciAmJiBjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRhaW5lciktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOworICAgICAgICAgICAgdG9Eb2N1bWVudChjb250YWluZXIpLT51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICB9IHdoaWxlICghY29uc3Vt
ZWQgJiYgY29udGFpbmVyKTsKIAogICAgIHJldHVybiBjb25zdW1lZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggZWNkMTc1MmJlM2ZkMDRjZjgxOTU2MDgzMjdhNWZhYzk5OWI1NWM2Zi4uMmU4ZDFi
ZTNlNjFjNTk1MmQ2MzViOGI1Y2VjYWNhMGEyZTYyOTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTkzMSw3ICs5MzEsNyBAQCB2b2lkIEZyYW1lOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3Jz
KGZsb2F0IHBhZ2Vab29tRmFjdG9yLCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcgogICAgIC8vIFJlc3Bl
Y3QgU1ZHcyB6b29tQW5kUGFuPSJkaXNhYmxlZCIgcHJvcGVydHkgaW4gc3RhbmRhbG9uZSBTVkcg
ZG9jdW1lbnRzLgogICAgIC8vIEZJWE1FOiBIb3cgdG8gaGFuZGxlIGNvbXBvdW5kIGRvY3VtZW50
cyArIHpvb21BbmRQYW49ImRpc2FibGVkIj8gTmVlZHMgU1ZHIFdHIGNsYXJpZmljYXRpb24uCiAg
ICAgaWYgKGRvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKCFzdGF0aWNf
Y2FzdDxTVkdEb2N1bWVudCo+KGRvY3VtZW50KS0+em9vbUFuZFBhbkVuYWJsZWQoKSkKKyAgICAg
ICAgaWYgKCF0b1NWR0RvY3VtZW50KGRvY3VtZW50KS0+em9vbUFuZFBhbkVuYWJsZWQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCAxZjU3ZTBjMjc0YzdmM2I5MDNhN2M2YzY0MTk4MDFmYWU1NTc2OTNiLi5mNmFiYjE5
NzM1ODRjOWNiOGZhZDExOGM2YWJmNGI0YmNmZGI0OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xNzkyLDcgKzE3OTIsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNo
b3IoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChTVkdTVkdFbGVt
ZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkp
LT5yb290RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChTVkdTVkdFbGVtZW50KiBzdmcgPSB0b1NW
R0RvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpKSB7CiAgICAgICAg
ICAgICBzdmctPnNldHVwSW5pdGlhbFZpZXcobmFtZSwgYW5jaG9yTm9kZSk7CiAgICAgICAgICAg
ICBpZiAoIWFuY2hvck5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9IaXN0b3J5LmNwcAppbmRleCA4N2Q4NTA2ZDczNGNmNzk2NjFjMTQ0NDEyZGMxYjA0NjYxNDEz
OGU0Li41OGFlZmM0MjdiOGE0YTBkMWExMzZmZDdlYmJjZjBmYmVkZmQzMDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSGlzdG9yeS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhpc3Rvcnk6OmdvKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBkaXN0YW5jZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBEb2N1bWVudCogYWN0aXZlRG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIERvY3VtZW50KiBh
Y3RpdmVEb2N1bWVudCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CiAgICAgaWYgKCFhY3RpdmVEb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmln
YXRpb24uY3BwCmluZGV4IDMzOGMzODk5Mzg2MDQ5ZjdmZmQ2NzE2N2Q0YzM4ZGEwZGM4NzU5MzIu
LjYwMDdmYzc3YTc2M2VlYTEyZDcwNDdiNWRhNzZkMGE2YzhjMDc4OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBz
Y3JvbGxJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
bikKIHsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKICAgICBpZiAoY29udGFpbmVyLT5pc0RvY3Vt
ZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gc2Nyb2xsSW5EaXJlY3Rpb24oc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250YWluZXIpLT5mcmFtZSgpLCBkaXJlY3Rpb24pOworICAgICAgICByZXR1
cm4gc2Nyb2xsSW5EaXJlY3Rpb24odG9Eb2N1bWVudChjb250YWluZXIpLT5mcmFtZSgpLCBkaXJl
Y3Rpb24pOwogCiAgICAgaWYgKCFjb250YWluZXItPnJlbmRlckJveCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00NDAsNyArNDQwLDcgQEAgTm9kZSogc2Nyb2xsYWJsZUVuY2xvc2luZ0Jv
eE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWMKICAg
ICBOb2RlKiBwYXJlbnQgPSBub2RlOwogICAgIGRvIHsKICAgICAgICAgaWYgKHBhcmVudC0+aXNE
b2N1bWVudE5vZGUoKSkKLSAgICAgICAgICAgIHBhcmVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4ocGFyZW50KS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CisgICAgICAg
ICAgICBwYXJlbnQgPSB0b0RvY3VtZW50KHBhcmVudCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93
bmVyRWxlbWVudCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE5vZGUoKTsKICAgICB9IHdoaWxlIChwYXJlbnQgJiYgIWNhblNjcm9sbEluRGlyZWN0
aW9uKHBhcmVudCwgZGlyZWN0aW9uKSAmJiAhcGFyZW50LT5pc0RvY3VtZW50Tm9kZSgpKTsKQEAg
LTQ1Miw3ICs0NTIsNyBAQCBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IE5vZGUqIGNv
bnRhaW5lciwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChjb250YWlu
ZXIpOwogICAgIGlmIChjb250YWluZXItPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVy
biBjYW5TY3JvbGxJbkRpcmVjdGlvbihzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KGNvbnRh
aW5lciktPmZyYW1lKCksIGRpcmVjdGlvbik7CisgICAgICAgIHJldHVybiBjYW5TY3JvbGxJbkRp
cmVjdGlvbih0b0RvY3VtZW50KGNvbnRhaW5lciktPmZyYW1lKCksIGRpcmVjdGlvbik7CiAKICAg
ICBpZiAoIWlzU2Nyb2xsYWJsZU5vZGUoY29udGFpbmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNTIxLDcgKzUyMSw3IEBAIExheW91dFJlY3Qgbm9kZVJlY3RJbkFic29sdXRlQ29vcmRp
bmF0ZXMoTm9kZSogbm9kZSwgYm9vbCBpZ25vcmVCb3JkZXIpCiAgICAgQVNTRVJUKG5vZGUgJiYg
bm9kZS0+cmVuZGVyZXIoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+dmlldygpLT5uZWVkc0xheW91
dCgpKTsKIAogICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4g
ZnJhbWVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9k
ZSktPmZyYW1lKCkpOworICAgICAgICByZXR1cm4gZnJhbWVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5h
dGVzKHRvRG9jdW1lbnQobm9kZSktPmZyYW1lKCkpOwogICAgIExheW91dFJlY3QgcmVjdCA9IHJl
Y3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbm9kZS0+
Ym91bmRpbmdCb3goKSk7CiAKICAgICAvLyBGb3IgYXV0aG9ycyB0aGF0IHVzZSBib3JkZXIgaW5z
dGVhZCBvZiBvdXRsaW5lIGluIHRoZWlyIENTUywgd2UgY29tcGVuc2F0ZSBieSBpZ25vcmluZyB0
aGUgYm9yZGVyIHdoZW4gY2FsY3VsYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3Rt
ZW50LmNwcAppbmRleCBmNmNiYTI1MTU1ZTBjOGExNmZkNWE5NWY5Nzg1M2I1Y2Q4YzM2YzU2Li4y
NjYwN2Q0MTIwYmI0Zjk2MTcwN2QyY2RkYWYzYTkxZjY2YzQ1NWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGlubGlu
ZSBOb2RlKiBwYXJlbnRTaGFkb3dIb3N0T3JPd25lcihjb25zdCBOb2RlKiBub2RlKQogICAgIGlm
IChOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAg
ICAgcmV0dXJuIGFuY2VzdG9yOwogICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPihub2RlKS0+b3duZXJFbGVt
ZW50KCk7CisgICAgICAgIHJldHVybiB0b0RvY3VtZW50KG5vZGUpLT5vd25lckVsZW1lbnQoKTsK
ICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGUxOTY1NzI1MWQ0ODcwNzg3N2Jm
M2MzYmJiMTk3NDI2ZjE2NjE1ODMuLjhhODEwNTU3NzZjNDMxMjgzMGIzNTRiMDJlMDZmYmY0MjQ2
ZGVhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBhY2N1
bXVsYXRlRG9jdW1lbnRFdmVudFRhcmdldFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNv
bnN0IERvYwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRvdWNoVGFyZ2V0LT5pc0RvY3VtZW50
Tm9kZSgpICYmIHRvdWNoVGFyZ2V0ICE9IGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBhY2N1bXVs
YXRlRG9jdW1lbnRFdmVudFRhcmdldFJlY3RzKHJlY3RzLCBzdGF0aWNfY2FzdDxjb25zdCBEb2N1
bWVudCo+KHRvdWNoVGFyZ2V0KSk7CisgICAgICAgICAgICBhY2N1bXVsYXRlRG9jdW1lbnRFdmVu
dFRhcmdldFJlY3RzKHJlY3RzLCB0b0RvY3VtZW50KHRvdWNoVGFyZ2V0KSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKaW5kZXggYWE2YjAzNDYwOTgwNjVlYTEwNTJiMDVmZDE4ZDkxMTE2OTdjZjFhYi4uNzE5
NWU1MDJlMmFmMjZkNTg5NmRiNDQxZjgwNTljZjYxM2VkYmRiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIFJlbmRlclRleHQ6OlJl
bmRlclRleHQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHIpCiAgICAgLy8g
RklYTUU6IFNvbWUgY2xpZW50cyBvZiBSZW5kZXJUZXh0IChhbmQgc3ViY2xhc3NlcykgcGFzcyBE
b2N1bWVudCBhcyBub2RlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgcmVuZGVyZXIuCiAgICAgLy8gVGhl
eSBzaG91bGQgYmUgc3dpdGNoZWQgdG8gcGFzc2luZyBudWxsIGFuZCB1c2luZyBzZXREb2N1bWVu
dEZvckFub255bW91cy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQot
ICAgICAgICBzZXREb2N1bWVudEZvckFub255bW91cyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5v
ZGUpKTsKKyAgICAgICAgc2V0RG9jdW1lbnRGb3JBbm9ueW1vdXModG9Eb2N1bWVudChub2RlKSk7
CiAKICAgICBtX2lzQWxsQVNDSUkgPSBtX3RleHQuY29udGFpbnNPbmx5QVNDSUkoKTsKICAgICBt
X2NhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCA9IGNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBh
dGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApp
bmRleCAxMTkxZjYxNjFlZTMzM2FmNjcwNjZlODlhNDYwODM2ZDcyMmZkMmQ5Li5kM2Y4ZDc0NjBh
NzNiYTI4YTA1YzJlMGJlMDQwNTg0Y2RhYzllYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC04MjQsNyArODI0LDcgQEAgc3RhdGljIHZv
aWQgd3JpdGVTZWxlY3Rpb24oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCogbykK
ICAgICBpZiAoIW4gfHwgIW4tPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG4pOworICAgIERvY3Vt
ZW50KiBkb2MgPSB0b0RvY3VtZW50KG4pOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvYy0+ZnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dC5oCmluZGV4IGE2Mzc4NzIxOGU2ODFkYTE5MzdhMWE4MjBhZjliMWQwM2VlOGI3YmIuLjUyN2Vh
Yjg4YTVmYTM2M2ZkNGY3ZGQzZjJiMGEzZjJhZjc5NWE4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudC5oCkBAIC01OCw2ICs1OCwyMSBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV90cmFu
c2xhdGU7CiB9OwogCitpbmxpbmUgU1ZHRG9jdW1lbnQqIHRvU1ZHRG9jdW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1
bWVudCB8fCBkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHRG9jdW1lbnQqPihkb2N1bWVudCk7Cit9CisKK2lubGluZSBjb25zdCBTVkdEb2N1bWVu
dCogdG9TVkdEb2N1bWVudChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50IHx8IGRvY3VtZW50LT5pc1NWR0Rv
Y3VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTVkdEb2N1bWVudCo+KGRv
Y3VtZW50KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vz
c2FyeSBjYXN0Lgordm9pZCB0b1NWR0RvY3VtZW50KGNvbnN0IFNWR0RvY3VtZW50Kik7CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0MDEzNDg0NTMxNjZlYTdmNDQ5NDJl
YzhkNGIwMmUyN2EzNzM3YjBhLi4wYzhiYTQwMTJiNGRkNTdiMDQ4MTY0NjRjMDYxNzUyYmE1NDk0
MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
RG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZH
RWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKS0+
cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm47CiAg
ICAgUmVuZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1Jvb3Qocm9vdEVsZW1lbnQt
PnJlbmRlcmVyKCkpOwpAQCAtODQsNyArODQsNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpzaXplKCkg
Y29uc3QKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKICAgICBG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0VsZW1lbnQqIHJv
b3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSkt
PnJvb3RFbGVtZW50KCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0b1NWR0Rv
Y3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RF
bGVtZW50KQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCkBAIC0yMTMsNyArMjEzLDcgQEAg
UmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5t
YWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0
PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNW
R1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQo
KSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIHRvUmVuZGVyQm94KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKQEAg
LTIzMiw3ICsyMzIsNyBAQCBib29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1l
bnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHRvU1ZHRG9jdW1lbnQoZnJh
bWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJpbnNpY1dp
ZHRoKCkuaXNQZXJjZW50KCk7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFz
UmVsYXRpdmVIZWlnaHQoKSBjb25zdAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdT
VkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUt
PmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVt
ZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAg
ICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBy
b290RWxlbWVudC0+aW50cmluc2ljSGVpZ2h0KCkuaXNQZXJjZW50KCk7CkBAIC0yNTQsNyArMjU0
LDcgQEAgdm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBp
bnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW4KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuOwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1l
LT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxl
bWVudCA9IHRvU1ZHRG9jdW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjc0LDcgKzI3NCw3
IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJvb2wgLyogY2F0Y2hVcElmTmVjZXNz
YXJ5ICovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZy
YW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVu
dCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxl
bWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChm
cmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygpOwpA
QCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0b3BBbmltYXRpb24oKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5t
YWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0
PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAgIFNW
R1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQo
KSktPnJvb3RFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJu
OwogICAgIHJvb3RFbGVtZW50LT5wYXVzZUFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA2Y2IxNDY3NWQ0MWVmNDkwMzI0ZjkzOTNmM2E0YTZmNmRkOGZk
MDMzLi5kMTFjMzAzNjBhNjQ0NTNjYTQyNDAwMjdjNmI3ZmNlMGFmMjYzNDJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgSW50ZXJuYWxzOjpJ
bnRlcm5hbHMoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBEb2N1bWVudCogSW50ZXJuYWxzOjpjb250
ZXh0RG9jdW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIHRvRG9jdW1lbnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogRnJhbWUqIEludGVybmFsczo6ZnJhbWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
CmluZGV4IDA5ODFkYTg2NDA0YzY2OTE1MWU3MTNiMThhNDZkYzc4ZTRiZWFiYWIuLmIyZWY3Zjdj
MTFjMzQ4MDA5YzU0OWVhOTRjYjczYWUzNzA1NGI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9p
ZCBpbmplY3RJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmIChzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIGdsb2JhbE9iamVj
dC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBJbnRlcm5h
bHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIEludGVybmFsczo6Y3Jl
YXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29udGV4dCkpKSk7CisgICAgICAgIGds
b2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCBJbnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIEludGVy
bmFsczo6Y3JlYXRlKHRvRG9jdW1lbnQoc2NyaXB0Q29udGV4dCkpKSk7CiB9CiAKIHZvaWQgcmVz
ZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCkBAIC01NSw4ICs1NSw3IEBA
IHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdsb2JhbE9i
amVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgUGFnZSogcGFn
ZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29udGV4dCktPmZyYW1lKCktPnBhZ2Uo
KTsKKyAgICBQYWdlKiBwYWdlID0gdG9Eb2N1bWVudChzY3JpcHRDb250ZXh0KS0+ZnJhbWUoKS0+
cGFnZSgpOwogICAgIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShwYWdlKTsKICAg
ICBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKHBhZ2UpLT5yZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL3Y4L1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHAKaW5kZXggYjZjMDAxNDViZGI4MmE1NWFkOTQ2NmM5N2MwYzkzYjYyOTM0ZTUwYy4uNGYwMDZk
MWYwY2Y5MzRkYTg3YjhhNjNmZDE4ZWYxZjllMDQ0MzVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2
b2lkIGluamVjdEludGVybmFsc09iamVjdCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQp
CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkp
Ci0gICAgICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KEludGVybmFs
czo6aW50ZXJuYWxzSWQpLCB0b1Y4KEludGVybmFsczo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oc2NyaXB0Q29udGV4dCkpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIGNvbnRleHQt
PkdldElzb2xhdGUoKSkpOworICAgICAgICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0KHY4OjpTdHJp
bmc6Ok5ldyhJbnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9WOChJbnRlcm5hbHM6OmNyZWF0ZSh0
b0RvY3VtZW50KHNjcmlwdENvbnRleHQpKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBjb250
ZXh0LT5HZXRJc29sYXRlKCkpKTsKIH0KIAogdm9pZCByZXNldEludGVybmFsc09iamVjdCh2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCkBAIC01OSw4ICs1OSw3IEBAIHZvaWQgcmVzZXRJ
bnRlcm5hbHNPYmplY3Qodjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KQogICAgIHY4OjpI
YW5kbGVTY29wZSBzY29wZTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENv
bnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBQYWdl
KiBwYWdlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRDb250ZXh0KS0+ZnJhbWUoKS0+
cGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSB0b0RvY3VtZW50KHNjcmlwdENvbnRleHQpLT5mcmFt
ZSgpLT5wYWdlKCk7CiAgICAgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKHBhZ2Up
OwogICAgIEludGVybmFsU2V0dGluZ3M6OmZyb20ocGFnZSktPnJlc2V0VG9Db25zaXN0ZW50U3Rh
dGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCA1NTAwMDI1Nzlj
ZWI5OTJjN2UzYzc0Mzc1NGVkZGQ5NzQ1YjhhOGJjLi4wNWRiNTVhNjQxYjkxYzQzOTI3YWRhMTA0
OTAzMjI0OTVkNTU5Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xh
c3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBAIC0y
NTAsNyArMjUwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9jdW1lbnQ6
OlVSTCgKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAg
ICpyZXN1bHQgPSBCU3RyaW5nKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KG1fZG9jdW1lbnQp
LT51cmwoKSkucmVsZWFzZSgpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKHRvSFRNTERvY3VtZW50
KG1fZG9jdW1lbnQpLT51cmwoKSkucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09LOwogfQogICAg
IApAQCAtMjYxLDcgKzI2MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTERv
Y3VtZW50Ojpib2R5KAogICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9kb2N1bWVudC0+aXNIVE1M
RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIEhUTUxEb2N1bWVudCog
aHRtbERvYyA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KG1fZG9jdW1lbnQpOworICAgIEhU
TUxEb2N1bWVudCogaHRtbERvYyA9IHRvSFRNTERvY3VtZW50KG1fZG9jdW1lbnQpOwogICAgIENP
TVB0cjxJRE9NRWxlbWVudD4gZG9tRWxlbWVudDsKICAgICBkb21FbGVtZW50LmFkb3B0UmVmKERP
TUhUTUxFbGVtZW50OjpjcmVhdGVJbnN0YW5jZShodG1sRG9jLT5ib2R5KCkpKTsKICAgICBpZiAo
ZG9tRWxlbWVudCkKQEAgLTMwNCw3ICszMDQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxEb2N1bWVudDo6Zm9ybXMoCiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2RvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSFRN
TERvY3VtZW50KiBodG1sRG9jID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obV9kb2N1bWVu
dCk7CisgICAgSFRNTERvY3VtZW50KiBodG1sRG9jID0gdG9IVE1MRG9jdW1lbnQobV9kb2N1bWVu
dCk7CiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBmb3JtcyA9IGh0bWxEb2MtPmZvcm1zKCk7
CiAgICAgKmNvbGxlY3Rpb24gPSBET01IVE1MQ29sbGVjdGlvbjo6Y3JlYXRlSW5zdGFuY2UoZm9y
bXMuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVu
dC5tbQppbmRleCA5OWY1MTUwMjFkNGYxMjVlMzE0NmQwNjQ0MTZjNjBmMDYyMzU2ZGQ3Li5mMzU1
ZGE4YmY1Zjg5MzdiNDEwMzk3NmUwZmNjMTE5Yjc4MzRiMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01Eb2N1bWVudC5tbQpAQCAtMzQsMTIgKzM0LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogCi1zdGF0aWMgaW5saW5lIFdl
YkNvcmU6OkRvY3VtZW50KiB0b0RvY3VtZW50KFdlYkNvcmU6Ok5vZGUqIG5vZGUpCi17Ci0gICAg
QVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KG5vZGUpOwotfQotCiBAaW1wbGVtZW50YXRpb24g
V0tET01Eb2N1bWVudAogCiAtIChXS0RPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmlu
ZyAqKXRhZ05hbWUK
</data>

          </attachment>
      

    </bug>

</bugzilla>