<?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>227854</bug_id>
          
          <creation_ts>2021-07-10 15:00:31 -0700</creation_ts>
          <short_desc>[GTK] Propagate GtkSettings to web process</short_desc>
          <delta_ts>2021-07-21 12:01:41 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=228153</see_also>
          <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="Alice Mikhaylenko">alicem</reporter>
          <assigned_to name="Alice Mikhaylenko">alicem</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mkwst</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1776177</commentid>
    <comment_count>0</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-10 15:00:31 -0700</bug_when>
    <thetext>See the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776178</commentid>
    <comment_count>1</comment_count>
      <attachid>433275</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-10 15:02:20 -0700</bug_when>
    <thetext>Created attachment 433275
Patch

The amount of settings here makes me wonder if they should all be contained in a separate struct instead of passing each and every one separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776179</commentid>
    <comment_count>2</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-10 15:03:28 -0700</bug_when>
    <thetext>And the reason I made scrollSettingsDidChange() even though it only contains one property is, it will contain another one in future - gtk-overlay-scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776180</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-07-10 15:03:33 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776182</commentid>
    <comment_count>4</comment_count>
      <attachid>433276</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-10 15:06:16 -0700</bug_when>
    <thetext>Created attachment 433276
Patch

Looks like the style checker took the list of properties as a list of changed files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776215</commentid>
    <comment_count>5</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-11 08:52:52 -0700</bug_when>
    <thetext>This fails with PSON.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776218</commentid>
    <comment_count>6</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-11 10:24:52 -0700</bug_when>
    <thetext>Ok, so we need to do the same thing in reinitializeWebPage().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777455</commentid>
    <comment_count>7</comment_count>
      <attachid>433662</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-16 00:35:53 -0700</bug_when>
    <thetext>Created attachment 433662
Patch

The code duplication in WebPage.cpp makes me wonder if we should pass the parameters into platformInitialize() and platformReinitialize(), and contain this all in WebPageGtk.cpp in a shared function instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777864</commentid>
    <comment_count>8</comment_count>
      <attachid>433788</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-19 07:41:08 -0700</bug_when>
    <thetext>Created attachment 433788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777865</commentid>
    <comment_count>9</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-19 07:41:43 -0700</bug_when>
    <thetext>Reworked as discussed in Matrix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777879</commentid>
    <comment_count>10</comment_count>
      <attachid>433788</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-19 09:21:34 -0700</bug_when>
    <thetext>Comment on attachment 433788
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777899</commentid>
    <comment_count>11</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-19 10:45:58 -0700</bug_when>
    <thetext>Ah yeah, back to the forgetting `--request-commit` in `webkit-patch upload`. :) Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778111</commentid>
    <comment_count>12</comment_count>
      <attachid>433788</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-20 01:23:32 -0700</bug_when>
    <thetext>Comment on attachment 433788
Patch

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

Looks great, thank you!

&gt; Source/WebKit/Shared/gtk/GtkSettingsState.h:38
&gt; +    GtkSettingsState();

I guess you can do = default here and remove the empty implementation from the cpp?

&gt; Source/WebKit/UIProcess/gtk/GtkSettingsManager.cpp:171
&gt; +    , m_settingsState(GtkSettingsState())

This is not needed, right?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:736
&gt; -    themeDidChange(WTFMove(parameters.themeName));
&gt; +    GtkSettingsManagerProxy::singleton().applySettings(parameters.gtkSettings);

You can WTFMove here.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:973
&gt; +#if PLATFORM(GTK)
&gt; +    GtkSettingsManagerProxy::singleton().applySettings(parameters.gtkSettings);
&gt; +#endif

And here

&gt; Source/WebKit/WebProcess/gtk/GtkSettingsManagerProxy.cpp:50
&gt; +    applySettings(state);

And move here as well

&gt; Source/WebKit/WebProcess/gtk/GtkSettingsManagerProxy.cpp:53
&gt; +void GtkSettingsManagerProxy::applySettings(GtkSettingsState&amp; state)

And make this receive a GtkSettingsState&amp;&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778120</commentid>
    <comment_count>13</comment_count>
      <attachid>433860</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-07-20 02:07:18 -0700</bug_when>
    <thetext>Created attachment 433860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778142</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-20 04:08:09 -0700</bug_when>
    <thetext>Committed r280077 (239803@main): &lt;https://commits.webkit.org/239803@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433860.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778481</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-07-21 12:01:41 -0700</bug_when>
    <thetext>(In reply to EWS from comment #14)
&gt; Committed r280077 (239803@main): &lt;https://commits.webkit.org/239803@main&gt;
&gt; 
&gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; attachment 433860 [details].

This caused 155 new unexpected test failures on GTK, see bug 228153</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433275</attachid>
            <date>2021-07-10 15:02:20 -0700</date>
            <delta_ts>2021-07-10 15:06:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>27583</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA0YTlkZTA3NzNiMjViMjUzMDNlY2E0YzJiMmNlMDMxYjcyOWYyOTlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogU3VuLCAxMSBKdWwgMjAyMSAwMjo1OToxMSArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICB8IDcxICsrKysrKysrKysrKysrKysKIC4uLi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAgICAgICB8IDI3ICsrKysrKwogLi4uL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oIHwgIDkgKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAgICAgICB8IDYzICsrKysrKysrKysrKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggfCAgOSArKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcCAgIHwgODMgKysrKysrKysrKysrKysrLS0tLQogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgIDkgKysKIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAgICB8ICA5ICsrCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgNSArKwogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgNDMgKysrKysrKysrKwogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgIHwgIDUgKysKIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8IDEzICsrKwogLi4uL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwgIDQgKwogLi4uL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgICAgIHwgNTggKysrKysrKysrKysrKwogMTQgZmls
ZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNTNjYmFmZDljZmZlLi45OTI4MGRkYTE1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAK
KzIwMjEtMDctMTAgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBQcm9wYWdhdGUgR3RrU2V0dGluZ3MgdG8gd2ViIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlJ3MgYSBudW1i
ZXIgb2YgcHJvcGVydGllcyBpbiBHdGtTZXR0aW5ncyB0aGF0IHdlYiBwcm9jZXNzIHVzZXM6CisK
KyAgICAgICAgKiBndGstY3Vyc29yLWJsaW5rCisgICAgICAgICogZ3RrLWN1cnNvci1ibGluay10
aW1lCisgICAgICAgICogZ3RrLWZvbnQtbmFtZQorICAgICAgICAqIGd0ay1wcmltYXJ5LWJ1dHRv
bi13YXJwcy1zbGlkZXIKKyAgICAgICAgKiBndGstdGhlbWUtbmFtZQorICAgICAgICAqIGd0ay14
ZnQtYW50aWFsaWFzCisgICAgICAgICogZ3RrLXhmdC1kcGkKKyAgICAgICAgKiBndGsteGZ0LWhp
bnRpbmcKKyAgICAgICAgKiBndGsteGZ0LWhpbnRzdHlsZQorICAgICAgICAqIGd0ay14ZnQtcmdi
YQorCisgICAgICAgIFdoaWxlIHdlIGRvIHByb3BhZ2F0ZSBndGstdGhlbWUtbmFtZSwgd2UgZG9u
J3QgZG8gaXQgZm9yIGFueSBvZiB0aGUgb3RoZXIgc2V0dGluZ3MuCisgICAgICAgIFRoaXMgbWVh
bnMgdGhhdCB0aGV5IGNhbiBvbmx5IGJlIGZldGNoZWQgZnJvbSB4c2V0dGluZ3MvZ3NldHRpbmdz
L3NldHRpbmdzIHBvcnRhbAorICAgICAgICBieSBHVEsgaXRzZWxmLCBidXQgaWYgdGhlIGFwcCBj
aGFuZ2VzIHRoZW0gb3IgaWYgdGhleSBhcmUgY2hhbmdlZCBmcm9tIGluc3BlY3RvciwKKyAgICAg
ICAgd2ViIHByb2Nlc3Mgd29uJ3Qgc2VlIHRoYXQuCisKKyAgICAgICAgQ2xlYW4gdXAgYSBmZXcg
b2RkaXRpZXMgaW4gV2ViS2l0V2ViVmlld0Jhc2UgYWxvbmcgdGhlIHdheS4KKworICAgICAgICAq
IFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRl
ZmF1bHRGb250TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp4
ZnRBbnRpYWxpYXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6eGZ0
SGludGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp4ZnRIaW50
U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6eGZ0UkdCQSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp4ZnREUEkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Vyc29yQmxpbmsgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Vyc29yQmxpbmtUaW1lIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByaW1hcnlCdXR0b25XYXJwc1NsaWRlciBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAg
ICh0aGVtZUNoYW5nZWQpOgorICAgICAgICAoYXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVDaGFu
Z2VkKToKKyAgICAgICAgKGRlZmF1bHRGb250Q2hhbmdlZCk6CisgICAgICAgIChmb250U2V0dGlu
Z3NDaGFuZ2VkKToKKyAgICAgICAgKGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAg
ICAgKHNjcm9sbFNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvcGxldmVsT25TY3JlZW5XaW5kb3cpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSb290
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVW5yb290KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWZh
dWx0Rm9udERpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9udFNl
dHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjdXJzb3JC
bGlua1NldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
Y3JvbGxTZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRlZmF1
bHRGb250RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9udFNldHRpbmdz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3Vyc29yQmxpbmtTZXR0aW5n
c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjcm9sbFNldHRpbmdzRGlk
Q2hhbmdlKToKKwogMjAyMS0wNy0wOCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25v
bWUub3JnPgogCiAgICAgICAgIFtHVEtdIENhbid0IGNsaWNrIGxpbmtzIHdpdGggdG91Y2hzY3Jl
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggMmJhZWYwNmNhY2FiLi5iZjY0Y2VhZjY2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNzksNiAr
MTc5LDE1IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVyIDw8
IHRoZW1lTmFtZTsKKyAgICBlbmNvZGVyIDw8IGRlZmF1bHRGb250TmFtZTsKKyAgICBlbmNvZGVy
IDw8IHhmdEFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IHhmdEhpbnRpbmc7CisgICAgZW5jb2Rl
ciA8PCB4ZnRIaW50U3R5bGU7CisgICAgZW5jb2RlciA8PCB4ZnRSR0JBOworICAgIGVuY29kZXIg
PDwgeGZ0RFBJOworICAgIGVuY29kZXIgPDwgY3Vyc29yQmxpbms7CisgICAgZW5jb2RlciA8PCBj
dXJzb3JCbGlua1RpbWU7CisgICAgZW5jb2RlciA8PCBwcmltYXJ5QnV0dG9uV2FycHNTbGlkZXI7
CiAjZW5kaWYKICAgICAKICAgICBlbmNvZGVyIDw8IGh0dHBzVXBncmFkZUVuYWJsZWQ7CkBAIC01
OTMsNiArNjAyLDI0IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50aGVtZU5hbWUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5kZWZhdWx0Rm9udE5hbWUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy54ZnRBbnRpYWxpYXMpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy54ZnRI
aW50aW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMueGZ0SGludFN0eWxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMueGZ0UkdCQSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnhmdERQSSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmN1cnNvckJsaW5rKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY3Vyc29yQmxpbmtU
aW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMucHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmh0dHBzVXBncmFkZUVuYWJsZWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDY1MTc4OTIyMTJjMi4uMDc5MWYxNmE2Mjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCkBAIC0yNDksNiArMjQ5LDE1IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgdGhlbWVOYW1lOworICAgIFN0cmlu
ZyBkZWZhdWx0Rm9udE5hbWU7CisgICAgaW50IHhmdEFudGlhbGlhczsKKyAgICBpbnQgeGZ0SGlu
dGluZzsKKyAgICBTdHJpbmcgeGZ0SGludFN0eWxlOworICAgIFN0cmluZyB4ZnRSR0JBOworICAg
IGludCB4ZnREUEk7CisgICAgYm9vbCBjdXJzb3JCbGluazsKKyAgICBpbnQgY3Vyc29yQmxpbmtU
aW1lOworICAgIGJvb2wgcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyOwogI2VuZGlmCiAgICAgCiAg
ICAgYm9vbCBodHRwc1VwZ3JhZGVFbmFibGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAyMGU4OGQzODE0
MGIuLjc2YmI5MDZmNmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTYwNiw2ICs2MDYsNjkgQEAgU3RyaW5nIFBhZ2VD
bGllbnRJbXBsOjp0aGVtZU5hbWUoKSBjb25zdAogICAgIHJldHVybiBuYW1lOwogfQogCitTdHJp
bmcgUGFnZUNsaWVudEltcGw6OmRlZmF1bHRGb250TmFtZSgpIGNvbnN0Cit7CisgICAgR1VuaXF1
ZU91dFB0cjxjaGFyPiBmb250TmFtZVNldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KGd0a193aWRn
ZXRfZ2V0X3NldHRpbmdzKG1fdmlld1dpZGdldCksICJndGstZm9udC1uYW1lIiwgJmZvbnROYW1l
U2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
Zm9udE5hbWVTZXR0aW5nLmdldCgpKTsKK30KKworaW50IFBhZ2VDbGllbnRJbXBsOjp4ZnRBbnRp
YWxpYXMoKSBjb25zdAoreworICAgIGludCBhbnRpYWxpYXNTZXR0aW5nOworICAgIGdfb2JqZWN0
X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLXhmdC1hbnRp
YWxpYXMiLCAmYW50aWFsaWFzU2V0dGluZywgbnVsbHB0cik7CisgICAgcmV0dXJuIGFudGlhbGlh
c1NldHRpbmc7Cit9CisKK2ludCBQYWdlQ2xpZW50SW1wbDo6eGZ0SGludGluZygpIGNvbnN0Cit7
CisgICAgaW50IGhpbnRpbmdTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dl
dF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLXhmdC1oaW50aW5nIiwgJmhpbnRpbmdTZXR0
aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gaGludGluZ1NldHRpbmc7Cit9CisKK1N0cmluZyBQ
YWdlQ2xpZW50SW1wbDo6eGZ0SGludFN0eWxlKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlT3V0UHRy
PGNoYXI+IGhpbnRTdHlsZVNldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KGd0a193aWRnZXRfZ2V0
X3NldHRpbmdzKG1fdmlld1dpZGdldCksICJndGsteGZ0LWhpbnRzdHlsZSIsICZoaW50U3R5bGVT
ZXR0aW5nLm91dFB0cigpLCBudWxscHRyKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCho
aW50U3R5bGVTZXR0aW5nLmdldCgpKTsKK30KKworU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjp4ZnRS
R0JBKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IHJnYmFTZXR0aW5nOworICAg
IGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3Rr
LXhmdC1yZ2JhIiwgJnJnYmFTZXR0aW5nLm91dFB0cigpLCBudWxscHRyKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChyZ2JhU2V0dGluZy5nZXQoKSk7Cit9CisKK2ludCBQYWdlQ2xpZW50
SW1wbDo6eGZ0RFBJKCkgY29uc3QKK3sKKyAgICBpbnQgZHBpU2V0dGluZzsKKyAgICBnX29iamVj
dF9nZXQoZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MobV92aWV3V2lkZ2V0KSwgImd0ay14ZnQtZHBp
IiwgJmRwaVNldHRpbmcsIG51bGxwdHIpOworICAgIHJldHVybiBkcGlTZXR0aW5nOworfQorCiti
b29sIFBhZ2VDbGllbnRJbXBsOjpjdXJzb3JCbGluaygpIGNvbnN0Cit7CisgICAgZ2Jvb2xlYW4g
Y3Vyc29yQmxpbmtTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0
aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLWN1cnNvci1ibGluayIsICZjdXJzb3JCbGlua1NldHRp
bmcsIG51bGxwdHIpOworICAgIHJldHVybiBjdXJzb3JCbGlua1NldHRpbmcgPyB0cnVlIDogZmFs
c2U7Cit9CisKK2ludCBQYWdlQ2xpZW50SW1wbDo6Y3Vyc29yQmxpbmtUaW1lKCkgY29uc3QKK3sK
KyAgICBpbnQgY3Vyc29yQmxpbmtUaW1lU2V0dGluZzsKKyAgICBnX29iamVjdF9nZXQoZ3RrX3dp
ZGdldF9nZXRfc2V0dGluZ3MobV92aWV3V2lkZ2V0KSwgImd0ay1jdXJzb3ItYmxpbmstdGltZSIs
ICZjdXJzb3JCbGlua1RpbWVTZXR0aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gY3Vyc29yQmxp
bmtUaW1lU2V0dGluZzsKK30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6cHJpbWFyeUJ1dHRvbldh
cnBzU2xpZGVyKCkgY29uc3QKK3sKKyAgICBnYm9vbGVhbiBidXR0b25TZXR0aW5nOworICAgIGdf
b2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLXBy
aW1hcnktYnV0dG9uLXdhcnBzLXNsaWRlciIsICZidXR0b25TZXR0aW5nLCBudWxscHRyKTsKKyAg
ICByZXR1cm4gYnV0dG9uU2V0dGluZyA/IHRydWUgOiBmYWxzZTsKK30KKwogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6bWFrZVZpZXdCbGFuayhib29sIG1ha2VCbGFuaykKIHsKICAgICB3ZWJraXRXZWJW
aWV3QmFzZU1ha2VCbGFuayhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBtYWtl
QmxhbmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oCmluZGV4IDU2ZjU5NGZhYTZiNi4uMmRjZDE3MDZkODBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xNzYsNiArMTc2
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQYWdlSUQoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFN0cmluZyB0aGVtZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJp
bmcgZGVmYXVsdEZvbnROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHhmdEFudGlhbGlh
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCB4ZnRIaW50aW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgU3RyaW5nIHhmdEhpbnRTdHlsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB4
ZnRSR0JBKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHhmdERQSSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgY3Vyc29yQmxpbmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgY3Vyc29y
QmxpbmtUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwcmltYXJ5QnV0dG9uV2FycHNT
bGlkZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbWFrZVZpZXdCbGFuayhib29sKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA4YjUyZjMxNzNjMGQuLmUyYWQ0ZTQzMTI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSB7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQgeyAwIH07
CiAgICAgdW5zaWduZWQgbG9uZyB0aGVtZUNoYW5nZWRJRCB7IDAgfTsKICAgICB1bnNpZ25lZCBs
b25nIGFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQgeyAwIH07CisgICAgdW5zaWduZWQgbG9u
ZyBkZWZhdWx0Rm9udENoYW5nZWRJRCB7IDAgfTsKIAogICAgIC8vIFZpZXcgU3RhdGUuCiAgICAg
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGU7CkBAIC0zNTMsNiAr
MzU0LDM3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rp
dml0eVN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWCiAgICAgcHJpdi0+dXBkYXRlQWN0aXZp
dHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCisKK3N0YXRpYyB2b2lkIHRoZW1l
Q2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmlld0Jh
c2UtPnByaXYtPnBhZ2VQcm94eS0+dGhlbWVEaWRDaGFuZ2UoKTsKK30KKworc3RhdGljIHZvaWQg
YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSkKK3sKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5lZmZlY3RpdmVB
cHBlYXJhbmNlRGlkQ2hhbmdlKCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlZmF1bHRGb250Q2hhbmdl
ZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmlld0Jhc2UtPnBy
aXYtPnBhZ2VQcm94eS0+ZGVmYXVsdEZvbnREaWRDaGFuZ2UoKTsKK30KKworc3RhdGljIHZvaWQg
Zm9udFNldHRpbmdzQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSAqd2ViVmlld0Jhc2UpCit7Cisg
ICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+Zm9udFNldHRpbmdzRGlkQ2hhbmdlKCk7
Cit9CisKK3N0YXRpYyB2b2lkIGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKFdlYktpdFdlYlZp
ZXdCYXNlICp3ZWJWaWV3QmFzZSkKK3sKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5
LT5jdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHNjcm9s
bFNldHRpbmdzQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSAqd2ViVmlld0Jhc2UpCit7CisgICAg
d2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+c2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2UoKTsK
K30KKwogI2lmICFVU0UoR1RLNCkKIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3Vz
SW5FdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyosIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSkKIHsKQEAgLTQwMSwxNiArNDMzLDYgQEAgc3RhdGljIGdib29sZWFu
IHRvcGxldmVsV2luZG93U3RhdGVFdmVudChHdGtXaWRnZXQqLCBHZGtFdmVudFdpbmRvd1N0YXRl
KiBldmVudCwKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHRoZW1lQ2hhbmdl
ZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCi17Ci0gICAgd2ViVmlld0Jhc2UtPnBy
aXYtPnBhZ2VQcm94eS0+dGhlbWVEaWRDaGFuZ2UoKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbGlj
YXRpb25QcmVmZXJEYXJrVGhlbWVDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSkKLXsKLSAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5lZmZlY3RpdmVBcHBlYXJh
bmNlRGlkQ2hhbmdlKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRvcGxldmVsV2luZG93UmVhbGl6ZWQo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewogICAgIGd0a193aWRnZXRfcmVhbGl6
ZShHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CkBAIC00NDQsNyArNDY2LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWUKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHByaXYt
PnRvcGxldmVsT25TY3JlZW5XaW5kb3csIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCk7
CiAgICAgICAgIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IDA7CiAgICAgfQotICAg
IGlmIChwcml2LT50aGVtZUNoYW5nZWRJRCB8fCBwcml2LT5hcHBsaWNhdGlvblByZWZlckRhcmtU
aGVtZUlEKSB7CisgICAgaWYgKHByaXYtPnRoZW1lQ2hhbmdlZElEIHx8IHByaXYtPmFwcGxpY2F0
aW9uUHJlZmVyRGFya1RoZW1lSUQgfHwgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQpIHsKICAg
ICAgICAgYXV0byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VU
KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICAgICAgaWYgKHByaXYtPnRoZW1l
Q2hhbmdlZElEKSB7CiAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qoc2V0
dGluZ3MsIHByaXYtPnRoZW1lQ2hhbmdlZElEKTsKQEAgLTQ1NCw2ICs0NzYsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWUKICAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChzZXR0aW5ncywgcHJpdi0+YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCk7CiAgICAgICAg
ICAgICBwcml2LT5hcHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUlEID0gMDsKICAgICAgICAgfQor
ICAgICAgICBpZiAocHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQpIHsKKyAgICAgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChzZXR0aW5ncywgcHJpdi0+ZGVmYXVsdEZvbnRDaGFu
Z2VkSUQpOworICAgICAgICAgICAgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQgPSAwOworICAg
ICAgICB9CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0
aW5ncywgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oZm9udFNldHRpbmdzQ2hhbmdlZCksIHdl
YlZpZXdCYXNlKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihjdXJzb3JCbGlua1NldHRpbmdz
Q2hhbmdlZCksIHdlYlZpZXdCYXNlKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29u
bmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihzY3JvbGxT
ZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7CiAgICAgfQogCiAgICAgcHJpdi0+dG9wbGV2
ZWxPblNjcmVlbldpbmRvdyA9IHdpbmRvdzsKQEAgLTQ4OCw2ICs1MTcsMTYgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWUKICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdz
LCAibm90aWZ5OjpndGstdGhlbWUtbmFtZSIsIEdfQ0FMTEJBQ0sodGhlbWVDaGFuZ2VkKSwgd2Vi
Vmlld0Jhc2UpOwogICAgIHByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQgPQogICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1hcHBs
aWNhdGlvbi1wcmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJBQ0soYXBwbGljYXRpb25QcmVmZXJE
YXJrVGhlbWVDaGFuZ2VkKSwgd2ViVmlld0Jhc2UpOworICAgIHByaXYtPmRlZmF1bHRGb250Q2hh
bmdlZElEID0KKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90
aWZ5OjpndGstZm9udC1uYW1lIiwgR19DQUxMQkFDSyhkZWZhdWx0Rm9udENoYW5nZWQpLCB3ZWJW
aWV3QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5
OjpndGsteGZ0LWFudGlhbGlhcyIsIEdfQ0FMTEJBQ0soZm9udFNldHRpbmdzQ2hhbmdlZCksIHdl
YlZpZXdCYXNlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3Rp
Znk6Omd0ay14ZnQtZHBpIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2ViVmll
d0Jhc2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6
Z3RrLXhmdC1oaW50aW5nIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2ViVmll
d0Jhc2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6
Z3RrLXhmdC1oaW50c3R5bGUiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3ZWJW
aWV3QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5
OjpndGsteGZ0LXJnYmEiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3
QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5Ojpn
dGstY3Vyc29yLWJsaW5rIiwgR19DQUxMQkFDSyhjdXJzb3JCbGlua1NldHRpbmdzQ2hhbmdlZCks
IHdlYlZpZXdCYXNlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJu
b3RpZnk6Omd0ay1jdXJzb3ItYmxpbmstdGltZSIsIEdfQ0FMTEJBQ0soY3Vyc29yQmxpbmtTZXR0
aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KHNldHRpbmdzLCAibm90aWZ5OjpndGstcHJpbWFyeS1idXR0b24td2FycHMtc2xpZGVyIiwgR19D
QUxMQkFDSyhzY3JvbGxTZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7CiAKICAgICBpZiAo
Z3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQoR1RLX1dJREdFVCh3aW5kb3cpKSkKICAgICAgICAgZ3Rr
X3dpZGdldF9yZWFsaXplKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKQEAgLTE3ODUsMTMgKzE4
MjQsMTkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSb290KEd0a1dpZGdldCogd2lk
Z2V0KQogCiAgICAgYXV0byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtf
V0lER0VUKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICBwcml2LT50aGVtZUNo
YW5nZWRJRCA9Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5v
dGlmeTo6Z3RrLXRoZW1lLW5hbWUiLCBHX0NBTExCQUNLKCtbXShXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UpIHsKLSAgICAgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHkt
PnRoZW1lRGlkQ2hhbmdlKCk7Ci0gICAgICAgIH0pLCB3aWRnZXQpOworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay10aGVtZS1uYW1lIiwgR19D
QUxMQkFDSyh0aGVtZUNoYW5nZWQpLCB3aWRnZXQpOwogICAgIHByaXYtPmFwcGxpY2F0aW9uUHJl
ZmVyRGFya1RoZW1lSUQgPQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGlu
Z3MsICJub3RpZnk6Omd0ay1hcHBsaWNhdGlvbi1wcmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJB
Q0soK1tdKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkgewotICAgICAgICAgICAgd2Vi
Vmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgp
OwotICAgICAgICB9KSwgd2lkZ2V0KTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KHNldHRpbmdzLCAibm90aWZ5OjpndGstYXBwbGljYXRpb24tcHJlZmVyLWRhcmstdGhlbWUiLCBH
X0NBTExCQUNLKGFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lQ2hhbmdlZCksIHdpZGdldCk7Cisg
ICAgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQgPQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1mb250LW5hbWUiLCBHX0NBTExCQUNLKGRl
ZmF1bHRGb250Q2hhbmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KHNldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0LWFudGlhbGlhcyIsIEdfQ0FMTEJBQ0soZm9udFNl
dHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNl
dHRpbmdzLCAibm90aWZ5OjpndGsteGZ0LWRwaSIsIEdfQ0FMTEJBQ0soZm9udFNldHRpbmdzQ2hh
bmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAi
bm90aWZ5OjpndGsteGZ0LWhpbnRpbmciLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQp
LCB3aWRnZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlm
eTo6Z3RrLXhmdC1oaW50c3R5bGUiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3
aWRnZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6
Z3RrLXhmdC1yZ2JhIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0KTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1jdXJz
b3ItYmxpbmsiLCBHX0NBTExCQUNLKGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1j
dXJzb3ItYmxpbmstdGltZSIsIEdfQ0FMTEJBQ0soY3Vyc29yQmxpbmtTZXR0aW5nc0NoYW5nZWQp
LCB3aWRnZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlm
eTo6Z3RrLXByaW1hcnktYnV0dG9uLXdhcnBzLXNsaWRlciIsIEdfQ0FMTEJBQ0soc2Nyb2xsU2V0
dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VVbnJvb3QoR3RrV2lkZ2V0KiB3aWRnZXQpCkBAIC0xODA4LDYgKzE4NTMsMTAgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbnJvb3QoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgYXV0
byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHByaXYtPnRv
cGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2
LT50aGVtZUNoYW5nZWRJRCwgc2V0dGluZ3MpOwogICAgIGdfY2xlYXJfc2lnbmFsX2hhbmRsZXIo
JnByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQsIHNldHRpbmdzKTsKKyAgICBnX2Ns
ZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2LT5kZWZhdWx0Rm9udENoYW5nZWRJRCwgc2V0dGluZ3Mp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0aW5ncywgcmVp
bnRlcnByZXRfY2FzdDxncG9pbnRlcj4oZm9udFNldHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7Cisg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVy
cHJldF9jYXN0PGdwb2ludGVyPihjdXJzb3JCbGlua1NldHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7
CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWlu
dGVycHJldF9jYXN0PGdwb2ludGVyPihzY3JvbGxTZXR0aW5nc0NoYW5nZWQpLCB3aWRnZXQpOwog
ICAgIHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cgPSBudWxscHRyOwogCiAgICAgT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggMDhjYzI4OTAzOTkyLi5mNzk2MWVlNGUyMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTYyNiw2ICs2MjYsMTUgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgU3RyaW5nIHRoZW1lTmFtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkZWZhdWx0Rm9udE5hbWUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBpbnQgeGZ0QW50aWFsaWFzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IHhmdEhpbnRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgeGZ0SGludFN0eWxl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHhmdFJHQkEoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBpbnQgeGZ0RFBJKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjdXJz
b3JCbGluaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBjdXJzb3JCbGlua1RpbWUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcigpIGNv
bnN0ID0gMDsKICNlbmRpZgogCiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA1OWIwZTg0MGJkZTguLmE3YzkzN2U5MmFlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MjEwLDYgKzgyMTAsMTUgQEAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9j
ZXNzUHJveHkmIHByb2MKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBwYXJhbWV0ZXJzLnRoZW1l
TmFtZSA9IHBhZ2VDbGllbnQoKS50aGVtZU5hbWUoKTsKKyAgICBwYXJhbWV0ZXJzLmRlZmF1bHRG
b250TmFtZSA9IHBhZ2VDbGllbnQoKS5kZWZhdWx0Rm9udE5hbWUoKTsKKyAgICBwYXJhbWV0ZXJz
LnhmdEFudGlhbGlhcyA9IHBhZ2VDbGllbnQoKS54ZnRBbnRpYWxpYXMoKTsKKyAgICBwYXJhbWV0
ZXJzLnhmdEhpbnRpbmcgPSBwYWdlQ2xpZW50KCkueGZ0SGludGluZygpOworICAgIHBhcmFtZXRl
cnMueGZ0SGludFN0eWxlID0gcGFnZUNsaWVudCgpLnhmdEhpbnRTdHlsZSgpOworICAgIHBhcmFt
ZXRlcnMueGZ0UkdCQSA9IHBhZ2VDbGllbnQoKS54ZnRSR0JBKCk7CisgICAgcGFyYW1ldGVycy54
ZnREUEkgPSBwYWdlQ2xpZW50KCkueGZ0RFBJKCk7CisgICAgcGFyYW1ldGVycy5jdXJzb3JCbGlu
ayA9IHBhZ2VDbGllbnQoKS5jdXJzb3JCbGluaygpOworICAgIHBhcmFtZXRlcnMuY3Vyc29yQmxp
bmtUaW1lID0gcGFnZUNsaWVudCgpLmN1cnNvckJsaW5rVGltZSgpOworICAgIHBhcmFtZXRlcnMu
cHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyID0gcGFnZUNsaWVudCgpLnByaW1hcnlCdXR0b25XYXJw
c1NsaWRlcigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKSAmJiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZDFhNWZjMzhlYTdjLi45N2ExZGYzZjkyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC05NjIsNyArOTYyLDEyIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShHVEsp
CiAgICAgUGxhdGZvcm1WaWV3V2lkZ2V0IHZpZXdXaWRnZXQoKTsKICAgICBib29sIG1ha2VHTENv
bnRleHRDdXJyZW50KCk7CisKICAgICB2b2lkIHRoZW1lRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBk
ZWZhdWx0Rm9udERpZENoYW5nZSgpOworICAgIHZvaWQgZm9udFNldHRpbmdzRGlkQ2hhbmdlKCk7
CisgICAgdm9pZCBjdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBzY3Jv
bGxTZXR0aW5nc0RpZENoYW5nZSgpOwogI2VuZGlmCiAKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
Z3JvdW5kQ29sb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKaW5kZXggMWE3ZmE2Yjc1ZWMyLi5hZGQ5Y2QzMTc3NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0xMDYsNCAr
MTA2LDQ3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0aGVtZURpZENoYW5nZSgpCiAgICAgZWZmZWN0
aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVmYXVs
dEZvbnREaWRDaGFuZ2UoKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGVmYXVsdEZvbnREaWRD
aGFuZ2UocGFnZUNsaWVudCgpLmRlZmF1bHRGb250TmFtZSgpKSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpmb250U2V0dGluZ3NEaWRDaGFuZ2UoKQoreworICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGFudGlhbGlhcyA9IHBhZ2VDbGll
bnQoKS54ZnRBbnRpYWxpYXMoKTsKKyAgICBpbnQgaGludGluZyA9IHBhZ2VDbGllbnQoKS54ZnRI
aW50aW5nKCk7CisgICAgU3RyaW5nIGhpbnRTdHlsZSA9IHBhZ2VDbGllbnQoKS54ZnRIaW50U3R5
bGUoKTsKKyAgICBTdHJpbmcgcmdiYSA9IHBhZ2VDbGllbnQoKS54ZnRSR0JBKCk7CisgICAgaW50
IGRwaSA9IHBhZ2VDbGllbnQoKS54ZnREUEkoKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZvbnRTZXR0aW5nc0RpZENoYW5nZShhbnRpYWxpYXMsIGhpbnRpbmcsIGhpbnRTdHlsZSwg
cmdiYSwgZHBpKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjdXJzb3JCbGlua1NldHRpbmdz
RGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGJvb2wgY3Vyc29yQmxpbmsgPSBwYWdlQ2xpZW50KCkuY3Vyc29yQmxpbmso
KTsKKyAgICBpbnQgY3Vyc29yQmxpbmtUaW1lID0gcGFnZUNsaWVudCgpLmN1cnNvckJsaW5rVGlt
ZSgpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3Vyc29yQmxpbmtTZXR0aW5nc0Rp
ZENoYW5nZShjdXJzb3JCbGluaywgY3Vyc29yQmxpbmtUaW1lKSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzY3JvbGxTZXR0aW5nc0RpZENoYW5nZSgpCit7CisgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIHByaW1hcnlCdXR0b25XYXJw
c1NsaWRlciA9IHBhZ2VDbGllbnQoKS5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIoKTsKKworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbFNldHRpbmdzRGlkQ2hhbmdlKHByaW1hcnlC
dXR0b25XYXJwc1NsaWRlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTZkZDIzMWM4MDY2
Li4yNTMwMmFkNzU1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC03MzMsNiArNzMzLDExIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAog
I2lmIFBMQVRGT1JNKEdUSykKICAgICB0aGVtZURpZENoYW5nZShXVEZNb3ZlKHBhcmFtZXRlcnMu
dGhlbWVOYW1lKSk7CisgICAgZGVmYXVsdEZvbnREaWRDaGFuZ2UoV1RGTW92ZShwYXJhbWV0ZXJz
LmRlZmF1bHRGb250TmFtZSkpOworICAgIGZvbnRTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0ZXJz
LnhmdEFudGlhbGlhcywgcGFyYW1ldGVycy54ZnRIaW50aW5nLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
eGZ0SGludFN0eWxlKSwKKyAgICAgICAgV1RGTW92ZShwYXJhbWV0ZXJzLnhmdFJHQkEpLCBwYXJh
bWV0ZXJzLnhmdERQSSk7CisgICAgY3Vyc29yQmxpbmtTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0
ZXJzLmN1cnNvckJsaW5rLCBwYXJhbWV0ZXJzLmN1cnNvckJsaW5rVGltZSk7CisgICAgc2Nyb2xs
U2V0dGluZ3NEaWRDaGFuZ2UocGFyYW1ldGVycy5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIpOwog
I2VuZGlmCiAKICAgICBlZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHBhcmFtZXRlcnMudXNl
RGFya0FwcGVhcmFuY2UsIHBhcmFtZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDMzNzdh
OWQzYzNhNy4uMGYzYmM4YjA0OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC04OTUsNiArODk1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dF
bW9qaVBpY2tlcihXZWJDb3JlOjpGcmFtZSYpOwogCiAgICAgdm9pZCB0aGVtZURpZENoYW5nZShT
dHJpbmcmJik7CisgICAgdm9pZCBkZWZhdWx0Rm9udERpZENoYW5nZShTdHJpbmcmJik7CisgICAg
dm9pZCBmb250U2V0dGluZ3NEaWRDaGFuZ2UoaW50IGFudGlhbGlhcywgaW50IGhpbnRpbmcsIFN0
cmluZyYmIGhpbnRTdHlsZSwgU3RyaW5nJiYgcmdiYSwgaW50IGRwaSk7CisgICAgdm9pZCBjdXJz
b3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKGJvb2wgY3Vyc29yQmxpa24sIGludCBjdXJzb3JCbGlu
a1RpbWUpOworICAgIHZvaWQgc2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2UoYm9vbCBwcmltYXJ5QnV0
dG9uV2FycHNTbGlkZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKTsKQEAg
LTIzMjgsNiArMjMzMiwxNSBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0
cmluZyBtX3RoZW1lTmFtZTsKKyAgICBTdHJpbmcgbV9kZWZhdWx0Rm9udE5hbWU7CisgICAgaW50
IG1feGZ0QW50aWFsaWFzOworICAgIGludCBtX3hmdEhpbnRpbmc7CisgICAgU3RyaW5nIG1feGZ0
SGludFN0eWxlOworICAgIFN0cmluZyBtX3hmdFJHQkE7CisgICAgaW50IG1feGZ0RFBJOworICAg
IGJvb2wgbV9jdXJzb3JCbGluazsKKyAgICBpbnQgbV9jdXJzb3JCbGlua1RpbWU7CisgICAgYm9v
bCBtX3ByaW1hcnlCdXR0b25XYXJwc1NsaWRlcjsKICNlbmRpZgogICAgIAogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDFjZWRhN2E3YmNhYi4uYTM5NGE0NGYzMzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTUxNyw2ICs1MTcsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBUaGVtZURpZENoYW5nZShTdHJpbmcgdGhlbWVOYW1l
KQorICAgIERlZmF1bHRGb250RGlkQ2hhbmdlKFN0cmluZyBkZWZhdWx0Rm9udE5hbWUpCisgICAg
Rm9udFNldHRpbmdzRGlkQ2hhbmdlKGludCBhbnRpYWxpYXMsIGludCBoaW50aW5nLCBTdHJpbmcg
aGludFN0eWxlLCBTdHJpbmcgcmdiYSwgaW50IGRwaSkKKyAgICBDdXJzb3JCbGlua1NldHRpbmdz
RGlkQ2hhbmdlKGJvb2wgY3Vyc29yQmxpbmssIGludCBjdXJzb3JCbGlua1RpbWUpCisgICAgU2Ny
b2xsU2V0dGluZ3NEaWRDaGFuZ2UoYm9vbCBwcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIpCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IGNjY2Q4Y2ExOTM0OS4uMDJhMjFi
NzIyOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlBhZ2VHdGsuY3BwCkBAIC0xODksNCArMTg5LDYyIEBAIHZvaWQgV2ViUGFnZTo6dGhlbWVE
aWRDaGFuZ2UoU3RyaW5nJiYgdGhlbWVOYW1lKQogICAgIFBhZ2U6OnVwZGF0ZVN0eWxlRm9yQWxs
UGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1lbnQoKTsKIH0KIAordm9pZCBXZWJQYWdl
OjpkZWZhdWx0Rm9udERpZENoYW5nZShTdHJpbmcmJiBkZWZhdWx0Rm9udE5hbWUpCit7CisgICAg
aWYgKG1fZGVmYXVsdEZvbnROYW1lID09IGRlZmF1bHRGb250TmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9kZWZhdWx0Rm9udE5hbWUgPSBXVEZNb3ZlKGRlZmF1bHRGb250TmFtZSk7Cisg
ICAgZ19vYmplY3Rfc2V0KGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgpLCAiZ3RrLWZvbnQtbmFt
ZSIsIG1fZGVmYXVsdEZvbnROYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOworfQorCit2b2lk
IFdlYlBhZ2U6OmZvbnRTZXR0aW5nc0RpZENoYW5nZShpbnQgYW50aWFsaWFzLCBpbnQgaGludGlu
ZywgU3RyaW5nJiYgaGludFN0eWxlLCBTdHJpbmcmJiByZ2JhLCBpbnQgZHBpKQoreworICAgIGlm
IChtX3hmdEFudGlhbGlhcyAhPSBhbnRpYWxpYXMpIHsKKyAgICAgICAgbV94ZnRBbnRpYWxpYXMg
PSBhbnRpYWxpYXM7CisgICAgICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1
bHQoKSwgImd0ay14ZnQtYW50aWFsaWFzIiwgbV94ZnRBbnRpYWxpYXMsIG51bGxwdHIpOworICAg
IH0KKworICAgIGlmIChtX3hmdEhpbnRpbmcgIT0gaGludGluZykgeworICAgICAgICBtX3hmdEhp
bnRpbmcgPSBoaW50aW5nOworICAgICAgICBnX29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9k
ZWZhdWx0KCksICJndGsteGZ0LWhpbnRpbmciLCBtX3hmdEhpbnRpbmcsIG51bGxwdHIpOworICAg
IH0KKworICAgIGlmIChtX3hmdEhpbnRTdHlsZSAhPSBoaW50U3R5bGUpIHsKKyAgICAgICAgbV94
ZnRIaW50U3R5bGUgPSBXVEZNb3ZlKGhpbnRTdHlsZSk7CisgICAgICAgIGdfb2JqZWN0X3NldChn
dGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKSwgImd0ay14ZnQtaGludHN0eWxlIiwgbV94ZnRIaW50
U3R5bGUsIG51bGxwdHIpOworICAgIH0KKworICAgIGlmIChtX3hmdFJHQkEgIT0gcmdiYSkgewor
ICAgICAgICBtX3hmdFJHQkEgPSBXVEZNb3ZlKHJnYmEpOworICAgICAgICBnX29iamVjdF9zZXQo
Z3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGsteGZ0LXJnYmEiLCBtX3hmdFJHQkEsIG51
bGxwdHIpOworICAgIH0KKworICAgIGlmIChtX3hmdERQSSAhPSBkcGkpIHsKKyAgICAgICAgbV94
ZnREUEkgPSBkcGk7CisgICAgICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1
bHQoKSwgImd0ay14ZnQtZHBpIiwgbV94ZnREUEksIG51bGxwdHIpOworICAgIH0KK30KKwordm9p
ZCBXZWJQYWdlOjpjdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKGJvb2wgY3Vyc29yQmxpbmss
IGludCBjdXJzb3JCbGlua1RpbWUpCit7CisgICAgaWYgKG1fY3Vyc29yQmxpbmsgIT0gY3Vyc29y
QmxpbmspIHsKKyAgICAgICAgbV9jdXJzb3JCbGluayA9IGN1cnNvckJsaW5rOworICAgICAgICBn
X29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGstY3Vyc29yLWJsaW5r
IiwgbV9jdXJzb3JCbGluaywgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKG1fY3Vyc29yQmxp
bmtUaW1lICE9IGN1cnNvckJsaW5rVGltZSkgeworICAgICAgICBtX2N1cnNvckJsaW5rVGltZSA9
IGN1cnNvckJsaW5rVGltZTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KGd0a19zZXR0aW5nc19nZXRf
ZGVmYXVsdCgpLCAiZ3RrLWN1cnNvci1ibGluay10aW1lIiwgbV9jdXJzb3JCbGlua1RpbWUsIG51
bGxwdHIpOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjpzY3JvbGxTZXR0aW5nc0RpZENoYW5n
ZShib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcikKK3sKKyAgICBpZiAobV9wcmltYXJ5QnV0
dG9uV2FycHNTbGlkZXIgIT0gcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKSB7CisgICAgICAgIG1f
cHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyID0gcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyOworICAg
ICAgICBnX29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGstcHJpbWFy
eS1idXR0b24td2FycHMtc2xpZGVyIiwgbV9wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIsIG51bGxw
dHIpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0tIAoyLjMxLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433276</attachid>
            <date>2021-07-10 15:06:16 -0700</date>
            <delta_ts>2021-07-16 00:35:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>27583</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA0NDVkZmM1YzA5YTcyNGE1OWUwYWYyYWU1OWFjY2YwMjA1MDEwZjliIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogU3VuLCAxMSBKdWwgMjAyMSAwMjo1OToxMSArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICB8IDcxICsrKysrKysrKysrKysrKysKIC4uLi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAgICAgICB8IDI3ICsrKysrKwogLi4uL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oIHwgIDkgKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAgICAgICB8IDYzICsrKysrKysrKysrKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggfCAgOSArKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcCAgIHwgODMgKysrKysrKysrKysrKysrLS0tLQogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgIDkgKysKIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAgICB8ICA5ICsrCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgNSArKwogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgNDMgKysrKysrKysrKwogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgIHwgIDUgKysKIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8IDEzICsrKwogLi4uL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwgIDQgKwogLi4uL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgICAgIHwgNTggKysrKysrKysrKysrKwogMTQgZmls
ZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNTNjYmFmZDljZmZlLi4xNWRlMWIzYjIyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAK
KzIwMjEtMDctMTAgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBQcm9wYWdhdGUgR3RrU2V0dGluZ3MgdG8gd2ViIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlJ3MgYSBudW1i
ZXIgb2YgcHJvcGVydGllcyBpbiBHdGtTZXR0aW5ncyB0aGF0IHdlYiBwcm9jZXNzIHVzZXM6CisK
KyAgICAgICAgLSBndGstY3Vyc29yLWJsaW5rCisgICAgICAgIC0gZ3RrLWN1cnNvci1ibGluay10
aW1lCisgICAgICAgIC0gZ3RrLWZvbnQtbmFtZQorICAgICAgICAtIGd0ay1wcmltYXJ5LWJ1dHRv
bi13YXJwcy1zbGlkZXIKKyAgICAgICAgLSBndGstdGhlbWUtbmFtZQorICAgICAgICAtIGd0ay14
ZnQtYW50aWFsaWFzCisgICAgICAgIC0gZ3RrLXhmdC1kcGkKKyAgICAgICAgLSBndGsteGZ0LWhp
bnRpbmcKKyAgICAgICAgLSBndGsteGZ0LWhpbnRzdHlsZQorICAgICAgICAtIGd0ay14ZnQtcmdi
YQorCisgICAgICAgIFdoaWxlIHdlIGRvIHByb3BhZ2F0ZSBndGstdGhlbWUtbmFtZSwgd2UgZG9u
J3QgZG8gaXQgZm9yIGFueSBvZiB0aGUgb3RoZXIgc2V0dGluZ3MuCisgICAgICAgIFRoaXMgbWVh
bnMgdGhhdCB0aGV5IGNhbiBvbmx5IGJlIGZldGNoZWQgZnJvbSB4c2V0dGluZ3MvZ3NldHRpbmdz
L3NldHRpbmdzIHBvcnRhbAorICAgICAgICBieSBHVEsgaXRzZWxmLCBidXQgaWYgdGhlIGFwcCBj
aGFuZ2VzIHRoZW0gb3IgaWYgdGhleSBhcmUgY2hhbmdlZCBmcm9tIGluc3BlY3RvciwKKyAgICAg
ICAgd2ViIHByb2Nlc3Mgd29uJ3Qgc2VlIHRoYXQuCisKKyAgICAgICAgQ2xlYW4gdXAgYSBmZXcg
b2RkaXRpZXMgaW4gV2ViS2l0V2ViVmlld0Jhc2UgYWxvbmcgdGhlIHdheS4KKworICAgICAgICAq
IFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRl
ZmF1bHRGb250TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp4
ZnRBbnRpYWxpYXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6eGZ0
SGludGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp4ZnRIaW50
U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6eGZ0UkdCQSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp4ZnREUEkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Vyc29yQmxpbmsgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Vyc29yQmxpbmtUaW1lIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByaW1hcnlCdXR0b25XYXJwc1NsaWRlciBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAg
ICh0aGVtZUNoYW5nZWQpOgorICAgICAgICAoYXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVDaGFu
Z2VkKToKKyAgICAgICAgKGRlZmF1bHRGb250Q2hhbmdlZCk6CisgICAgICAgIChmb250U2V0dGlu
Z3NDaGFuZ2VkKToKKyAgICAgICAgKGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAg
ICAgKHNjcm9sbFNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvcGxldmVsT25TY3JlZW5XaW5kb3cpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSb290
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVW5yb290KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWZh
dWx0Rm9udERpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9udFNl
dHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjdXJzb3JC
bGlua1NldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
Y3JvbGxTZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRlZmF1
bHRGb250RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9udFNldHRpbmdz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3Vyc29yQmxpbmtTZXR0aW5n
c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjcm9sbFNldHRpbmdzRGlk
Q2hhbmdlKToKKwogMjAyMS0wNy0wOCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25v
bWUub3JnPgogCiAgICAgICAgIFtHVEtdIENhbid0IGNsaWNrIGxpbmtzIHdpdGggdG91Y2hzY3Jl
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggMmJhZWYwNmNhY2FiLi5iZjY0Y2VhZjY2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNzksNiAr
MTc5LDE1IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVyIDw8
IHRoZW1lTmFtZTsKKyAgICBlbmNvZGVyIDw8IGRlZmF1bHRGb250TmFtZTsKKyAgICBlbmNvZGVy
IDw8IHhmdEFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IHhmdEhpbnRpbmc7CisgICAgZW5jb2Rl
ciA8PCB4ZnRIaW50U3R5bGU7CisgICAgZW5jb2RlciA8PCB4ZnRSR0JBOworICAgIGVuY29kZXIg
PDwgeGZ0RFBJOworICAgIGVuY29kZXIgPDwgY3Vyc29yQmxpbms7CisgICAgZW5jb2RlciA8PCBj
dXJzb3JCbGlua1RpbWU7CisgICAgZW5jb2RlciA8PCBwcmltYXJ5QnV0dG9uV2FycHNTbGlkZXI7
CiAjZW5kaWYKICAgICAKICAgICBlbmNvZGVyIDw8IGh0dHBzVXBncmFkZUVuYWJsZWQ7CkBAIC01
OTMsNiArNjAyLDI0IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50aGVtZU5hbWUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5kZWZhdWx0Rm9udE5hbWUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy54ZnRBbnRpYWxpYXMpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy54ZnRI
aW50aW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMueGZ0SGludFN0eWxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMueGZ0UkdCQSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnhmdERQSSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmN1cnNvckJsaW5rKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY3Vyc29yQmxpbmtU
aW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMucHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmh0dHBzVXBncmFkZUVuYWJsZWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDY1MTc4OTIyMTJjMi4uMDc5MWYxNmE2Mjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCkBAIC0yNDksNiArMjQ5LDE1IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgdGhlbWVOYW1lOworICAgIFN0cmlu
ZyBkZWZhdWx0Rm9udE5hbWU7CisgICAgaW50IHhmdEFudGlhbGlhczsKKyAgICBpbnQgeGZ0SGlu
dGluZzsKKyAgICBTdHJpbmcgeGZ0SGludFN0eWxlOworICAgIFN0cmluZyB4ZnRSR0JBOworICAg
IGludCB4ZnREUEk7CisgICAgYm9vbCBjdXJzb3JCbGluazsKKyAgICBpbnQgY3Vyc29yQmxpbmtU
aW1lOworICAgIGJvb2wgcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyOwogI2VuZGlmCiAgICAgCiAg
ICAgYm9vbCBodHRwc1VwZ3JhZGVFbmFibGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAyMGU4OGQzODE0
MGIuLjc2YmI5MDZmNmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTYwNiw2ICs2MDYsNjkgQEAgU3RyaW5nIFBhZ2VD
bGllbnRJbXBsOjp0aGVtZU5hbWUoKSBjb25zdAogICAgIHJldHVybiBuYW1lOwogfQogCitTdHJp
bmcgUGFnZUNsaWVudEltcGw6OmRlZmF1bHRGb250TmFtZSgpIGNvbnN0Cit7CisgICAgR1VuaXF1
ZU91dFB0cjxjaGFyPiBmb250TmFtZVNldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KGd0a193aWRn
ZXRfZ2V0X3NldHRpbmdzKG1fdmlld1dpZGdldCksICJndGstZm9udC1uYW1lIiwgJmZvbnROYW1l
U2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
Zm9udE5hbWVTZXR0aW5nLmdldCgpKTsKK30KKworaW50IFBhZ2VDbGllbnRJbXBsOjp4ZnRBbnRp
YWxpYXMoKSBjb25zdAoreworICAgIGludCBhbnRpYWxpYXNTZXR0aW5nOworICAgIGdfb2JqZWN0
X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLXhmdC1hbnRp
YWxpYXMiLCAmYW50aWFsaWFzU2V0dGluZywgbnVsbHB0cik7CisgICAgcmV0dXJuIGFudGlhbGlh
c1NldHRpbmc7Cit9CisKK2ludCBQYWdlQ2xpZW50SW1wbDo6eGZ0SGludGluZygpIGNvbnN0Cit7
CisgICAgaW50IGhpbnRpbmdTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dl
dF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLXhmdC1oaW50aW5nIiwgJmhpbnRpbmdTZXR0
aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gaGludGluZ1NldHRpbmc7Cit9CisKK1N0cmluZyBQ
YWdlQ2xpZW50SW1wbDo6eGZ0SGludFN0eWxlKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlT3V0UHRy
PGNoYXI+IGhpbnRTdHlsZVNldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KGd0a193aWRnZXRfZ2V0
X3NldHRpbmdzKG1fdmlld1dpZGdldCksICJndGsteGZ0LWhpbnRzdHlsZSIsICZoaW50U3R5bGVT
ZXR0aW5nLm91dFB0cigpLCBudWxscHRyKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCho
aW50U3R5bGVTZXR0aW5nLmdldCgpKTsKK30KKworU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjp4ZnRS
R0JBKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IHJnYmFTZXR0aW5nOworICAg
IGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3Rr
LXhmdC1yZ2JhIiwgJnJnYmFTZXR0aW5nLm91dFB0cigpLCBudWxscHRyKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChyZ2JhU2V0dGluZy5nZXQoKSk7Cit9CisKK2ludCBQYWdlQ2xpZW50
SW1wbDo6eGZ0RFBJKCkgY29uc3QKK3sKKyAgICBpbnQgZHBpU2V0dGluZzsKKyAgICBnX29iamVj
dF9nZXQoZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MobV92aWV3V2lkZ2V0KSwgImd0ay14ZnQtZHBp
IiwgJmRwaVNldHRpbmcsIG51bGxwdHIpOworICAgIHJldHVybiBkcGlTZXR0aW5nOworfQorCiti
b29sIFBhZ2VDbGllbnRJbXBsOjpjdXJzb3JCbGluaygpIGNvbnN0Cit7CisgICAgZ2Jvb2xlYW4g
Y3Vyc29yQmxpbmtTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0
aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLWN1cnNvci1ibGluayIsICZjdXJzb3JCbGlua1NldHRp
bmcsIG51bGxwdHIpOworICAgIHJldHVybiBjdXJzb3JCbGlua1NldHRpbmcgPyB0cnVlIDogZmFs
c2U7Cit9CisKK2ludCBQYWdlQ2xpZW50SW1wbDo6Y3Vyc29yQmxpbmtUaW1lKCkgY29uc3QKK3sK
KyAgICBpbnQgY3Vyc29yQmxpbmtUaW1lU2V0dGluZzsKKyAgICBnX29iamVjdF9nZXQoZ3RrX3dp
ZGdldF9nZXRfc2V0dGluZ3MobV92aWV3V2lkZ2V0KSwgImd0ay1jdXJzb3ItYmxpbmstdGltZSIs
ICZjdXJzb3JCbGlua1RpbWVTZXR0aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gY3Vyc29yQmxp
bmtUaW1lU2V0dGluZzsKK30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6cHJpbWFyeUJ1dHRvbldh
cnBzU2xpZGVyKCkgY29uc3QKK3sKKyAgICBnYm9vbGVhbiBidXR0b25TZXR0aW5nOworICAgIGdf
b2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLXBy
aW1hcnktYnV0dG9uLXdhcnBzLXNsaWRlciIsICZidXR0b25TZXR0aW5nLCBudWxscHRyKTsKKyAg
ICByZXR1cm4gYnV0dG9uU2V0dGluZyA/IHRydWUgOiBmYWxzZTsKK30KKwogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6bWFrZVZpZXdCbGFuayhib29sIG1ha2VCbGFuaykKIHsKICAgICB3ZWJraXRXZWJW
aWV3QmFzZU1ha2VCbGFuayhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBtYWtl
QmxhbmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oCmluZGV4IDU2ZjU5NGZhYTZiNi4uMmRjZDE3MDZkODBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xNzYsNiArMTc2
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQYWdlSUQoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFN0cmluZyB0aGVtZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJp
bmcgZGVmYXVsdEZvbnROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHhmdEFudGlhbGlh
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCB4ZnRIaW50aW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgU3RyaW5nIHhmdEhpbnRTdHlsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB4
ZnRSR0JBKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHhmdERQSSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgY3Vyc29yQmxpbmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgY3Vyc29y
QmxpbmtUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwcmltYXJ5QnV0dG9uV2FycHNT
bGlkZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbWFrZVZpZXdCbGFuayhib29sKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA4YjUyZjMxNzNjMGQuLmUyYWQ0ZTQzMTI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSB7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQgeyAwIH07
CiAgICAgdW5zaWduZWQgbG9uZyB0aGVtZUNoYW5nZWRJRCB7IDAgfTsKICAgICB1bnNpZ25lZCBs
b25nIGFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQgeyAwIH07CisgICAgdW5zaWduZWQgbG9u
ZyBkZWZhdWx0Rm9udENoYW5nZWRJRCB7IDAgfTsKIAogICAgIC8vIFZpZXcgU3RhdGUuCiAgICAg
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGU7CkBAIC0zNTMsNiAr
MzU0LDM3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rp
dml0eVN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWCiAgICAgcHJpdi0+dXBkYXRlQWN0aXZp
dHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCisKK3N0YXRpYyB2b2lkIHRoZW1l
Q2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmlld0Jh
c2UtPnByaXYtPnBhZ2VQcm94eS0+dGhlbWVEaWRDaGFuZ2UoKTsKK30KKworc3RhdGljIHZvaWQg
YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSkKK3sKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5lZmZlY3RpdmVB
cHBlYXJhbmNlRGlkQ2hhbmdlKCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlZmF1bHRGb250Q2hhbmdl
ZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmlld0Jhc2UtPnBy
aXYtPnBhZ2VQcm94eS0+ZGVmYXVsdEZvbnREaWRDaGFuZ2UoKTsKK30KKworc3RhdGljIHZvaWQg
Zm9udFNldHRpbmdzQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSAqd2ViVmlld0Jhc2UpCit7Cisg
ICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+Zm9udFNldHRpbmdzRGlkQ2hhbmdlKCk7
Cit9CisKK3N0YXRpYyB2b2lkIGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKFdlYktpdFdlYlZp
ZXdCYXNlICp3ZWJWaWV3QmFzZSkKK3sKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5
LT5jdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHNjcm9s
bFNldHRpbmdzQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSAqd2ViVmlld0Jhc2UpCit7CisgICAg
d2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+c2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2UoKTsK
K30KKwogI2lmICFVU0UoR1RLNCkKIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3Vz
SW5FdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyosIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSkKIHsKQEAgLTQwMSwxNiArNDMzLDYgQEAgc3RhdGljIGdib29sZWFu
IHRvcGxldmVsV2luZG93U3RhdGVFdmVudChHdGtXaWRnZXQqLCBHZGtFdmVudFdpbmRvd1N0YXRl
KiBldmVudCwKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHRoZW1lQ2hhbmdl
ZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCi17Ci0gICAgd2ViVmlld0Jhc2UtPnBy
aXYtPnBhZ2VQcm94eS0+dGhlbWVEaWRDaGFuZ2UoKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbGlj
YXRpb25QcmVmZXJEYXJrVGhlbWVDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSkKLXsKLSAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5lZmZlY3RpdmVBcHBlYXJh
bmNlRGlkQ2hhbmdlKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRvcGxldmVsV2luZG93UmVhbGl6ZWQo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewogICAgIGd0a193aWRnZXRfcmVhbGl6
ZShHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CkBAIC00NDQsNyArNDY2LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWUKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHByaXYt
PnRvcGxldmVsT25TY3JlZW5XaW5kb3csIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCk7
CiAgICAgICAgIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IDA7CiAgICAgfQotICAg
IGlmIChwcml2LT50aGVtZUNoYW5nZWRJRCB8fCBwcml2LT5hcHBsaWNhdGlvblByZWZlckRhcmtU
aGVtZUlEKSB7CisgICAgaWYgKHByaXYtPnRoZW1lQ2hhbmdlZElEIHx8IHByaXYtPmFwcGxpY2F0
aW9uUHJlZmVyRGFya1RoZW1lSUQgfHwgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQpIHsKICAg
ICAgICAgYXV0byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VU
KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICAgICAgaWYgKHByaXYtPnRoZW1l
Q2hhbmdlZElEKSB7CiAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qoc2V0
dGluZ3MsIHByaXYtPnRoZW1lQ2hhbmdlZElEKTsKQEAgLTQ1NCw2ICs0NzYsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWUKICAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChzZXR0aW5ncywgcHJpdi0+YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCk7CiAgICAgICAg
ICAgICBwcml2LT5hcHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUlEID0gMDsKICAgICAgICAgfQor
ICAgICAgICBpZiAocHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQpIHsKKyAgICAgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChzZXR0aW5ncywgcHJpdi0+ZGVmYXVsdEZvbnRDaGFu
Z2VkSUQpOworICAgICAgICAgICAgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQgPSAwOworICAg
ICAgICB9CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0
aW5ncywgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oZm9udFNldHRpbmdzQ2hhbmdlZCksIHdl
YlZpZXdCYXNlKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihjdXJzb3JCbGlua1NldHRpbmdz
Q2hhbmdlZCksIHdlYlZpZXdCYXNlKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29u
bmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihzY3JvbGxT
ZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7CiAgICAgfQogCiAgICAgcHJpdi0+dG9wbGV2
ZWxPblNjcmVlbldpbmRvdyA9IHdpbmRvdzsKQEAgLTQ4OCw2ICs1MTcsMTYgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWUKICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdz
LCAibm90aWZ5OjpndGstdGhlbWUtbmFtZSIsIEdfQ0FMTEJBQ0sodGhlbWVDaGFuZ2VkKSwgd2Vi
Vmlld0Jhc2UpOwogICAgIHByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQgPQogICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1hcHBs
aWNhdGlvbi1wcmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJBQ0soYXBwbGljYXRpb25QcmVmZXJE
YXJrVGhlbWVDaGFuZ2VkKSwgd2ViVmlld0Jhc2UpOworICAgIHByaXYtPmRlZmF1bHRGb250Q2hh
bmdlZElEID0KKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90
aWZ5OjpndGstZm9udC1uYW1lIiwgR19DQUxMQkFDSyhkZWZhdWx0Rm9udENoYW5nZWQpLCB3ZWJW
aWV3QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5
OjpndGsteGZ0LWFudGlhbGlhcyIsIEdfQ0FMTEJBQ0soZm9udFNldHRpbmdzQ2hhbmdlZCksIHdl
YlZpZXdCYXNlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3Rp
Znk6Omd0ay14ZnQtZHBpIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2ViVmll
d0Jhc2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6
Z3RrLXhmdC1oaW50aW5nIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2ViVmll
d0Jhc2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6
Z3RrLXhmdC1oaW50c3R5bGUiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3ZWJW
aWV3QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5
OjpndGsteGZ0LXJnYmEiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3
QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5Ojpn
dGstY3Vyc29yLWJsaW5rIiwgR19DQUxMQkFDSyhjdXJzb3JCbGlua1NldHRpbmdzQ2hhbmdlZCks
IHdlYlZpZXdCYXNlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJu
b3RpZnk6Omd0ay1jdXJzb3ItYmxpbmstdGltZSIsIEdfQ0FMTEJBQ0soY3Vyc29yQmxpbmtTZXR0
aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KHNldHRpbmdzLCAibm90aWZ5OjpndGstcHJpbWFyeS1idXR0b24td2FycHMtc2xpZGVyIiwgR19D
QUxMQkFDSyhzY3JvbGxTZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7CiAKICAgICBpZiAo
Z3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQoR1RLX1dJREdFVCh3aW5kb3cpKSkKICAgICAgICAgZ3Rr
X3dpZGdldF9yZWFsaXplKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKQEAgLTE3ODUsMTMgKzE4
MjQsMTkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSb290KEd0a1dpZGdldCogd2lk
Z2V0KQogCiAgICAgYXV0byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtf
V0lER0VUKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICBwcml2LT50aGVtZUNo
YW5nZWRJRCA9Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5v
dGlmeTo6Z3RrLXRoZW1lLW5hbWUiLCBHX0NBTExCQUNLKCtbXShXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UpIHsKLSAgICAgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHkt
PnRoZW1lRGlkQ2hhbmdlKCk7Ci0gICAgICAgIH0pLCB3aWRnZXQpOworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay10aGVtZS1uYW1lIiwgR19D
QUxMQkFDSyh0aGVtZUNoYW5nZWQpLCB3aWRnZXQpOwogICAgIHByaXYtPmFwcGxpY2F0aW9uUHJl
ZmVyRGFya1RoZW1lSUQgPQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGlu
Z3MsICJub3RpZnk6Omd0ay1hcHBsaWNhdGlvbi1wcmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJB
Q0soK1tdKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkgewotICAgICAgICAgICAgd2Vi
Vmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgp
OwotICAgICAgICB9KSwgd2lkZ2V0KTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KHNldHRpbmdzLCAibm90aWZ5OjpndGstYXBwbGljYXRpb24tcHJlZmVyLWRhcmstdGhlbWUiLCBH
X0NBTExCQUNLKGFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lQ2hhbmdlZCksIHdpZGdldCk7Cisg
ICAgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQgPQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1mb250LW5hbWUiLCBHX0NBTExCQUNLKGRl
ZmF1bHRGb250Q2hhbmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KHNldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0LWFudGlhbGlhcyIsIEdfQ0FMTEJBQ0soZm9udFNl
dHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNl
dHRpbmdzLCAibm90aWZ5OjpndGsteGZ0LWRwaSIsIEdfQ0FMTEJBQ0soZm9udFNldHRpbmdzQ2hh
bmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAi
bm90aWZ5OjpndGsteGZ0LWhpbnRpbmciLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQp
LCB3aWRnZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlm
eTo6Z3RrLXhmdC1oaW50c3R5bGUiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3
aWRnZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6
Z3RrLXhmdC1yZ2JhIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0KTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1jdXJz
b3ItYmxpbmsiLCBHX0NBTExCQUNLKGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1j
dXJzb3ItYmxpbmstdGltZSIsIEdfQ0FMTEJBQ0soY3Vyc29yQmxpbmtTZXR0aW5nc0NoYW5nZWQp
LCB3aWRnZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlm
eTo6Z3RrLXByaW1hcnktYnV0dG9uLXdhcnBzLXNsaWRlciIsIEdfQ0FMTEJBQ0soc2Nyb2xsU2V0
dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VVbnJvb3QoR3RrV2lkZ2V0KiB3aWRnZXQpCkBAIC0xODA4LDYgKzE4NTMsMTAgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbnJvb3QoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgYXV0
byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHByaXYtPnRv
cGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2
LT50aGVtZUNoYW5nZWRJRCwgc2V0dGluZ3MpOwogICAgIGdfY2xlYXJfc2lnbmFsX2hhbmRsZXIo
JnByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQsIHNldHRpbmdzKTsKKyAgICBnX2Ns
ZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2LT5kZWZhdWx0Rm9udENoYW5nZWRJRCwgc2V0dGluZ3Mp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0aW5ncywgcmVp
bnRlcnByZXRfY2FzdDxncG9pbnRlcj4oZm9udFNldHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7Cisg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVy
cHJldF9jYXN0PGdwb2ludGVyPihjdXJzb3JCbGlua1NldHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7
CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWlu
dGVycHJldF9jYXN0PGdwb2ludGVyPihzY3JvbGxTZXR0aW5nc0NoYW5nZWQpLCB3aWRnZXQpOwog
ICAgIHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cgPSBudWxscHRyOwogCiAgICAgT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggMDhjYzI4OTAzOTkyLi5mNzk2MWVlNGUyMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTYyNiw2ICs2MjYsMTUgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgU3RyaW5nIHRoZW1lTmFtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkZWZhdWx0Rm9udE5hbWUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBpbnQgeGZ0QW50aWFsaWFzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IHhmdEhpbnRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgeGZ0SGludFN0eWxl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHhmdFJHQkEoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBpbnQgeGZ0RFBJKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjdXJz
b3JCbGluaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBjdXJzb3JCbGlua1RpbWUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcigpIGNv
bnN0ID0gMDsKICNlbmRpZgogCiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA1OWIwZTg0MGJkZTguLmE3YzkzN2U5MmFlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MjEwLDYgKzgyMTAsMTUgQEAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9j
ZXNzUHJveHkmIHByb2MKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBwYXJhbWV0ZXJzLnRoZW1l
TmFtZSA9IHBhZ2VDbGllbnQoKS50aGVtZU5hbWUoKTsKKyAgICBwYXJhbWV0ZXJzLmRlZmF1bHRG
b250TmFtZSA9IHBhZ2VDbGllbnQoKS5kZWZhdWx0Rm9udE5hbWUoKTsKKyAgICBwYXJhbWV0ZXJz
LnhmdEFudGlhbGlhcyA9IHBhZ2VDbGllbnQoKS54ZnRBbnRpYWxpYXMoKTsKKyAgICBwYXJhbWV0
ZXJzLnhmdEhpbnRpbmcgPSBwYWdlQ2xpZW50KCkueGZ0SGludGluZygpOworICAgIHBhcmFtZXRl
cnMueGZ0SGludFN0eWxlID0gcGFnZUNsaWVudCgpLnhmdEhpbnRTdHlsZSgpOworICAgIHBhcmFt
ZXRlcnMueGZ0UkdCQSA9IHBhZ2VDbGllbnQoKS54ZnRSR0JBKCk7CisgICAgcGFyYW1ldGVycy54
ZnREUEkgPSBwYWdlQ2xpZW50KCkueGZ0RFBJKCk7CisgICAgcGFyYW1ldGVycy5jdXJzb3JCbGlu
ayA9IHBhZ2VDbGllbnQoKS5jdXJzb3JCbGluaygpOworICAgIHBhcmFtZXRlcnMuY3Vyc29yQmxp
bmtUaW1lID0gcGFnZUNsaWVudCgpLmN1cnNvckJsaW5rVGltZSgpOworICAgIHBhcmFtZXRlcnMu
cHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyID0gcGFnZUNsaWVudCgpLnByaW1hcnlCdXR0b25XYXJw
c1NsaWRlcigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKSAmJiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZDFhNWZjMzhlYTdjLi45N2ExZGYzZjkyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC05NjIsNyArOTYyLDEyIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShHVEsp
CiAgICAgUGxhdGZvcm1WaWV3V2lkZ2V0IHZpZXdXaWRnZXQoKTsKICAgICBib29sIG1ha2VHTENv
bnRleHRDdXJyZW50KCk7CisKICAgICB2b2lkIHRoZW1lRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBk
ZWZhdWx0Rm9udERpZENoYW5nZSgpOworICAgIHZvaWQgZm9udFNldHRpbmdzRGlkQ2hhbmdlKCk7
CisgICAgdm9pZCBjdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBzY3Jv
bGxTZXR0aW5nc0RpZENoYW5nZSgpOwogI2VuZGlmCiAKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
Z3JvdW5kQ29sb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKaW5kZXggMWE3ZmE2Yjc1ZWMyLi5hZGQ5Y2QzMTc3NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0xMDYsNCAr
MTA2LDQ3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0aGVtZURpZENoYW5nZSgpCiAgICAgZWZmZWN0
aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVmYXVs
dEZvbnREaWRDaGFuZ2UoKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGVmYXVsdEZvbnREaWRD
aGFuZ2UocGFnZUNsaWVudCgpLmRlZmF1bHRGb250TmFtZSgpKSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpmb250U2V0dGluZ3NEaWRDaGFuZ2UoKQoreworICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGFudGlhbGlhcyA9IHBhZ2VDbGll
bnQoKS54ZnRBbnRpYWxpYXMoKTsKKyAgICBpbnQgaGludGluZyA9IHBhZ2VDbGllbnQoKS54ZnRI
aW50aW5nKCk7CisgICAgU3RyaW5nIGhpbnRTdHlsZSA9IHBhZ2VDbGllbnQoKS54ZnRIaW50U3R5
bGUoKTsKKyAgICBTdHJpbmcgcmdiYSA9IHBhZ2VDbGllbnQoKS54ZnRSR0JBKCk7CisgICAgaW50
IGRwaSA9IHBhZ2VDbGllbnQoKS54ZnREUEkoKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZvbnRTZXR0aW5nc0RpZENoYW5nZShhbnRpYWxpYXMsIGhpbnRpbmcsIGhpbnRTdHlsZSwg
cmdiYSwgZHBpKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjdXJzb3JCbGlua1NldHRpbmdz
RGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGJvb2wgY3Vyc29yQmxpbmsgPSBwYWdlQ2xpZW50KCkuY3Vyc29yQmxpbmso
KTsKKyAgICBpbnQgY3Vyc29yQmxpbmtUaW1lID0gcGFnZUNsaWVudCgpLmN1cnNvckJsaW5rVGlt
ZSgpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3Vyc29yQmxpbmtTZXR0aW5nc0Rp
ZENoYW5nZShjdXJzb3JCbGluaywgY3Vyc29yQmxpbmtUaW1lKSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzY3JvbGxTZXR0aW5nc0RpZENoYW5nZSgpCit7CisgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIHByaW1hcnlCdXR0b25XYXJw
c1NsaWRlciA9IHBhZ2VDbGllbnQoKS5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIoKTsKKworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbFNldHRpbmdzRGlkQ2hhbmdlKHByaW1hcnlC
dXR0b25XYXJwc1NsaWRlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTZkZDIzMWM4MDY2
Li4yNTMwMmFkNzU1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC03MzMsNiArNzMzLDExIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAog
I2lmIFBMQVRGT1JNKEdUSykKICAgICB0aGVtZURpZENoYW5nZShXVEZNb3ZlKHBhcmFtZXRlcnMu
dGhlbWVOYW1lKSk7CisgICAgZGVmYXVsdEZvbnREaWRDaGFuZ2UoV1RGTW92ZShwYXJhbWV0ZXJz
LmRlZmF1bHRGb250TmFtZSkpOworICAgIGZvbnRTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0ZXJz
LnhmdEFudGlhbGlhcywgcGFyYW1ldGVycy54ZnRIaW50aW5nLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
eGZ0SGludFN0eWxlKSwKKyAgICAgICAgV1RGTW92ZShwYXJhbWV0ZXJzLnhmdFJHQkEpLCBwYXJh
bWV0ZXJzLnhmdERQSSk7CisgICAgY3Vyc29yQmxpbmtTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0
ZXJzLmN1cnNvckJsaW5rLCBwYXJhbWV0ZXJzLmN1cnNvckJsaW5rVGltZSk7CisgICAgc2Nyb2xs
U2V0dGluZ3NEaWRDaGFuZ2UocGFyYW1ldGVycy5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIpOwog
I2VuZGlmCiAKICAgICBlZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHBhcmFtZXRlcnMudXNl
RGFya0FwcGVhcmFuY2UsIHBhcmFtZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDMzNzdh
OWQzYzNhNy4uMGYzYmM4YjA0OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC04OTUsNiArODk1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dF
bW9qaVBpY2tlcihXZWJDb3JlOjpGcmFtZSYpOwogCiAgICAgdm9pZCB0aGVtZURpZENoYW5nZShT
dHJpbmcmJik7CisgICAgdm9pZCBkZWZhdWx0Rm9udERpZENoYW5nZShTdHJpbmcmJik7CisgICAg
dm9pZCBmb250U2V0dGluZ3NEaWRDaGFuZ2UoaW50IGFudGlhbGlhcywgaW50IGhpbnRpbmcsIFN0
cmluZyYmIGhpbnRTdHlsZSwgU3RyaW5nJiYgcmdiYSwgaW50IGRwaSk7CisgICAgdm9pZCBjdXJz
b3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKGJvb2wgY3Vyc29yQmxpa24sIGludCBjdXJzb3JCbGlu
a1RpbWUpOworICAgIHZvaWQgc2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2UoYm9vbCBwcmltYXJ5QnV0
dG9uV2FycHNTbGlkZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKTsKQEAg
LTIzMjgsNiArMjMzMiwxNSBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0
cmluZyBtX3RoZW1lTmFtZTsKKyAgICBTdHJpbmcgbV9kZWZhdWx0Rm9udE5hbWU7CisgICAgaW50
IG1feGZ0QW50aWFsaWFzOworICAgIGludCBtX3hmdEhpbnRpbmc7CisgICAgU3RyaW5nIG1feGZ0
SGludFN0eWxlOworICAgIFN0cmluZyBtX3hmdFJHQkE7CisgICAgaW50IG1feGZ0RFBJOworICAg
IGJvb2wgbV9jdXJzb3JCbGluazsKKyAgICBpbnQgbV9jdXJzb3JCbGlua1RpbWU7CisgICAgYm9v
bCBtX3ByaW1hcnlCdXR0b25XYXJwc1NsaWRlcjsKICNlbmRpZgogICAgIAogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDFjZWRhN2E3YmNhYi4uYTM5NGE0NGYzMzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTUxNyw2ICs1MTcsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBUaGVtZURpZENoYW5nZShTdHJpbmcgdGhlbWVOYW1l
KQorICAgIERlZmF1bHRGb250RGlkQ2hhbmdlKFN0cmluZyBkZWZhdWx0Rm9udE5hbWUpCisgICAg
Rm9udFNldHRpbmdzRGlkQ2hhbmdlKGludCBhbnRpYWxpYXMsIGludCBoaW50aW5nLCBTdHJpbmcg
aGludFN0eWxlLCBTdHJpbmcgcmdiYSwgaW50IGRwaSkKKyAgICBDdXJzb3JCbGlua1NldHRpbmdz
RGlkQ2hhbmdlKGJvb2wgY3Vyc29yQmxpbmssIGludCBjdXJzb3JCbGlua1RpbWUpCisgICAgU2Ny
b2xsU2V0dGluZ3NEaWRDaGFuZ2UoYm9vbCBwcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIpCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IGNjY2Q4Y2ExOTM0OS4uMDJhMjFi
NzIyOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlBhZ2VHdGsuY3BwCkBAIC0xODksNCArMTg5LDYyIEBAIHZvaWQgV2ViUGFnZTo6dGhlbWVE
aWRDaGFuZ2UoU3RyaW5nJiYgdGhlbWVOYW1lKQogICAgIFBhZ2U6OnVwZGF0ZVN0eWxlRm9yQWxs
UGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1lbnQoKTsKIH0KIAordm9pZCBXZWJQYWdl
OjpkZWZhdWx0Rm9udERpZENoYW5nZShTdHJpbmcmJiBkZWZhdWx0Rm9udE5hbWUpCit7CisgICAg
aWYgKG1fZGVmYXVsdEZvbnROYW1lID09IGRlZmF1bHRGb250TmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9kZWZhdWx0Rm9udE5hbWUgPSBXVEZNb3ZlKGRlZmF1bHRGb250TmFtZSk7Cisg
ICAgZ19vYmplY3Rfc2V0KGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgpLCAiZ3RrLWZvbnQtbmFt
ZSIsIG1fZGVmYXVsdEZvbnROYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOworfQorCit2b2lk
IFdlYlBhZ2U6OmZvbnRTZXR0aW5nc0RpZENoYW5nZShpbnQgYW50aWFsaWFzLCBpbnQgaGludGlu
ZywgU3RyaW5nJiYgaGludFN0eWxlLCBTdHJpbmcmJiByZ2JhLCBpbnQgZHBpKQoreworICAgIGlm
IChtX3hmdEFudGlhbGlhcyAhPSBhbnRpYWxpYXMpIHsKKyAgICAgICAgbV94ZnRBbnRpYWxpYXMg
PSBhbnRpYWxpYXM7CisgICAgICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1
bHQoKSwgImd0ay14ZnQtYW50aWFsaWFzIiwgbV94ZnRBbnRpYWxpYXMsIG51bGxwdHIpOworICAg
IH0KKworICAgIGlmIChtX3hmdEhpbnRpbmcgIT0gaGludGluZykgeworICAgICAgICBtX3hmdEhp
bnRpbmcgPSBoaW50aW5nOworICAgICAgICBnX29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9k
ZWZhdWx0KCksICJndGsteGZ0LWhpbnRpbmciLCBtX3hmdEhpbnRpbmcsIG51bGxwdHIpOworICAg
IH0KKworICAgIGlmIChtX3hmdEhpbnRTdHlsZSAhPSBoaW50U3R5bGUpIHsKKyAgICAgICAgbV94
ZnRIaW50U3R5bGUgPSBXVEZNb3ZlKGhpbnRTdHlsZSk7CisgICAgICAgIGdfb2JqZWN0X3NldChn
dGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKSwgImd0ay14ZnQtaGludHN0eWxlIiwgbV94ZnRIaW50
U3R5bGUsIG51bGxwdHIpOworICAgIH0KKworICAgIGlmIChtX3hmdFJHQkEgIT0gcmdiYSkgewor
ICAgICAgICBtX3hmdFJHQkEgPSBXVEZNb3ZlKHJnYmEpOworICAgICAgICBnX29iamVjdF9zZXQo
Z3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGsteGZ0LXJnYmEiLCBtX3hmdFJHQkEsIG51
bGxwdHIpOworICAgIH0KKworICAgIGlmIChtX3hmdERQSSAhPSBkcGkpIHsKKyAgICAgICAgbV94
ZnREUEkgPSBkcGk7CisgICAgICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1
bHQoKSwgImd0ay14ZnQtZHBpIiwgbV94ZnREUEksIG51bGxwdHIpOworICAgIH0KK30KKwordm9p
ZCBXZWJQYWdlOjpjdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKGJvb2wgY3Vyc29yQmxpbmss
IGludCBjdXJzb3JCbGlua1RpbWUpCit7CisgICAgaWYgKG1fY3Vyc29yQmxpbmsgIT0gY3Vyc29y
QmxpbmspIHsKKyAgICAgICAgbV9jdXJzb3JCbGluayA9IGN1cnNvckJsaW5rOworICAgICAgICBn
X29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGstY3Vyc29yLWJsaW5r
IiwgbV9jdXJzb3JCbGluaywgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKG1fY3Vyc29yQmxp
bmtUaW1lICE9IGN1cnNvckJsaW5rVGltZSkgeworICAgICAgICBtX2N1cnNvckJsaW5rVGltZSA9
IGN1cnNvckJsaW5rVGltZTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KGd0a19zZXR0aW5nc19nZXRf
ZGVmYXVsdCgpLCAiZ3RrLWN1cnNvci1ibGluay10aW1lIiwgbV9jdXJzb3JCbGlua1RpbWUsIG51
bGxwdHIpOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjpzY3JvbGxTZXR0aW5nc0RpZENoYW5n
ZShib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcikKK3sKKyAgICBpZiAobV9wcmltYXJ5QnV0
dG9uV2FycHNTbGlkZXIgIT0gcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKSB7CisgICAgICAgIG1f
cHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyID0gcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyOworICAg
ICAgICBnX29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGstcHJpbWFy
eS1idXR0b24td2FycHMtc2xpZGVyIiwgbV9wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIsIG51bGxw
dHIpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0tIAoyLjMxLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433662</attachid>
            <date>2021-07-16 00:35:53 -0700</date>
            <delta_ts>2021-07-19 07:40:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-Patch.patch</filename>
            <type>text/plain</type>
            <size>28518</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAxY2RiYmRlYTY4NDJkYjY0MDJkNDlkY2Y0YjAzNzcwOTA1YjRmZWYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogTW9uLCAxMiBKdWwgMjAyMSAwMzo1MzowOCArMDUwMApTdWJqZWN0OiBbUEFUQ0gg
Mi8yXSBQYXRjaAoKLS0tCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgfCA3NiArKysrKysrKysrKysrKysrKwogLi4uL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCAgICAgIHwgMjcgKysrKysrCiAuLi4vV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggfCAgOSArKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcCAgICAgIHwgNjMgKysrKysrKysrKysrKysKIC4uLi9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCB8ICA5ICsrCiAuLi4vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwICAgfCA4MiArKysrKysrKysrKysrKystLS0tCiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggICAgICAgICAgfCAgOSArKwogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgIHwgIDkgKysKIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICB8ICA1ICsrCiAuLi4vV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCAgfCA0MyArKysrKysrKysrCiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgfCAxNCArKysrCiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAxMyArKysKIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiAgICB8ICA0ICsKIC4uLi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwICAgICB8IDU4ICsrKysrKysrKysrKysK
IDE0IGZpbGVzIGNoYW5nZWQsIDQwNCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDMzMTE2NzUyZDAzMi4uM2ZiMDVjZjA2MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDc5IEBACisyMDIxLTA3LTExICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5v
cmc+CisKKyAgICAgICAgW0dUS10gUHJvcGFnYXRlIEd0a1NldHRpbmdzIHRvIHdlYiBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSdz
IGEgbnVtYmVyIG9mIHByb3BlcnRpZXMgaW4gR3RrU2V0dGluZ3MgdGhhdCB3ZWIgcHJvY2VzcyB1
c2VzOgorCisgICAgICAgIC0gZ3RrLWN1cnNvci1ibGluaworICAgICAgICAtIGd0ay1jdXJzb3It
YmxpbmstdGltZQorICAgICAgICAtIGd0ay1mb250LW5hbWUKKyAgICAgICAgLSBndGstcHJpbWFy
eS1idXR0b24td2FycHMtc2xpZGVyCisgICAgICAgIC0gZ3RrLXRoZW1lLW5hbWUKKyAgICAgICAg
LSBndGsteGZ0LWFudGlhbGlhcworICAgICAgICAtIGd0ay14ZnQtZHBpCisgICAgICAgIC0gZ3Rr
LXhmdC1oaW50aW5nCisgICAgICAgIC0gZ3RrLXhmdC1oaW50c3R5bGUKKyAgICAgICAgLSBndGst
eGZ0LXJnYmEKKworICAgICAgICBXaGlsZSB3ZSBkbyBwcm9wYWdhdGUgZ3RrLXRoZW1lLW5hbWUs
IHdlIGRvbid0IGRvIGl0IGZvciBhbnkgb2YgdGhlIG90aGVyIHNldHRpbmdzLgorICAgICAgICBU
aGlzIG1lYW5zIHRoYXQgdGhleSBjYW4gb25seSBiZSBmZXRjaGVkIGZyb20geHNldHRpbmdzL2dz
ZXR0aW5ncy9zZXR0aW5ncyBwb3J0YWwKKyAgICAgICAgYnkgR1RLIGl0c2VsZiwgYnV0IGlmIHRo
ZSBhcHAgY2hhbmdlcyB0aGVtIG9yIGlmIHRoZXkgYXJlIGNoYW5nZWQgZnJvbSBpbnNwZWN0b3Is
CisgICAgICAgIHdlYiBwcm9jZXNzIHdvbid0IHNlZSB0aGF0LgorCisgICAgICAgIEFwcGx5IHNl
dHRpbmdzIGFmdGVyIHJlaW5pdGlhbGl6aW5nIGFzIHdlbGwsIGl0IHdhcyBvbmx5IGRvbmUgYWZ0
ZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgc28gZmFpbGVkIHdpdGggUFNPTi4KKworICAgICAg
ICBDbGVhbiB1cCBhIGZldyBvZGRpdGllcyBpbiBXZWJLaXRXZWJWaWV3QmFzZSBhbG9uZyB0aGUg
d2F5LgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6ZGVmYXVsdEZvbnROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnhmdEFudGlhbGlhcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjp4ZnRIaW50aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnhmdEhpbnRTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjp4ZnRSR0JBIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnhmdERQSSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjdXJzb3JC
bGluayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjdXJzb3JCbGlu
a1RpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cHJpbWFyeUJ1
dHRvbldhcnBzU2xpZGVyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHRoZW1lQ2hhbmdlZCk6CisgICAgICAgIChhcHBsaWNhdGlvblBy
ZWZlckRhcmtUaGVtZUNoYW5nZWQpOgorICAgICAgICAoZGVmYXVsdEZvbnRDaGFuZ2VkKToKKyAg
ICAgICAgKGZvbnRTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAoY3Vyc29yQmxpbmtTZXR0aW5n
c0NoYW5nZWQpOgorICAgICAgICAoc2Nyb2xsU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyk6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QmFzZVJvb3QpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVbnJvb3QpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVm
YXVsdEZvbnREaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvbnRT
ZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3Vyc29y
QmxpbmtTZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVmYXVsdEZvbnRE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250U2V0dGluZ3NEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2Up
OgorCiAyMDIxLTA3LTE1ICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+
CiAKICAgICAgICAgW0dUS10gQ2FuJ3QgY2xpY2sgbGlua3Mgd2l0aCB0b3VjaHNjcmVlbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCAyYmFlZjA2Y2FjYWIuLmJmNjRjZWFmNjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE3OSw2ICsxNzksMTUg
QEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGVuY29kZXIgPDwgdGhlbWVO
YW1lOworICAgIGVuY29kZXIgPDwgZGVmYXVsdEZvbnROYW1lOworICAgIGVuY29kZXIgPDwgeGZ0
QW50aWFsaWFzOworICAgIGVuY29kZXIgPDwgeGZ0SGludGluZzsKKyAgICBlbmNvZGVyIDw8IHhm
dEhpbnRTdHlsZTsKKyAgICBlbmNvZGVyIDw8IHhmdFJHQkE7CisgICAgZW5jb2RlciA8PCB4ZnRE
UEk7CisgICAgZW5jb2RlciA8PCBjdXJzb3JCbGluazsKKyAgICBlbmNvZGVyIDw8IGN1cnNvckJs
aW5rVGltZTsKKyAgICBlbmNvZGVyIDw8IHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcjsKICNlbmRp
ZgogICAgIAogICAgIGVuY29kZXIgPDwgaHR0cHNVcGdyYWRlRW5hYmxlZDsKQEAgLTU5Myw2ICs2
MDIsMjQgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjoKICNpZiBQTEFURk9STShHVEspCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRoZW1lTmFtZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1
bHRGb250TmFtZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnhmdEFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnhmdEhpbnRpbmcp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy54ZnRIaW50U3R5bGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy54ZnRSR0JBKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMueGZ0
RFBJKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMuY3Vyc29yQmxpbmspKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jdXJzb3JCbGlua1RpbWUpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaHR0
cHNVcGdyYWRlRW5hYmxlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjUxNzg5MjIxMmMyLi4wNzkxZjE2YTYyNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAg
LTI0OSw2ICsyNDksMTUgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyB0aGVtZU5hbWU7CisgICAgU3RyaW5nIGRlZmF1
bHRGb250TmFtZTsKKyAgICBpbnQgeGZ0QW50aWFsaWFzOworICAgIGludCB4ZnRIaW50aW5nOwor
ICAgIFN0cmluZyB4ZnRIaW50U3R5bGU7CisgICAgU3RyaW5nIHhmdFJHQkE7CisgICAgaW50IHhm
dERQSTsKKyAgICBib29sIGN1cnNvckJsaW5rOworICAgIGludCBjdXJzb3JCbGlua1RpbWU7Cisg
ICAgYm9vbCBwcmltYXJ5QnV0dG9uV2FycHNTbGlkZXI7CiAjZW5kaWYKICAgICAKICAgICBib29s
IGh0dHBzVXBncmFkZUVuYWJsZWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDIwZTg4ZDM4MTQwYi4uNzZi
YjkwNmY2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtNjA2LDYgKzYwNiw2OSBAQCBTdHJpbmcgUGFnZUNsaWVudElt
cGw6OnRoZW1lTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKK1N0cmluZyBQYWdl
Q2xpZW50SW1wbDo6ZGVmYXVsdEZvbnROYW1lKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlT3V0UHRy
PGNoYXI+IGZvbnROYW1lU2V0dGluZzsKKyAgICBnX29iamVjdF9nZXQoZ3RrX3dpZGdldF9nZXRf
c2V0dGluZ3MobV92aWV3V2lkZ2V0KSwgImd0ay1mb250LW5hbWUiLCAmZm9udE5hbWVTZXR0aW5n
Lm91dFB0cigpLCBudWxscHRyKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChmb250TmFt
ZVNldHRpbmcuZ2V0KCkpOworfQorCitpbnQgUGFnZUNsaWVudEltcGw6OnhmdEFudGlhbGlhcygp
IGNvbnN0Cit7CisgICAgaW50IGFudGlhbGlhc1NldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KGd0
a193aWRnZXRfZ2V0X3NldHRpbmdzKG1fdmlld1dpZGdldCksICJndGsteGZ0LWFudGlhbGlhcyIs
ICZhbnRpYWxpYXNTZXR0aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gYW50aWFsaWFzU2V0dGlu
ZzsKK30KKworaW50IFBhZ2VDbGllbnRJbXBsOjp4ZnRIaW50aW5nKCkgY29uc3QKK3sKKyAgICBp
bnQgaGludGluZ1NldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KGd0a193aWRnZXRfZ2V0X3NldHRp
bmdzKG1fdmlld1dpZGdldCksICJndGsteGZ0LWhpbnRpbmciLCAmaGludGluZ1NldHRpbmcsIG51
bGxwdHIpOworICAgIHJldHVybiBoaW50aW5nU2V0dGluZzsKK30KKworU3RyaW5nIFBhZ2VDbGll
bnRJbXBsOjp4ZnRIaW50U3R5bGUoKSBjb25zdAoreworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4g
aGludFN0eWxlU2V0dGluZzsKKyAgICBnX29iamVjdF9nZXQoZ3RrX3dpZGdldF9nZXRfc2V0dGlu
Z3MobV92aWV3V2lkZ2V0KSwgImd0ay14ZnQtaGludHN0eWxlIiwgJmhpbnRTdHlsZVNldHRpbmcu
b3V0UHRyKCksIG51bGxwdHIpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGhpbnRTdHls
ZVNldHRpbmcuZ2V0KCkpOworfQorCitTdHJpbmcgUGFnZUNsaWVudEltcGw6OnhmdFJHQkEoKSBj
b25zdAoreworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gcmdiYVNldHRpbmc7CisgICAgZ19vYmpl
Y3RfZ2V0KGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKG1fdmlld1dpZGdldCksICJndGsteGZ0LXJn
YmEiLCAmcmdiYVNldHRpbmcub3V0UHRyKCksIG51bGxwdHIpOworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KHJnYmFTZXR0aW5nLmdldCgpKTsKK30KKworaW50IFBhZ2VDbGllbnRJbXBsOjp4
ZnREUEkoKSBjb25zdAoreworICAgIGludCBkcGlTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChn
dGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLXhmdC1kcGkiLCAmZHBp
U2V0dGluZywgbnVsbHB0cik7CisgICAgcmV0dXJuIGRwaVNldHRpbmc7Cit9CisKK2Jvb2wgUGFn
ZUNsaWVudEltcGw6OmN1cnNvckJsaW5rKCkgY29uc3QKK3sKKyAgICBnYm9vbGVhbiBjdXJzb3JC
bGlua1NldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKG1f
dmlld1dpZGdldCksICJndGstY3Vyc29yLWJsaW5rIiwgJmN1cnNvckJsaW5rU2V0dGluZywgbnVs
bHB0cik7CisgICAgcmV0dXJuIGN1cnNvckJsaW5rU2V0dGluZyA/IHRydWUgOiBmYWxzZTsKK30K
KworaW50IFBhZ2VDbGllbnRJbXBsOjpjdXJzb3JCbGlua1RpbWUoKSBjb25zdAoreworICAgIGlu
dCBjdXJzb3JCbGlua1RpbWVTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dl
dF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAiZ3RrLWN1cnNvci1ibGluay10aW1lIiwgJmN1cnNv
ckJsaW5rVGltZVNldHRpbmcsIG51bGxwdHIpOworICAgIHJldHVybiBjdXJzb3JCbGlua1RpbWVT
ZXR0aW5nOworfQorCitib29sIFBhZ2VDbGllbnRJbXBsOjpwcmltYXJ5QnV0dG9uV2FycHNTbGlk
ZXIoKSBjb25zdAoreworICAgIGdib29sZWFuIGJ1dHRvblNldHRpbmc7CisgICAgZ19vYmplY3Rf
Z2V0KGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKG1fdmlld1dpZGdldCksICJndGstcHJpbWFyeS1i
dXR0b24td2FycHMtc2xpZGVyIiwgJmJ1dHRvblNldHRpbmcsIG51bGxwdHIpOworICAgIHJldHVy
biBidXR0b25TZXR0aW5nID8gdHJ1ZSA6IGZhbHNlOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjptYWtlVmlld0JsYW5rKGJvb2wgbWFrZUJsYW5rKQogewogICAgIHdlYmtpdFdlYlZpZXdCYXNl
TWFrZUJsYW5rKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIG1ha2VCbGFuayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
aW5kZXggNTZmNTk0ZmFhNmI2Li4yZGNkMTcwNmQ4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE3Niw2ICsxNzYsMTUgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVdlYlBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgU3RyaW5nIHRoZW1lTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBkZWZh
dWx0Rm9udE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgeGZ0QW50aWFsaWFzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgaW50IHhmdEhpbnRpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBT
dHJpbmcgeGZ0SGludFN0eWxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHhmdFJHQkEo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgeGZ0RFBJKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBjdXJzb3JCbGluaygpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBjdXJzb3JCbGlua1Rp
bWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYWtlVmlld0JsYW5rKGJvb2wpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCmluZGV4IDhiNTJmMzE3M2MwZC4uZGIwODMwNmFhYzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cApAQCAtMzAwLDYgKzMwMCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsK
ICAgICB1bnNpZ25lZCBsb25nIHRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCB7IDAgfTsKICAgICB1
bnNpZ25lZCBsb25nIHRoZW1lQ2hhbmdlZElEIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgYXBw
bGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIGRlZmF1
bHRGb250Q2hhbmdlZElEIHsgMCB9OwogCiAgICAgLy8gVmlldyBTdGF0ZS4KICAgICBPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZTsKQEAgLTM1Myw2ICszNTQsMzYg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3Rh
dGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlYKICAgICBwcml2LT51cGRhdGVBY3Rpdml0eVN0YXRl
VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKK3N0YXRpYyB2b2lkIHRoZW1lQ2hhbmdlZChX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmlld0Jhc2UtPnByaXYt
PnBhZ2VQcm94eS0+dGhlbWVEaWRDaGFuZ2UoKTsKK30KKworc3RhdGljIHZvaWQgYXBwbGljYXRp
b25QcmVmZXJEYXJrVGhlbWVDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkK
K3sKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5lZmZlY3RpdmVBcHBlYXJhbmNl
RGlkQ2hhbmdlKCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlZmF1bHRGb250Q2hhbmdlZChXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQ
cm94eS0+ZGVmYXVsdEZvbnREaWRDaGFuZ2UoKTsKK30KKworc3RhdGljIHZvaWQgZm9udFNldHRp
bmdzQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSAqd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmll
d0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+Zm9udFNldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKK3N0
YXRpYyB2b2lkIGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlICp3
ZWJWaWV3QmFzZSkKK3sKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5jdXJzb3JC
bGlua1NldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHNjcm9sbFNldHRpbmdz
Q2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSAqd2ViVmlld0Jhc2UpCit7CisgICAgd2ViVmlld0Jh
c2UtPnByaXYtPnBhZ2VQcm94eS0+c2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2UoKTsKK30KKwogI2lm
ICFVU0UoR1RLNCkKIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVudChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyosIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSkKIHsKQEAgLTQwMSwxNiArNDMyLDYgQEAgc3RhdGljIGdib29sZWFuIHRvcGxldmVs
V2luZG93U3RhdGVFdmVudChHdGtXaWRnZXQqLCBHZGtFdmVudFdpbmRvd1N0YXRlKiBldmVudCwK
ICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHRoZW1lQ2hhbmdlZChXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCi17Ci0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQ
cm94eS0+dGhlbWVEaWRDaGFuZ2UoKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbGljYXRpb25QcmVm
ZXJEYXJrVGhlbWVDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKLXsKLSAg
ICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5lZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hh
bmdlKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRvcGxldmVsV2luZG93UmVhbGl6ZWQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewogICAgIGd0a193aWRnZXRfcmVhbGl6ZShHVEtfV0lE
R0VUKHdlYlZpZXdCYXNlKSk7CkBAIC00NDQsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWUKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHByaXYtPnRvcGxldmVs
T25TY3JlZW5XaW5kb3csIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCk7CiAgICAgICAg
IHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IDA7CiAgICAgfQotICAgIGlmIChwcml2
LT50aGVtZUNoYW5nZWRJRCB8fCBwcml2LT5hcHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUlEKSB7
CisgICAgaWYgKHByaXYtPnRoZW1lQ2hhbmdlZElEIHx8IHByaXYtPmFwcGxpY2F0aW9uUHJlZmVy
RGFya1RoZW1lSUQgfHwgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQpIHsKICAgICAgICAgYXV0
byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHByaXYtPnRv
cGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICAgICAgaWYgKHByaXYtPnRoZW1lQ2hhbmdlZElE
KSB7CiAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qoc2V0dGluZ3MsIHBy
aXYtPnRoZW1lQ2hhbmdlZElEKTsKQEAgLTQ1NCw2ICs0NzUsMTMgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWUKICAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChzZXR0aW5n
cywgcHJpdi0+YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCk7CiAgICAgICAgICAgICBwcml2
LT5hcHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUlEID0gMDsKICAgICAgICAgfQorICAgICAgICBp
ZiAocHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQpIHsKKyAgICAgICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJfZGlzY29ubmVjdChzZXR0aW5ncywgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQpOwor
ICAgICAgICAgICAgcHJpdi0+ZGVmYXVsdEZvbnRDaGFuZ2VkSUQgPSAwOworICAgICAgICB9Cisg
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0aW5ncywgcmVp
bnRlcnByZXRfY2FzdDxncG9pbnRlcj4oZm9udFNldHRpbmdzQ2hhbmdlZCksIHdlYlZpZXdCYXNl
KTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdz
LCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihjdXJzb3JCbGlua1NldHRpbmdzQ2hhbmdlZCks
IHdlYlZpZXdCYXNlKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m
dW5jKHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihzY3JvbGxTZXR0aW5nc0No
YW5nZWQpLCB3ZWJWaWV3QmFzZSk7CiAgICAgfQogCiAgICAgcHJpdi0+dG9wbGV2ZWxPblNjcmVl
bldpbmRvdyA9IHdpbmRvdzsKQEAgLTQ4OCw2ICs1MTYsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWUKICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5
OjpndGstdGhlbWUtbmFtZSIsIEdfQ0FMTEJBQ0sodGhlbWVDaGFuZ2VkKSwgd2ViVmlld0Jhc2Up
OwogICAgIHByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQgPQogICAgICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1hcHBsaWNhdGlvbi1w
cmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJBQ0soYXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVD
aGFuZ2VkKSwgd2ViVmlld0Jhc2UpOworICAgIHByaXYtPmRlZmF1bHRGb250Q2hhbmdlZElEID0K
KyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5OjpndGst
Zm9udC1uYW1lIiwgR19DQUxMQkFDSyhkZWZhdWx0Rm9udENoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7
CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0
LWFudGlhbGlhcyIsIEdfQ0FMTEJBQ0soZm9udFNldHRpbmdzQ2hhbmdlZCksIHdlYlZpZXdCYXNl
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay14
ZnQtZHBpIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2ViVmlld0Jhc2UpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1o
aW50aW5nIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2ViVmlld0Jhc2UpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1o
aW50c3R5bGUiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7
CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0
LXJnYmEiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5OjpndGstY3Vyc29y
LWJsaW5rIiwgR19DQUxMQkFDSyhjdXJzb3JCbGlua1NldHRpbmdzQ2hhbmdlZCksIHdlYlZpZXdC
YXNlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0
ay1jdXJzb3ItYmxpbmstdGltZSIsIEdfQ0FMTEJBQ0soY3Vyc29yQmxpbmtTZXR0aW5nc0NoYW5n
ZWQpLCB3ZWJWaWV3QmFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdz
LCAibm90aWZ5OjpndGstcHJpbWFyeS1idXR0b24td2FycHMtc2xpZGVyIiwgR19DQUxMQkFDSyhz
Y3JvbGxTZXR0aW5nc0NoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7CiAKICAgICBpZiAoZ3RrX3dpZGdl
dF9nZXRfcmVhbGl6ZWQoR1RLX1dJREdFVCh3aW5kb3cpKSkKICAgICAgICAgZ3RrX3dpZGdldF9y
ZWFsaXplKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKQEAgLTE3ODUsMTMgKzE4MjMsMTkgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSb290KEd0a1dpZGdldCogd2lkZ2V0KQogCiAg
ICAgYXV0byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHBy
aXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICBwcml2LT50aGVtZUNoYW5nZWRJRCA9
Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3Rr
LXRoZW1lLW5hbWUiLCBHX0NBTExCQUNLKCtbXShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UpIHsKLSAgICAgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPnRoZW1lRGlk
Q2hhbmdlKCk7Ci0gICAgICAgIH0pLCB3aWRnZXQpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay10aGVtZS1uYW1lIiwgR19DQUxMQkFDSyh0
aGVtZUNoYW5nZWQpLCB3aWRnZXQpOwogICAgIHByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1Ro
ZW1lSUQgPQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3Rp
Znk6Omd0ay1hcHBsaWNhdGlvbi1wcmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJBQ0soK1tdKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkgewotICAgICAgICAgICAgd2ViVmlld0Jhc2Ut
PnByaXYtPnBhZ2VQcm94eS0+ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpOwotICAgICAg
ICB9KSwgd2lkZ2V0KTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdz
LCAibm90aWZ5OjpndGstYXBwbGljYXRpb24tcHJlZmVyLWRhcmstdGhlbWUiLCBHX0NBTExCQUNL
KGFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lQ2hhbmdlZCksIHdpZGdldCk7CisgICAgcHJpdi0+
ZGVmYXVsdEZvbnRDaGFuZ2VkSUQgPQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
c2V0dGluZ3MsICJub3RpZnk6Omd0ay1mb250LW5hbWUiLCBHX0NBTExCQUNLKGRlZmF1bHRGb250
Q2hhbmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdz
LCAibm90aWZ5OjpndGsteGZ0LWFudGlhbGlhcyIsIEdfQ0FMTEJBQ0soZm9udFNldHRpbmdzQ2hh
bmdlZCksIHdpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAi
bm90aWZ5OjpndGsteGZ0LWRwaSIsIEdfQ0FMTEJBQ0soZm9udFNldHRpbmdzQ2hhbmdlZCksIHdp
ZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5Ojpn
dGsteGZ0LWhpbnRpbmciLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3aWRnZXQp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhm
dC1oaW50c3R5bGUiLCBHX0NBTExCQUNLKGZvbnRTZXR0aW5nc0NoYW5nZWQpLCB3aWRnZXQpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1y
Z2JhIiwgR19DQUxMQkFDSyhmb250U2V0dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0KTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1jdXJzb3ItYmxpbmsi
LCBHX0NBTExCQUNLKGN1cnNvckJsaW5rU2V0dGluZ3NDaGFuZ2VkKSwgd2lkZ2V0KTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1jdXJzb3ItYmxp
bmstdGltZSIsIEdfQ0FMTEJBQ0soY3Vyc29yQmxpbmtTZXR0aW5nc0NoYW5nZWQpLCB3aWRnZXQp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXBy
aW1hcnktYnV0dG9uLXdhcnBzLXNsaWRlciIsIEdfQ0FMTEJBQ0soc2Nyb2xsU2V0dGluZ3NDaGFu
Z2VkKSwgd2lkZ2V0KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbnJvb3Qo
R3RrV2lkZ2V0KiB3aWRnZXQpCkBAIC0xODA4LDYgKzE4NTIsMTAgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VVbnJvb3QoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgYXV0byogc2V0dGlu
Z3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHByaXYtPnRvcGxldmVsT25T
Y3JlZW5XaW5kb3cpKTsKICAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2LT50aGVtZUNo
YW5nZWRJRCwgc2V0dGluZ3MpOwogICAgIGdfY2xlYXJfc2lnbmFsX2hhbmRsZXIoJnByaXYtPmFw
cGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQsIHNldHRpbmdzKTsKKyAgICBnX2NsZWFyX3NpZ25h
bF9oYW5kbGVyKCZwcml2LT5kZWZhdWx0Rm9udENoYW5nZWRJRCwgc2V0dGluZ3MpOworICAgIGdf
c2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0aW5ncywgcmVpbnRlcnByZXRf
Y2FzdDxncG9pbnRlcj4oZm9udFNldHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7CisgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVycHJldF9jYXN0
PGdwb2ludGVyPihjdXJzb3JCbGlua1NldHRpbmdzQ2hhbmdlZCksIHdpZGdldCk7CisgICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVycHJldF9j
YXN0PGdwb2ludGVyPihzY3JvbGxTZXR0aW5nc0NoYW5nZWQpLCB3aWRnZXQpOwogICAgIHByaXYt
PnRvcGxldmVsT25TY3JlZW5XaW5kb3cgPSBudWxscHRyOwogCiAgICAgT3B0aW9uU2V0PEFjdGl2
aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggMDhjYzI4OTAzOTkyLi5mNzk2MWVlNGUyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTYyNiw2ICs2MjYsMTUgQEAgcHVibGljOgogCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIHZpcnR1YWwgU3RyaW5nIHRoZW1lTmFtZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBkZWZhdWx0Rm9udE5hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBpbnQgeGZ0QW50aWFsaWFzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHhmdEhpbnRp
bmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgeGZ0SGludFN0eWxlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHhmdFJHQkEoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBpbnQgeGZ0RFBJKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjdXJzb3JCbGluaygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBjdXJzb3JCbGlua1RpbWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcigpIGNvbnN0ID0gMDsK
ICNlbmRpZgogCiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCBiYWMyOGI3YjlkYjQuLmQxZjI5ZDg4NjZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04MjIyLDYgKzgyMjIsMTUgQEAgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkm
IHByb2MKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBwYXJhbWV0ZXJzLnRoZW1lTmFtZSA9IHBh
Z2VDbGllbnQoKS50aGVtZU5hbWUoKTsKKyAgICBwYXJhbWV0ZXJzLmRlZmF1bHRGb250TmFtZSA9
IHBhZ2VDbGllbnQoKS5kZWZhdWx0Rm9udE5hbWUoKTsKKyAgICBwYXJhbWV0ZXJzLnhmdEFudGlh
bGlhcyA9IHBhZ2VDbGllbnQoKS54ZnRBbnRpYWxpYXMoKTsKKyAgICBwYXJhbWV0ZXJzLnhmdEhp
bnRpbmcgPSBwYWdlQ2xpZW50KCkueGZ0SGludGluZygpOworICAgIHBhcmFtZXRlcnMueGZ0SGlu
dFN0eWxlID0gcGFnZUNsaWVudCgpLnhmdEhpbnRTdHlsZSgpOworICAgIHBhcmFtZXRlcnMueGZ0
UkdCQSA9IHBhZ2VDbGllbnQoKS54ZnRSR0JBKCk7CisgICAgcGFyYW1ldGVycy54ZnREUEkgPSBw
YWdlQ2xpZW50KCkueGZ0RFBJKCk7CisgICAgcGFyYW1ldGVycy5jdXJzb3JCbGluayA9IHBhZ2VD
bGllbnQoKS5jdXJzb3JCbGluaygpOworICAgIHBhcmFtZXRlcnMuY3Vyc29yQmxpbmtUaW1lID0g
cGFnZUNsaWVudCgpLmN1cnNvckJsaW5rVGltZSgpOworICAgIHBhcmFtZXRlcnMucHJpbWFyeUJ1
dHRvbldhcnBzU2xpZGVyID0gcGFnZUNsaWVudCgpLnByaW1hcnlCdXR0b25XYXJwc1NsaWRlcigp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKSAmJiBQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMWRkZTJhYTBh
ZDY0Li4wY2I2Yjg4NWZiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC05NjIsNyArOTYyLDEyIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShHVEspCiAgICAgUGxh
dGZvcm1WaWV3V2lkZ2V0IHZpZXdXaWRnZXQoKTsKICAgICBib29sIG1ha2VHTENvbnRleHRDdXJy
ZW50KCk7CisKICAgICB2b2lkIHRoZW1lRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBkZWZhdWx0Rm9u
dERpZENoYW5nZSgpOworICAgIHZvaWQgZm9udFNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgdm9p
ZCBjdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBzY3JvbGxTZXR0aW5n
c0RpZENoYW5nZSgpOwogI2VuZGlmCiAKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNvbG9yPiYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29s
b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKaW5kZXggMWE3ZmE2Yjc1ZWMyLi5hZGQ5Y2QzMTc3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0xMDYsNCArMTA2LDQ3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp0aGVtZURpZENoYW5nZSgpCiAgICAgZWZmZWN0aXZlQXBwZWFy
YW5jZURpZENoYW5nZSgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVmYXVsdEZvbnREaWRD
aGFuZ2UoKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGVmYXVsdEZvbnREaWRDaGFuZ2UocGFn
ZUNsaWVudCgpLmRlZmF1bHRGb250TmFtZSgpKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpm
b250U2V0dGluZ3NEaWRDaGFuZ2UoKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGFudGlhbGlhcyA9IHBhZ2VDbGllbnQoKS54ZnRB
bnRpYWxpYXMoKTsKKyAgICBpbnQgaGludGluZyA9IHBhZ2VDbGllbnQoKS54ZnRIaW50aW5nKCk7
CisgICAgU3RyaW5nIGhpbnRTdHlsZSA9IHBhZ2VDbGllbnQoKS54ZnRIaW50U3R5bGUoKTsKKyAg
ICBTdHJpbmcgcmdiYSA9IHBhZ2VDbGllbnQoKS54ZnRSR0JBKCk7CisgICAgaW50IGRwaSA9IHBh
Z2VDbGllbnQoKS54ZnREUEkoKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRT
ZXR0aW5nc0RpZENoYW5nZShhbnRpYWxpYXMsIGhpbnRpbmcsIGhpbnRTdHlsZSwgcmdiYSwgZHBp
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjdXJzb3JCbGlua1NldHRpbmdzRGlkQ2hhbmdl
KCkKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGJvb2wgY3Vyc29yQmxpbmsgPSBwYWdlQ2xpZW50KCkuY3Vyc29yQmxpbmsoKTsKKyAgICBp
bnQgY3Vyc29yQmxpbmtUaW1lID0gcGFnZUNsaWVudCgpLmN1cnNvckJsaW5rVGltZSgpOworCisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3Vyc29yQmxpbmtTZXR0aW5nc0RpZENoYW5nZShj
dXJzb3JCbGluaywgY3Vyc29yQmxpbmtUaW1lKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
Y3JvbGxTZXR0aW5nc0RpZENoYW5nZSgpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlciA9
IHBhZ2VDbGllbnQoKS5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIoKTsKKworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNjcm9sbFNldHRpbmdzRGlkQ2hhbmdlKHByaW1hcnlCdXR0b25XYXJw
c1NsaWRlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggY2Q0NDhjNTMzYjA3Li45YTJiNWY4
YTBkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC03MzMsNiArNzMzLDExIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogI2lmIFBMQVRG
T1JNKEdUSykKICAgICB0aGVtZURpZENoYW5nZShXVEZNb3ZlKHBhcmFtZXRlcnMudGhlbWVOYW1l
KSk7CisgICAgZGVmYXVsdEZvbnREaWRDaGFuZ2UoV1RGTW92ZShwYXJhbWV0ZXJzLmRlZmF1bHRG
b250TmFtZSkpOworICAgIGZvbnRTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0ZXJzLnhmdEFudGlh
bGlhcywgcGFyYW1ldGVycy54ZnRIaW50aW5nLCBXVEZNb3ZlKHBhcmFtZXRlcnMueGZ0SGludFN0
eWxlKSwKKyAgICAgICAgV1RGTW92ZShwYXJhbWV0ZXJzLnhmdFJHQkEpLCBwYXJhbWV0ZXJzLnhm
dERQSSk7CisgICAgY3Vyc29yQmxpbmtTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0ZXJzLmN1cnNv
ckJsaW5rLCBwYXJhbWV0ZXJzLmN1cnNvckJsaW5rVGltZSk7CisgICAgc2Nyb2xsU2V0dGluZ3NE
aWRDaGFuZ2UocGFyYW1ldGVycy5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIpOwogI2VuZGlmCiAK
ICAgICBlZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHBhcmFtZXRlcnMudXNlRGFya0FwcGVh
cmFuY2UsIHBhcmFtZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpOwpAQCAtOTY3
LDYgKzk3MiwxNSBAQCB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9k
ZSAhPSBwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHNldExheWVySG9zdGlu
Z01vZGUocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKTsKIAorI2lmIFBMQVRGT1JNKEdUSykK
KyAgICB0aGVtZURpZENoYW5nZShXVEZNb3ZlKHBhcmFtZXRlcnMudGhlbWVOYW1lKSk7CisgICAg
ZGVmYXVsdEZvbnREaWRDaGFuZ2UoV1RGTW92ZShwYXJhbWV0ZXJzLmRlZmF1bHRGb250TmFtZSkp
OworICAgIGZvbnRTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0ZXJzLnhmdEFudGlhbGlhcywgcGFy
YW1ldGVycy54ZnRIaW50aW5nLCBXVEZNb3ZlKHBhcmFtZXRlcnMueGZ0SGludFN0eWxlKSwKKyAg
ICAgICAgV1RGTW92ZShwYXJhbWV0ZXJzLnhmdFJHQkEpLCBwYXJhbWV0ZXJzLnhmdERQSSk7Cisg
ICAgY3Vyc29yQmxpbmtTZXR0aW5nc0RpZENoYW5nZShwYXJhbWV0ZXJzLmN1cnNvckJsaW5rLCBw
YXJhbWV0ZXJzLmN1cnNvckJsaW5rVGltZSk7CisgICAgc2Nyb2xsU2V0dGluZ3NEaWRDaGFuZ2Uo
cGFyYW1ldGVycy5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIpOworI2VuZGlmCisKICAgICBwbGF0
Zm9ybVJlaW5pdGlhbGl6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggMzYyMzM1ZmRkNzg1Li40ZjdjYTUzZGVlNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg5NSw2ICs4OTUsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2hvd0Vtb2ppUGlja2VyKFdlYkNvcmU6OkZyYW1lJik7CiAKICAg
ICB2b2lkIHRoZW1lRGlkQ2hhbmdlKFN0cmluZyYmKTsKKyAgICB2b2lkIGRlZmF1bHRGb250RGlk
Q2hhbmdlKFN0cmluZyYmKTsKKyAgICB2b2lkIGZvbnRTZXR0aW5nc0RpZENoYW5nZShpbnQgYW50
aWFsaWFzLCBpbnQgaGludGluZywgU3RyaW5nJiYgaGludFN0eWxlLCBTdHJpbmcmJiByZ2JhLCBp
bnQgZHBpKTsKKyAgICB2b2lkIGN1cnNvckJsaW5rU2V0dGluZ3NEaWRDaGFuZ2UoYm9vbCBjdXJz
b3JCbGlrbiwgaW50IGN1cnNvckJsaW5rVGltZSk7CisgICAgdm9pZCBzY3JvbGxTZXR0aW5nc0Rp
ZENoYW5nZShib29sIHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcik7CiAjZW5kaWYKIAogICAgIHZv
aWQgZGlkQXBwbHlTdHlsZSgpOwpAQCAtMjMyOCw2ICsyMzMyLDE1IEBAIHByaXZhdGU6CiAKICNp
ZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIG1fdGhlbWVOYW1lOworICAgIFN0cmluZyBtX2Rl
ZmF1bHRGb250TmFtZTsKKyAgICBpbnQgbV94ZnRBbnRpYWxpYXM7CisgICAgaW50IG1feGZ0SGlu
dGluZzsKKyAgICBTdHJpbmcgbV94ZnRIaW50U3R5bGU7CisgICAgU3RyaW5nIG1feGZ0UkdCQTsK
KyAgICBpbnQgbV94ZnREUEk7CisgICAgYm9vbCBtX2N1cnNvckJsaW5rOworICAgIGludCBtX2N1
cnNvckJsaW5rVGltZTsKKyAgICBib29sIG1fcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyOwogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMWNl
ZGE3YTdiY2FiLi5hMzk0YTQ0ZjMzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTE3LDYgKzUxNywxMCBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFRoZW1lRGlk
Q2hhbmdlKFN0cmluZyB0aGVtZU5hbWUpCisgICAgRGVmYXVsdEZvbnREaWRDaGFuZ2UoU3RyaW5n
IGRlZmF1bHRGb250TmFtZSkKKyAgICBGb250U2V0dGluZ3NEaWRDaGFuZ2UoaW50IGFudGlhbGlh
cywgaW50IGhpbnRpbmcsIFN0cmluZyBoaW50U3R5bGUsIFN0cmluZyByZ2JhLCBpbnQgZHBpKQor
ICAgIEN1cnNvckJsaW5rU2V0dGluZ3NEaWRDaGFuZ2UoYm9vbCBjdXJzb3JCbGluaywgaW50IGN1
cnNvckJsaW5rVGltZSkKKyAgICBTY3JvbGxTZXR0aW5nc0RpZENoYW5nZShib29sIHByaW1hcnlC
dXR0b25XYXJwc1NsaWRlcikKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5k
ZXggY2NjZDhjYTE5MzQ5Li4wMmEyMWI3MjI4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTE4OSw0ICsxODksNjIg
QEAgdm9pZCBXZWJQYWdlOjp0aGVtZURpZENoYW5nZShTdHJpbmcmJiB0aGVtZU5hbWUpCiAgICAg
UGFnZTo6dXBkYXRlU3R5bGVGb3JBbGxQYWdlc0FmdGVyR2xvYmFsQ2hhbmdlSW5FbnZpcm9ubWVu
dCgpOwogfQogCit2b2lkIFdlYlBhZ2U6OmRlZmF1bHRGb250RGlkQ2hhbmdlKFN0cmluZyYmIGRl
ZmF1bHRGb250TmFtZSkKK3sKKyAgICBpZiAobV9kZWZhdWx0Rm9udE5hbWUgPT0gZGVmYXVsdEZv
bnROYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlZmF1bHRGb250TmFtZSA9IFdURk1v
dmUoZGVmYXVsdEZvbnROYW1lKTsKKyAgICBnX29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9k
ZWZhdWx0KCksICJndGstZm9udC1uYW1lIiwgbV9kZWZhdWx0Rm9udE5hbWUudXRmOCgpLmRhdGEo
KSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Zm9udFNldHRpbmdzRGlkQ2hhbmdlKGlu
dCBhbnRpYWxpYXMsIGludCBoaW50aW5nLCBTdHJpbmcmJiBoaW50U3R5bGUsIFN0cmluZyYmIHJn
YmEsIGludCBkcGkpCit7CisgICAgaWYgKG1feGZ0QW50aWFsaWFzICE9IGFudGlhbGlhcykgewor
ICAgICAgICBtX3hmdEFudGlhbGlhcyA9IGFudGlhbGlhczsKKyAgICAgICAgZ19vYmplY3Rfc2V0
KGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgpLCAiZ3RrLXhmdC1hbnRpYWxpYXMiLCBtX3hmdEFu
dGlhbGlhcywgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKG1feGZ0SGludGluZyAhPSBoaW50
aW5nKSB7CisgICAgICAgIG1feGZ0SGludGluZyA9IGhpbnRpbmc7CisgICAgICAgIGdfb2JqZWN0
X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKSwgImd0ay14ZnQtaGludGluZyIsIG1feGZ0
SGludGluZywgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKG1feGZ0SGludFN0eWxlICE9IGhp
bnRTdHlsZSkgeworICAgICAgICBtX3hmdEhpbnRTdHlsZSA9IFdURk1vdmUoaGludFN0eWxlKTsK
KyAgICAgICAgZ19vYmplY3Rfc2V0KGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgpLCAiZ3RrLXhm
dC1oaW50c3R5bGUiLCBtX3hmdEhpbnRTdHlsZSwgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYg
KG1feGZ0UkdCQSAhPSByZ2JhKSB7CisgICAgICAgIG1feGZ0UkdCQSA9IFdURk1vdmUocmdiYSk7
CisgICAgICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKSwgImd0ay14
ZnQtcmdiYSIsIG1feGZ0UkdCQSwgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKG1feGZ0RFBJ
ICE9IGRwaSkgeworICAgICAgICBtX3hmdERQSSA9IGRwaTsKKyAgICAgICAgZ19vYmplY3Rfc2V0
KGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgpLCAiZ3RrLXhmdC1kcGkiLCBtX3hmdERQSSwgbnVs
bHB0cik7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OmN1cnNvckJsaW5rU2V0dGluZ3NEaWRD
aGFuZ2UoYm9vbCBjdXJzb3JCbGluaywgaW50IGN1cnNvckJsaW5rVGltZSkKK3sKKyAgICBpZiAo
bV9jdXJzb3JCbGluayAhPSBjdXJzb3JCbGluaykgeworICAgICAgICBtX2N1cnNvckJsaW5rID0g
Y3Vyc29yQmxpbms7CisgICAgICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1
bHQoKSwgImd0ay1jdXJzb3ItYmxpbmsiLCBtX2N1cnNvckJsaW5rLCBudWxscHRyKTsKKyAgICB9
CisKKyAgICBpZiAobV9jdXJzb3JCbGlua1RpbWUgIT0gY3Vyc29yQmxpbmtUaW1lKSB7CisgICAg
ICAgIG1fY3Vyc29yQmxpbmtUaW1lID0gY3Vyc29yQmxpbmtUaW1lOworICAgICAgICBnX29iamVj
dF9zZXQoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGstY3Vyc29yLWJsaW5rLXRpbWUi
LCBtX2N1cnNvckJsaW5rVGltZSwgbnVsbHB0cik7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6
OnNjcm9sbFNldHRpbmdzRGlkQ2hhbmdlKGJvb2wgcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKQor
eworICAgIGlmIChtX3ByaW1hcnlCdXR0b25XYXJwc1NsaWRlciAhPSBwcmltYXJ5QnV0dG9uV2Fy
cHNTbGlkZXIpIHsKKyAgICAgICAgbV9wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIgPSBwcmltYXJ5
QnV0dG9uV2FycHNTbGlkZXI7CisgICAgICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0
X2RlZmF1bHQoKSwgImd0ay1wcmltYXJ5LWJ1dHRvbi13YXJwcy1zbGlkZXIiLCBtX3ByaW1hcnlC
dXR0b25XYXJwc1NsaWRlciwgbnVsbHB0cik7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLS0gCjIuMzEuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433788</attachid>
            <date>2021-07-19 07:41:08 -0700</date>
            <delta_ts>2021-07-20 02:07:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227854-20210719194013.patch</filename>
            <type>text/plain</type>
            <size>46717</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzMTE2NzUyZDAzMjE2YTdm
NTJkODQxYzNmYTdlNDM3NzkyOTQ2MDUuLmQyNTJjYzZlZWRiNWIyNDViNjJlNTgyZWE3NjVlNWNk
YzFjYTk4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTAgQEAKKzIwMjEtMDctMTkgIEFsZXhhbmRl
ciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBQcm9wYWdh
dGUgR3RrU2V0dGluZ3MgdG8gd2ViIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlJ3MgYSBudW1iZXIgb2YgcHJvcGVydGllcyBpbiBH
dGtTZXR0aW5ncyB0aGF0IHdlYiBwcm9jZXNzIHVzZXM6CisKKyAgICAgICAgLSBndGstY3Vyc29y
LWJsaW5rCisgICAgICAgIC0gZ3RrLWN1cnNvci1ibGluay10aW1lCisgICAgICAgIC0gZ3RrLWZv
bnQtbmFtZQorICAgICAgICAtIGd0ay1wcmltYXJ5LWJ1dHRvbi13YXJwcy1zbGlkZXIKKyAgICAg
ICAgLSBndGstdGhlbWUtbmFtZQorICAgICAgICAtIGd0ay14ZnQtYW50aWFsaWFzCisgICAgICAg
IC0gZ3RrLXhmdC1kcGkKKyAgICAgICAgLSBndGsteGZ0LWhpbnRpbmcKKyAgICAgICAgLSBndGst
eGZ0LWhpbnRzdHlsZQorICAgICAgICAtIGd0ay14ZnQtcmdiYQorCisgICAgICAgIFdoaWxlIHdl
IGRvIHByb3BhZ2F0ZSBndGstdGhlbWUtbmFtZSwgd2UgZG9uJ3QgZG8gaXQgZm9yIGFueSBvZiB0
aGUgb3RoZXIgc2V0dGluZ3MuCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCB0aGV5IGNhbiBvbmx5
IGJlIGZldGNoZWQgZnJvbSBYU2V0dGluZ3MvR1NldHRpbmdzL3NldHRpbmdzIHBvcnRhbAorICAg
ICAgICBieSBHVEsgaXRzZWxmLCBidXQgaWYgdGhlIGFwcCBjaGFuZ2VzIHRoZW0gb3IgaWYgdGhl
eSBhcmUgY2hhbmdlZCBmcm9tIGluc3BlY3RvciwKKyAgICAgICAgd2ViIHByb2Nlc3NlcyB3b24n
dCBzZWUgdGhhdC4KKworICAgICAgICBJbnRyb2R1Y2UgR3RrU2V0dGluZ3NNYW5hZ2VyIGFzIGEg
c3BlY2lmaWMgcGxhY2UgdGhhdCBsaXN0ZW5zIHRvIHByZWZlcmVuY2VzCisgICAgICAgIGNoYW5n
ZXMgYW5kIG5vdGlmaWVzIHRoZSB3ZWIgcHJvY2Vzcywgd2hlcmUgR3RrU2V0dGluZ3NNYW5hZ2Vy
UHJveHkgdXBkYXRlcworICAgICAgICBHdGtTZXR0aW5ncyBvbiB0aGF0IHNpZGUuIEtlZXAgdGhl
IGRhcmsgbW9kZSBwcmVmZXJlbmNlIHNlcGFyYXRlIHNpbmNlIHRoZXJlJ3MKKyAgICAgICAgZXhp
c3RpbmcgY3Jvc3MtcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmUgZm9yIGl0LgorCisgICAgICAgIEFw
cGx5IHNldHRpbmdzIGFmdGVyIHJlaW5pdGlhbGl6aW5nIGFzIHdlbGwsIGl0IHdhcyBvbmx5IGRv
bmUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgc28gZmFpbGVkIHdpdGggUFNPTi4KKwor
ICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvR3RrU2V0dGluZ3NTdGF0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc1N0YXRlOjpHdGtTZXR0aW5nc1N0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvZ3RrL0d0a1NldHRpbmdzU3RhdGUuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL2d0ay9O
YXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFz
ZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VS
b290KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVW5yb290KToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01h
bmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjpz
aW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OnRoZW1lTmFt
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6Zm9udE5hbWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OnhmdEFudGlhbGlh
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6eGZ0SGludGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6eGZ0SGludFN0
eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjp4ZnRSR0JB
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjp4ZnREUEkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OmN1cnNvckJsaW5rIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjpjdXJzb3JCbGlua1Rp
bWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OnByaW1hcnlC
dXR0b25XYXJwc1NsaWRlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFu
YWdlcjo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01h
bmFnZXI6Okd0a1NldHRpbmdzTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9HdGtT
ZXR0aW5nc01hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFu
YWdlcjo6c2V0dGluZ3NTdGF0ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXJQcm94
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6
c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyUHJveHk6Okd0
a1NldHRpbmdzTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5h
Z2VyUHJveHk6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGlu
Z3NNYW5hZ2VyUHJveHk6OmFwcGx5U2V0dGluZ3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3Rr
L0d0a1NldHRpbmdzTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Z3RrL0d0a1NldHRpbmdzTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAyMS0w
Ny0xNSAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgogCiAgICAgICAg
IFtHVEtdIENhbid0IGNsaWNrIGxpbmtzIHdpdGggdG91Y2hzY3JlZW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGQ2Nzk3ODVjYTNiZDU4YjJlZDJjZTA4NzY1ZWI1NTcwMWJmNWU3MjMuLjg5
ODYwODJhZjc4NTQ3ZmNjZTQ0NzVkMDUzMTVkMzgxOWY5MTQwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtMzYsNiArMzYsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfVU5JRklFRF9TT1VS
Q0VfTElTVF9GSUxFUwogbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlcgogCisgICAgV2ViUHJvY2Vzcy9ndGsvR3Rr
U2V0dGluZ3NNYW5hZ2VyUHJveHkKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvcgogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDJiYWVmMDZjYWNhYjNlNTE1ZTcwNDZkNTE3
YTUzNTZiZjAzYzNjMzAuLjU2NWZkYjZiYTk5MjQzYzU4YTJlMjRiNjJmYzdiNzkyNWUwNzdkYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2Fu
VXNlQ3JlZGVudGlhbFN0b3JhZ2U7CiAKICNpZiBQTEFURk9STShHVEspCi0gICAgZW5jb2RlciA8
PCB0aGVtZU5hbWU7CisgICAgZW5jb2RlciA8PCBndGtTZXR0aW5nczsKICNlbmRpZgogICAgIAog
ICAgIGVuY29kZXIgPDwgaHR0cHNVcGdyYWRlRW5hYmxlZDsKQEAgLTU5MSw3ICs1OTEsNyBAQCBz
dGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAj
aWYgUExBVEZPUk0oR1RLKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50aGVt
ZU5hbWUpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5ndGtTZXR0aW5ncykp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDY1MTc4OTIyMTJj
MjM5OWUxYWFjMzZlYTZiNmZjM2IxNTJmZDU4OWQuLmYyYjg0MTM3ZGY0NDkxZDFhNzU2YWUwNThl
M2Y1OTg2M2VkYWEzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKQEAgLTU1LDYgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsaWNhdGlvbk1hbmlmZXN0Lmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNs
dWRlICJHdGtTZXR0aW5nc1N0YXRlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBEZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKQEAgLTI0OCw3ICsyNTIsNyBAQCBzdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBX
ZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKIAogI2lm
IFBMQVRGT1JNKEdUSykKLSAgICBTdHJpbmcgdGhlbWVOYW1lOworICAgIEd0a1NldHRpbmdzU3Rh
dGUgZ3RrU2V0dGluZ3M7CiAjZW5kaWYKICAgICAKICAgICBib29sIGh0dHBzVXBncmFkZUVuYWJs
ZWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvR3RrU2V0
dGluZ3NTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvR3RrU2V0dGluZ3NTdGF0
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzE4MTA5YjY3YmU4MzQ5MTZjYTEyODU4YmY5ZjE0OTJkNjU3Zjkx
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9HdGtTZXR0aW5n
c1N0YXRlLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIFB1
cmlzbSBTUEMKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd0a1NldHRpbmdzU3RhdGUuaCIKKworI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitHdGtTZXR0aW5n
c1N0YXRlOjpHdGtTZXR0aW5nc1N0YXRlKCkKK3sKK30KKwordm9pZCBHdGtTZXR0aW5nc1N0YXRl
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
dGhlbWVOYW1lOworICAgIGVuY29kZXIgPDwgZm9udE5hbWU7CisgICAgZW5jb2RlciA8PCB4ZnRB
bnRpYWxpYXM7CisgICAgZW5jb2RlciA8PCB4ZnRIaW50aW5nOworICAgIGVuY29kZXIgPDwgeGZ0
SGludFN0eWxlOworICAgIGVuY29kZXIgPDwgeGZ0UkdCQTsKKyAgICBlbmNvZGVyIDw8IHhmdERQ
STsKKyAgICBlbmNvZGVyIDw8IGN1cnNvckJsaW5rOworICAgIGVuY29kZXIgPDwgY3Vyc29yQmxp
bmtUaW1lOworICAgIGVuY29kZXIgPDwgcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyOworfQorCitz
dGQ6Om9wdGlvbmFsPEd0a1NldHRpbmdzU3RhdGU+IEd0a1NldHRpbmdzU3RhdGU6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgR3RrU2V0dGluZ3NTdGF0ZSBzdGF0ZTsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUudGhlbWVOYW1lKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuZm9udE5hbWUp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0ZS54ZnRBbnRpYWxpYXMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS54ZnRIaW50aW5nKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUueGZ0SGludFN0
eWxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGUueGZ0UkdCQSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnhmdERQSSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmN1cnNvckJsaW5rKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3RhdGUuY3Vyc29yQmxpbmtUaW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUucHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBzdGF0ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvR3RrU2V0dGluZ3NTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0d0a1NldHRp
bmdzU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzdhYjY0MjM1ZDY2YTdmM2E3ZGQ4MDE3YWM3MWNkOWFj
OTM4Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0d0a1Nl
dHRpbmdzU3RhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IFB1cmlzbSBTUEMKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBHdGtTZXR0aW5nc1N0YXRlIHsKKyAgICBHdGtTZXR0aW5nc1N0
YXRlKCk7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxHdGtTZXR0aW5nc1N0YXRlPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGhlbWVOYW1lOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBmb250TmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4geGZ0QW50aWFsaWFz
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB4ZnRIaW50aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiB4ZnRIaW50U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHhmdFJHQkE7
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHhmdERQSTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGN1cnNvckJsaW5rOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBjdXJzb3JCbGlua1RpbWU7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBwcmltYXJ5QnV0dG9uV2FycHNTbGlkZXI7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9O
YXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcAppbmRleCA2ZDBlNDRmOTJjZWFhMDM0MTk4ZmY5MjAw
MjJkZWE2YWJjNzRiZjU2Li45NDRlNmE0ZjdhODk0NTBmMzcyZWFlY2M5ZjkyY2VkMTIwNGVmMDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVu
dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZl
bnRHdGsuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSAiV2ViRXZlbnRG
YWN0b3J5LmgiCiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCBh
NDM5MWJlN2I2MzdmZDk2ZDg4MGNiMDY4MzhiNmRlYjVkYjU1MmI2Li45NWI0ZmZiNzY5ZDcxMWI2
YTQ4NWEwMDVmN2EzZjU4MTcyZmNmMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTg3LDYgKzg3
LDcgQEAgU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuY3BwCiBTaGFyZWQvZ2xpYi9XZWJDb250ZXh0
TWVudUl0ZW1HbGliLmNwcAogCiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorU2hh
cmVkL2d0ay9HdGtTZXR0aW5nc1N0YXRlLmNwcAogU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50R3RrLmNwcAogU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAogU2hh
cmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMjUzLDYgKzI1NCw3IEBAIFVJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmNwcAogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvZ3RrL1dlYkRhdGVUaW1lUGlja2VyR3RrLmNwcAorVUlQcm9jZXNzL2d0ay9HdGtT
ZXR0aW5nc01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvZ3RrL0hhcmR3YXJlQWNjZWxlcmF0aW9uTWFu
YWdlci5jcHAKIFVJUHJvY2Vzcy9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCiBVSVByb2Nl
c3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlci5jcHAgQG5vLXVuaWZ5CkBAIC00MzksNSArNDQxLDYg
QEAgV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3Bw
IEBuby11bmlmeQogCiBXZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwCiAKK1dlYlBy
b2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlclByb3h5LmNwcAogV2ViUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcAogV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5H
dGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCmluZGV4IDIwZTg4ZDM4MTQwYjllOWYyZDNiZGE0MTdkMDdhMGNlMjY0NWU1OTgu
LjA4MTg2OTM5YzNhOTU1ODUzNWM1MjBhNDVlMmZkZTAwODg4NDgwNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC01ODks
MjMgKzU4OSw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVdlYlBhZ2VJRCgpIGNv
bnN0CiAgICAgICAgIHdlYmtpdFdlYlZpZXdEaWRDaGFuZ2VQYWdlSUQoV0VCS0lUX1dFQl9WSUVX
KG1fdmlld1dpZGdldCkpOwogfQogCi1TdHJpbmcgUGFnZUNsaWVudEltcGw6OnRoZW1lTmFtZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIHRoZW1lTmFtZUVudiA9IGdfZ2V0ZW52KCJHVEtfVEhF
TUUiKSkgewotICAgICAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6ZnJvbVVURjgodGhlbWVOYW1l
RW52KTsKLSAgICAgICAgaWYgKG5hbWUuZW5kc1dpdGgoIi1kYXJrIikgfHwgbmFtZS5lbmRzV2l0
aCgiLURhcmsiKSB8fCBuYW1lLmVuZHNXaXRoKCI6ZGFyayIpKQotICAgICAgICAgICAgcmV0dXJu
IG5hbWUuc3Vic3RyaW5nKDAsIG5hbWUubGVuZ3RoKCkgLSA1KTsKLSAgICAgICAgcmV0dXJuIG5h
bWU7Ci0gICAgfQotCi0gICAgR1VuaXF1ZU91dFB0cjxjaGFyPiB0aGVtZU5hbWVTZXR0aW5nOwot
ICAgIGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhtX3ZpZXdXaWRnZXQpLCAi
Z3RrLXRoZW1lLW5hbWUiLCAmdGhlbWVOYW1lU2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0cik7Ci0g
ICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHRoZW1lTmFtZVNldHRpbmcuZ2V0KCkp
OwotICAgIGlmIChuYW1lLmVuZHNXaXRoKCItZGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIi1EYXJr
IikpCi0gICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCgpIC0gNSk7
Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6Om1ha2VWaWV3Qmxh
bmsoYm9vbCBtYWtlQmxhbmspCiB7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VNYWtlQmxhbmsoV0VC
S0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSwgbWFrZUJsYW5rKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCA1NmY1OTRm
YWE2YjY0OWNhYmQyOTg3NTRkN2RhMmYyNThiZjM3MGQ3Li4xYTc5YzczOGY1MDYzZTUyZjNjNzJk
ZjBiMzdiN2JjYTVhZWI1ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xNzUsOCArMTc1LDYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGlkQ2hhbmdlV2ViUGFnZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBTdHJpbmcg
dGhlbWVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIG1ha2VWaWV3QmxhbmsoYm9v
bCkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCmluZGV4IDhiNTJmMzE3M2MwZGIzNjllNDNhOTA3OWZlZWU4YTI2NmFlMTE4YjMuLmM0
YTk4MzNlMjhiYjUwZDFmODc1YWExYzVhZDA1N2NlZTAxZDI4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0y
OTgsOCArMjk4LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIHVu
c2lnbmVkIGxvbmcgdG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50SUQgeyAwIH07CiAjZW5kaWYKICAg
ICB1bnNpZ25lZCBsb25nIHRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCB7IDAgfTsKLSAgICB1bnNp
Z25lZCBsb25nIHRoZW1lQ2hhbmdlZElEIHsgMCB9OwotICAgIHVuc2lnbmVkIGxvbmcgYXBwbGlj
YXRpb25QcmVmZXJEYXJrVGhlbWVJRCB7IDAgfTsKIAogICAgIC8vIFZpZXcgU3RhdGUuCiAgICAg
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGU7CkBAIC00MDEsMTYg
KzM5OSw2IEBAIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd1N0YXRlRXZlbnQoR3RrV2lk
Z2V0KiwgR2RrRXZlbnRXaW5kb3dTdGF0ZSogZXZlbnQsCiAgICAgcmV0dXJuIEZBTFNFOwogfQog
Ci1zdGF0aWMgdm9pZCB0aGVtZUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNl
KQotewotICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPnRoZW1lRGlkQ2hhbmdlKCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lQ2hhbmdlZChXZWJL
aXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCi17Ci0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBh
Z2VQcm94eS0+ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpOwotfQotCiBzdGF0aWMgdm9p
ZCB0b3BsZXZlbFdpbmRvd1JlYWxpemVkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkK
IHsKICAgICBndGtfd2lkZ2V0X3JlYWxpemUoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwpAQCAt
NDQ0LDE3ICs0MzIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVs
T25TY3JlZW5XaW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZQogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdywgcHJpdi0+
dG9wbGV2ZWxXaW5kb3dSZWFsaXplZElEKTsKICAgICAgICAgcHJpdi0+dG9wbGV2ZWxXaW5kb3dS
ZWFsaXplZElEID0gMDsKICAgICB9Ci0gICAgaWYgKHByaXYtPnRoZW1lQ2hhbmdlZElEIHx8IHBy
aXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQpIHsKLSAgICAgICAgYXV0byogc2V0dGlu
Z3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHByaXYtPnRvcGxldmVsT25T
Y3JlZW5XaW5kb3cpKTsKLSAgICAgICAgaWYgKHByaXYtPnRoZW1lQ2hhbmdlZElEKSB7Ci0gICAg
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qoc2V0dGluZ3MsIHByaXYtPnRoZW1l
Q2hhbmdlZElEKTsKLSAgICAgICAgICAgIHByaXYtPnRoZW1lQ2hhbmdlZElEID0gMDsKLSAgICAg
ICAgfQotICAgICAgICBpZiAocHJpdi0+YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCkgewot
ICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHNldHRpbmdzLCBwcml2LT5h
cHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUlEKTsKLSAgICAgICAgICAgIHByaXYtPmFwcGxpY2F0
aW9uUHJlZmVyRGFya1RoZW1lSUQgPSAwOwotICAgICAgICB9Ci0gICAgfQogCiAgICAgcHJpdi0+
dG9wbGV2ZWxPblNjcmVlbldpbmRvdyA9IHdpbmRvdzsKIApAQCAtNDgzLDEyICs0NjAsNiBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3coV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZQogICAgIHByaXYtPnRvcGxldmVsV2luZG93U3RhdGVFdmVu
dElEID0KICAgICAgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2lu
ZG93LCAid2luZG93LXN0YXRlLWV2ZW50IiwgR19DQUxMQkFDSyh0b3BsZXZlbFdpbmRvd1N0YXRl
RXZlbnQpLCB3ZWJWaWV3QmFzZSk7CiAKLSAgICBhdXRvKiBzZXR0aW5ncyA9IGd0a193aWRnZXRf
Z2V0X3NldHRpbmdzKEdUS19XSURHRVQocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpOwot
ICAgIHByaXYtPnRoZW1lQ2hhbmdlZElEID0KLSAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKHNldHRpbmdzLCAibm90aWZ5OjpndGstdGhlbWUtbmFtZSIsIEdfQ0FMTEJBQ0sodGhlbWVD
aGFuZ2VkKSwgd2ViVmlld0Jhc2UpOwotICAgIHByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1Ro
ZW1lSUQgPQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3Rp
Znk6Omd0ay1hcHBsaWNhdGlvbi1wcmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJBQ0soYXBwbGlj
YXRpb25QcmVmZXJEYXJrVGhlbWVDaGFuZ2VkKSwgd2ViVmlld0Jhc2UpOwotCiAgICAgaWYgKGd0
a193aWRnZXRfZ2V0X3JlYWxpemVkKEdUS19XSURHRVQod2luZG93KSkpCiAgICAgICAgIGd0a193
aWRnZXRfcmVhbGl6ZShHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CiAgICAgZWxzZQpAQCAtMTc4
MiwxNiArMTc1Myw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUm9vdChHdGtXaWRn
ZXQqIHdpZGdldCkKICAgICB9CiAgICAgcHJpdi0+dG9wbGV2ZWxXaW5kb3dVbnJlYWxpemVkSUQg
PQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQocHJpdi0+dG9wbGV2ZWxPblNjcmVl
bldpbmRvdywgInVucmVhbGl6ZSIsIEdfQ0FMTEJBQ0sodG9wbGV2ZWxXaW5kb3dVbnJlYWxpemVk
KSwgd2lkZ2V0KTsKLQotICAgIGF1dG8qIHNldHRpbmdzID0gZ3RrX3dpZGdldF9nZXRfc2V0dGlu
Z3MoR1RLX1dJREdFVChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSk7Ci0gICAgcHJpdi0+
dGhlbWVDaGFuZ2VkSUQgPQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGlu
Z3MsICJub3RpZnk6Omd0ay10aGVtZS1uYW1lIiwgR19DQUxMQkFDSygrW10oV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlKSB7Ci0gICAgICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFn
ZVByb3h5LT50aGVtZURpZENoYW5nZSgpOwotICAgICAgICB9KSwgd2lkZ2V0KTsKLSAgICBwcml2
LT5hcHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUlEID0KLSAgICAgICAgZ19zaWduYWxfY29ubmVj
dF9zd2FwcGVkKHNldHRpbmdzLCAibm90aWZ5OjpndGstYXBwbGljYXRpb24tcHJlZmVyLWRhcmst
dGhlbWUiLCBHX0NBTExCQUNLKCtbXShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpIHsK
LSAgICAgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmVmZmVjdGl2ZUFwcGVh
cmFuY2VEaWRDaGFuZ2UoKTsKLSAgICAgICAgfSksIHdpZGdldCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlVW5yb290KEd0a1dpZGdldCogd2lkZ2V0KQpAQCAtMTgwNSw5ICsx
NzY2LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbnJvb3QoR3RrV2lkZ2V0KiB3
aWRnZXQpCiAgICAgZ19jbGVhcl9zaWduYWxfaGFuZGxlcigmcHJpdi0+dG9wbGV2ZWxXaW5kb3dV
bnJlYWxpemVkSUQsIHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpOwogICAgIGlmIChndGtf
d2lkZ2V0X2dldF9yZWFsaXplZChHVEtfV0lER0VUKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5k
b3cpKSkKICAgICAgICAgZ19jbGVhcl9zaWduYWxfaGFuZGxlcigmcHJpdi0+dG9wbGV2ZWxXaW5k
b3dTdGF0ZUNoYW5nZWRJRCwgZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShHVEtfTkFUSVZFKHByaXYt
PnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKSk7Ci0gICAgYXV0byogc2V0dGluZ3MgPSBndGtfd2lk
Z2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cp
KTsKLSAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2LT50aGVtZUNoYW5nZWRJRCwgc2V0
dGluZ3MpOwotICAgIGdfY2xlYXJfc2lnbmFsX2hhbmRsZXIoJnByaXYtPmFwcGxpY2F0aW9uUHJl
ZmVyRGFya1RoZW1lSUQsIHNldHRpbmdzKTsKICAgICBwcml2LT50b3BsZXZlbE9uU2NyZWVuV2lu
ZG93ID0gbnVsbHB0cjsKIAogICAgIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFn
c1RvVXBkYXRlOwpAQCAtMjE1NSw2ICsyMTEzLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGd0a19nZXN0dXJlX2dyb3Vw
KGdlc3R1cmUsIHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwKTsKICAgICBndGtfZ2VzdHVyZV9zaW5n
bGVfc2V0X3RvdWNoX29ubHkoR1RLX0dFU1RVUkVfU0lOR0xFKGdlc3R1cmUpLCBUUlVFKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0X29iamVjdChnZXN0dXJlLCAic3dpcGUiLCBHX0NBTExCQUNLKHdl
YmtpdFdlYlZpZXdCYXNlVG91Y2hTd2lwZSksIHZpZXdXaWRnZXQsIEdfQ09OTkVDVF9TV0FQUEVE
KTsKKworICAgIGF1dG8qIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCk7Cisg
ICAgYXV0byBjYWxsYmFjayA9ICtbXShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpIHsK
KyAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZWZmZWN0aXZlQXBwZWFyYW5j
ZURpZENoYW5nZSgpOworICAgIH07CisgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3Qoc2V0dGlu
Z3MsICJub3RpZnk6Omd0ay10aGVtZS1uYW1lIiwgR19DQUxMQkFDSyhjYWxsYmFjayksIHZpZXdX
aWRnZXQsIEdfQ09OTkVDVF9TV0FQUEVEKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X29iamVjdChz
ZXR0aW5ncywgIm5vdGlmeTo6Z3RrLWFwcGxpY2F0aW9uLXByZWZlci1kYXJrLXRoZW1lIiwgR19D
QUxMQkFDSyhjYWxsYmFjayksIHZpZXdXaWRnZXQsIEdfQ09OTkVDVF9TV0FQUEVEKTsKIH0KIAog
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWV3QmFzZUNsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IDA4Y2MyODkwMzk5MjRkMzM3NDg5MzY4ZjM2YzUwNWNjNjg4OTY3NDUu
Ljc0YjA1YzJhMGRhMTY4Nzg5MTNkY2RjODkyYTNlNDdmM2I2MGVjMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTYyNCwxMCArNjI0LDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZVdlYlBhZ2VJRCgpIGNvbnN0IHsgfQogCi0jaWYgUExBVEZP
Uk0oR1RLKQotICAgIHZpcnR1YWwgU3RyaW5nIHRoZW1lTmFtZSgpIGNvbnN0ID0gMDsKLSNlbmRp
ZgotCiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAgICAgdmlydHVhbCBib29sIGNhbkhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24o
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRp
b24oY29uc3QgV2ViQ29yZTo6VHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8mKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiYWMyOGI3YjlkYjRlNDdk
MTVmMDdjNDM4MmQwZmRlYzY4YjU5YjVmLi42NTFkNDdiNmU0ZTJkODM5NzE3ZTdjNjI0Mjg0NDZm
YzQ3YTczYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTI0NCw2ICsyNDQsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSAi
R3RrU2V0dGluZ3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25EYXRhLmg+
CiAjZW5kaWYKIApAQCAtODIyMSw3ICs4MjIyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MK
ICAgICBwYXJhbWV0ZXJzLmNhblVzZUNyZWRlbnRpYWxTdG9yYWdlID0gbV9jYW5Vc2VDcmVkZW50
aWFsU3RvcmFnZTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBwYXJhbWV0ZXJzLnRoZW1lTmFt
ZSA9IHBhZ2VDbGllbnQoKS50aGVtZU5hbWUoKTsKKyAgICBwYXJhbWV0ZXJzLmd0a1NldHRpbmdz
ID0gR3RrU2V0dGluZ3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXR0aW5nc1N0YXRlKCk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpICYmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAxZGRlMmFhMGFkNjQ2MzU1
ZTI5MDZjNmUzZmZiMDgwMDhkNTI3MzY1Li5iZTI0MWZkY2I1ZDNmMmY0MjdjZGU4ZDQ0YTUwMmUy
MThmY2Q0ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTYy
LDcgKzk2Miw2IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShHVEspCiAgICAgUGxhdGZvcm1WaWV3
V2lkZ2V0IHZpZXdXaWRnZXQoKTsKICAgICBib29sIG1ha2VHTENvbnRleHRDdXJyZW50KCk7Ci0g
ICAgdm9pZCB0aGVtZURpZENoYW5nZSgpOwogI2VuZGlmCiAKICAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kQ29sb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0
a1NldHRpbmdzTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ3NGI5NGM3NGM5MjJiMjNkYThjZWRh
MGY0OWQyNDBhZTg3MTRhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIFB1cmlzbSBTUEMKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd0a1NldHRp
bmdzTWFuYWdlci5oIgorCisjaW5jbHVkZSAiR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0d0a1NldHRpbmdzTWFuYWdlciYgR3RrU2V0dGlu
Z3NNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHdGtT
ZXR0aW5nc01hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK1N0cmlu
ZyBHdGtTZXR0aW5nc01hbmFnZXI6OnRoZW1lTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8q
IHRoZW1lTmFtZUVudiA9IGdfZ2V0ZW52KCJHVEtfVEhFTUUiKSkgeworICAgICAgICBTdHJpbmcg
bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgodGhlbWVOYW1lRW52KTsKKyAgICAgICAgaWYgKG5hbWUu
ZW5kc1dpdGgoIi1kYXJrIikgfHwgbmFtZS5lbmRzV2l0aCgiLURhcmsiKSB8fCBuYW1lLmVuZHNX
aXRoKCI6ZGFyayIpKQorICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyaW5nKDAsIG5hbWUu
bGVuZ3RoKCkgLSA1KTsKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgR1VuaXF1
ZU91dFB0cjxjaGFyPiB0aGVtZU5hbWVTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChtX3NldHRp
bmdzLCAiZ3RrLXRoZW1lLW5hbWUiLCAmdGhlbWVOYW1lU2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0
cik7CisgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHRoZW1lTmFtZVNldHRpbmcu
Z2V0KCkpOworICAgIGlmIChuYW1lLmVuZHNXaXRoKCItZGFyayIpIHx8IG5hbWUuZW5kc1dpdGgo
Ii1EYXJrIikpCisgICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCgp
IC0gNSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK1N0cmluZyBHdGtTZXR0aW5nc01hbmFnZXI6
OmZvbnROYW1lKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGZvbnROYW1lU2V0
dGluZzsKKyAgICBnX29iamVjdF9nZXQobV9zZXR0aW5ncywgImd0ay1mb250LW5hbWUiLCAmZm9u
dE5hbWVTZXR0aW5nLm91dFB0cigpLCBudWxscHRyKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChmb250TmFtZVNldHRpbmcuZ2V0KCkpOworfQorCitpbnQgR3RrU2V0dGluZ3NNYW5hZ2Vy
Ojp4ZnRBbnRpYWxpYXMoKSBjb25zdAoreworICAgIGludCBhbnRpYWxpYXNTZXR0aW5nOworICAg
IGdfb2JqZWN0X2dldChtX3NldHRpbmdzLCAiZ3RrLXhmdC1hbnRpYWxpYXMiLCAmYW50aWFsaWFz
U2V0dGluZywgbnVsbHB0cik7CisgICAgcmV0dXJuIGFudGlhbGlhc1NldHRpbmc7Cit9CisKK2lu
dCBHdGtTZXR0aW5nc01hbmFnZXI6OnhmdEhpbnRpbmcoKSBjb25zdAoreworICAgIGludCBoaW50
aW5nU2V0dGluZzsKKyAgICBnX29iamVjdF9nZXQobV9zZXR0aW5ncywgImd0ay14ZnQtaGludGlu
ZyIsICZoaW50aW5nU2V0dGluZywgbnVsbHB0cik7CisgICAgcmV0dXJuIGhpbnRpbmdTZXR0aW5n
OworfQorCitTdHJpbmcgR3RrU2V0dGluZ3NNYW5hZ2VyOjp4ZnRIaW50U3R5bGUoKSBjb25zdAor
eworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gaGludFN0eWxlU2V0dGluZzsKKyAgICBnX29iamVj
dF9nZXQobV9zZXR0aW5ncywgImd0ay14ZnQtaGludHN0eWxlIiwgJmhpbnRTdHlsZVNldHRpbmcu
b3V0UHRyKCksIG51bGxwdHIpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGhpbnRTdHls
ZVNldHRpbmcuZ2V0KCkpOworfQorCitTdHJpbmcgR3RrU2V0dGluZ3NNYW5hZ2VyOjp4ZnRSR0JB
KCkgY29uc3QKK3sKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IHJnYmFTZXR0aW5nOworICAgIGdf
b2JqZWN0X2dldChtX3NldHRpbmdzLCAiZ3RrLXhmdC1yZ2JhIiwgJnJnYmFTZXR0aW5nLm91dFB0
cigpLCBudWxscHRyKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChyZ2JhU2V0dGluZy5n
ZXQoKSk7Cit9CisKK2ludCBHdGtTZXR0aW5nc01hbmFnZXI6OnhmdERQSSgpIGNvbnN0Cit7Cisg
ICAgaW50IGRwaVNldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KG1fc2V0dGluZ3MsICJndGsteGZ0
LWRwaSIsICZkcGlTZXR0aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gZHBpU2V0dGluZzsKK30K
KworYm9vbCBHdGtTZXR0aW5nc01hbmFnZXI6OmN1cnNvckJsaW5rKCkgY29uc3QKK3sKKyAgICBn
Ym9vbGVhbiBjdXJzb3JCbGlua1NldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KG1fc2V0dGluZ3Ms
ICJndGstY3Vyc29yLWJsaW5rIiwgJmN1cnNvckJsaW5rU2V0dGluZywgbnVsbHB0cik7CisgICAg
cmV0dXJuIGN1cnNvckJsaW5rU2V0dGluZyA/IHRydWUgOiBmYWxzZTsKK30KKworaW50IEd0a1Nl
dHRpbmdzTWFuYWdlcjo6Y3Vyc29yQmxpbmtUaW1lKCkgY29uc3QKK3sKKyAgICBpbnQgY3Vyc29y
QmxpbmtUaW1lU2V0dGluZzsKKyAgICBnX29iamVjdF9nZXQobV9zZXR0aW5ncywgImd0ay1jdXJz
b3ItYmxpbmstdGltZSIsICZjdXJzb3JCbGlua1RpbWVTZXR0aW5nLCBudWxscHRyKTsKKyAgICBy
ZXR1cm4gY3Vyc29yQmxpbmtUaW1lU2V0dGluZzsKK30KKworYm9vbCBHdGtTZXR0aW5nc01hbmFn
ZXI6OnByaW1hcnlCdXR0b25XYXJwc1NsaWRlcigpIGNvbnN0Cit7CisgICAgZ2Jvb2xlYW4gYnV0
dG9uU2V0dGluZzsKKyAgICBnX29iamVjdF9nZXQobV9zZXR0aW5ncywgImd0ay1wcmltYXJ5LWJ1
dHRvbi13YXJwcy1zbGlkZXIiLCAmYnV0dG9uU2V0dGluZywgbnVsbHB0cik7CisgICAgcmV0dXJu
IGJ1dHRvblNldHRpbmcgPyB0cnVlIDogZmFsc2U7Cit9CisKK3ZvaWQgR3RrU2V0dGluZ3NNYW5h
Z2VyOjpzZXR0aW5nc0RpZENoYW5nZSgpCit7CisgICAgR3RrU2V0dGluZ3NTdGF0ZSBzdGF0ZTsK
KworICAgIGF1dG8gdGhlbWVOYW1lID0gdGhpcy0+dGhlbWVOYW1lKCk7CisgICAgaWYgKG1fc2V0
dGluZ3NTdGF0ZS50aGVtZU5hbWUgIT0gdGhlbWVOYW1lKQorICAgICAgICBtX3NldHRpbmdzU3Rh
dGUudGhlbWVOYW1lID0gc3RhdGUudGhlbWVOYW1lID0gdGhlbWVOYW1lOworCisgICAgYXV0byBm
b250TmFtZSA9IHRoaXMtPmZvbnROYW1lKCk7CisgICAgaWYgKG1fc2V0dGluZ3NTdGF0ZS5mb250
TmFtZSAhPSBmb250TmFtZSkKKyAgICAgICAgbV9zZXR0aW5nc1N0YXRlLmZvbnROYW1lID0gc3Rh
dGUuZm9udE5hbWUgPSBmb250TmFtZTsKKworICAgIGF1dG8geGZ0QW50aWFsaWFzID0gdGhpcy0+
eGZ0QW50aWFsaWFzKCk7CisgICAgaWYgKG1fc2V0dGluZ3NTdGF0ZS54ZnRBbnRpYWxpYXMgIT0g
eGZ0QW50aWFsaWFzKQorICAgICAgICBtX3NldHRpbmdzU3RhdGUueGZ0QW50aWFsaWFzID0gc3Rh
dGUueGZ0QW50aWFsaWFzID0geGZ0QW50aWFsaWFzOworCisgICAgYXV0byB4ZnRIaW50aW5nID0g
dGhpcy0+eGZ0SGludGluZygpOworICAgIGlmIChtX3NldHRpbmdzU3RhdGUueGZ0SGludGluZyAh
PSB4ZnRIaW50aW5nKQorICAgICAgICBtX3NldHRpbmdzU3RhdGUueGZ0SGludGluZyA9IHN0YXRl
LnhmdEhpbnRpbmcgPSB4ZnRIaW50aW5nOworCisgICAgYXV0byB4ZnRIaW50U3R5bGUgPSB0aGlz
LT54ZnRIaW50U3R5bGUoKTsKKyAgICBpZiAobV9zZXR0aW5nc1N0YXRlLnhmdEhpbnRTdHlsZSAh
PSB4ZnRIaW50U3R5bGUpCisgICAgICAgIG1fc2V0dGluZ3NTdGF0ZS54ZnRIaW50U3R5bGUgPSBz
dGF0ZS54ZnRIaW50U3R5bGUgPSB4ZnRIaW50U3R5bGU7CisKKyAgICBhdXRvIHhmdFJHQkEgPSB0
aGlzLT54ZnRSR0JBKCk7CisgICAgaWYgKG1fc2V0dGluZ3NTdGF0ZS54ZnRSR0JBICE9IHhmdFJH
QkEpCisgICAgICAgIG1fc2V0dGluZ3NTdGF0ZS54ZnRSR0JBID0gc3RhdGUueGZ0UkdCQSA9IHhm
dFJHQkE7CisKKyAgICBhdXRvIHhmdERQSSA9IHRoaXMtPnhmdERQSSgpOworICAgIGlmIChtX3Nl
dHRpbmdzU3RhdGUueGZ0RFBJICE9IHhmdERQSSkKKyAgICAgICAgbV9zZXR0aW5nc1N0YXRlLnhm
dERQSSA9IHN0YXRlLnhmdERQSSA9IHhmdERQSTsKKworICAgIGF1dG8gY3Vyc29yQmxpbmsgPSB0
aGlzLT5jdXJzb3JCbGluaygpOworICAgIGlmIChtX3NldHRpbmdzU3RhdGUuY3Vyc29yQmxpbmsg
IT0gY3Vyc29yQmxpbmspCisgICAgICAgIG1fc2V0dGluZ3NTdGF0ZS5jdXJzb3JCbGluayA9IHN0
YXRlLmN1cnNvckJsaW5rID0gY3Vyc29yQmxpbms7CisKKyAgICBhdXRvIGN1cnNvckJsaW5rVGlt
ZSA9IHRoaXMtPmN1cnNvckJsaW5rVGltZSgpOworICAgIGlmIChtX3NldHRpbmdzU3RhdGUuY3Vy
c29yQmxpbmtUaW1lICE9IGN1cnNvckJsaW5rVGltZSkKKyAgICAgICAgbV9zZXR0aW5nc1N0YXRl
LmN1cnNvckJsaW5rVGltZSA9IHN0YXRlLmN1cnNvckJsaW5rVGltZSA9IGN1cnNvckJsaW5rVGlt
ZTsKKworICAgIGF1dG8gcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyID0gdGhpcy0+cHJpbWFyeUJ1
dHRvbldhcnBzU2xpZGVyKCk7CisgICAgaWYgKG1fc2V0dGluZ3NTdGF0ZS5wcmltYXJ5QnV0dG9u
V2FycHNTbGlkZXIgIT0gcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKQorICAgICAgICBtX3NldHRp
bmdzU3RhdGUucHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyID0gc3RhdGUucHJpbWFyeUJ1dHRvbldh
cnBzU2xpZGVyID0gcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyOworCisgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKKyAgICAgICAg
cHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6R3RrU2V0dGluZ3NNYW5h
Z2VyUHJveHk6OlNldHRpbmdzRGlkQ2hhbmdlKHN0YXRlKSk7Cit9CisKK0d0a1NldHRpbmdzTWFu
YWdlcjo6R3RrU2V0dGluZ3NNYW5hZ2VyKCkKKyAgICA6IG1fc2V0dGluZ3MoZ3RrX3NldHRpbmdz
X2dldF9kZWZhdWx0KCkpCisgICAgLCBtX3NldHRpbmdzU3RhdGUoR3RrU2V0dGluZ3NTdGF0ZSgp
KQoreworICAgIGF1dG8gc2V0dGluZ3NDaGFuZ2VkQ2FsbGJhY2sgPSArW10oR3RrU2V0dGluZ3NN
YW5hZ2VyKiBzZXR0aW5nc01hbmFnZXIpIHsKKyAgICAgICAgc2V0dGluZ3NNYW5hZ2VyLT5zZXR0
aW5nc0RpZENoYW5nZSgpOworICAgIH07CisKKyAgICBtX3NldHRpbmdzU3RhdGUudGhlbWVOYW1l
ID0gdGhlbWVOYW1lKCk7CisgICAgbV9zZXR0aW5nc1N0YXRlLmZvbnROYW1lID0gZm9udE5hbWUo
KTsKKyAgICBtX3NldHRpbmdzU3RhdGUueGZ0QW50aWFsaWFzID0geGZ0QW50aWFsaWFzKCk7Cisg
ICAgbV9zZXR0aW5nc1N0YXRlLnhmdEhpbnRpbmcgPSB4ZnRIaW50aW5nKCk7CisgICAgbV9zZXR0
aW5nc1N0YXRlLnhmdEhpbnRTdHlsZSA9IHhmdEhpbnRTdHlsZSgpOworICAgIG1fc2V0dGluZ3NT
dGF0ZS54ZnRSR0JBID0geGZ0UkdCQSgpOworICAgIG1fc2V0dGluZ3NTdGF0ZS54ZnREUEkgPSB4
ZnREUEkoKTsKKyAgICBtX3NldHRpbmdzU3RhdGUuY3Vyc29yQmxpbmsgPSBjdXJzb3JCbGluaygp
OworICAgIG1fc2V0dGluZ3NTdGF0ZS5jdXJzb3JCbGlua1RpbWUgPSBjdXJzb3JCbGlua1RpbWUo
KTsKKyAgICBtX3NldHRpbmdzU3RhdGUucHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyID0gcHJpbWFy
eUJ1dHRvbldhcnBzU2xpZGVyKCk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9z
ZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXRoZW1lLW5hbWUiLCBHX0NBTExCQUNLKHNldHRpbmdzQ2hh
bmdlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2V0
dGluZ3MsICJub3RpZnk6Omd0ay1mb250LW5hbWUiLCBHX0NBTExCQUNLKHNldHRpbmdzQ2hhbmdl
ZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2V0dGlu
Z3MsICJub3RpZnk6Omd0ay14ZnQtYW50aWFsaWFzIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5n
ZWRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NldHRp
bmdzLCAibm90aWZ5OjpndGsteGZ0LWRwaSIsIEdfQ0FMTEJBQ0soc2V0dGluZ3NDaGFuZ2VkQ2Fs
bGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9zZXR0aW5ncywg
Im5vdGlmeTo6Z3RrLXhmdC1oaW50aW5nIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5nZWRDYWxs
YmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NldHRpbmdzLCAi
bm90aWZ5OjpndGsteGZ0LWhpbnRzdHlsZSIsIEdfQ0FMTEJBQ0soc2V0dGluZ3NDaGFuZ2VkQ2Fs
bGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9zZXR0aW5ncywg
Im5vdGlmeTo6Z3RrLXhmdC1yZ2JhIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NldHRpbmdzLCAibm90
aWZ5OjpndGstY3Vyc29yLWJsaW5rIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NldHRpbmdzLCAibm90
aWZ5OjpndGstY3Vyc29yLWJsaW5rLXRpbWUiLCBHX0NBTExCQUNLKHNldHRpbmdzQ2hhbmdlZENh
bGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2V0dGluZ3Ms
ICJub3RpZnk6Omd0ay1wcmltYXJ5LWJ1dHRvbi13YXJwcy1zbGlkZXIiLCBHX0NBTExCQUNLKHNl
dHRpbmdzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZiNDRhOTcyZWZiMzc2OWVkZDI5MjE3MzIzMzBlZmU2ZTNiMGM4YzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NN
YW5hZ2VyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBQdXJp
c20gU1BDCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiR3RrU2V0dGluZ3NTdGF0ZS5oIgorI2luY2x1ZGUgPGd0ay9n
dGsuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEd0a1NldHRpbmdzTWFuYWdlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoR3RrU2V0dGluZ3NNYW5hZ2VyKTsKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8R3RrU2V0
dGluZ3NNYW5hZ2VyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgR3RrU2V0dGluZ3NNYW5hZ2VyJiBz
aW5nbGV0b24oKTsKKworICAgIGNvbnN0IEd0a1NldHRpbmdzU3RhdGUmIHNldHRpbmdzU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzU3RhdGU7IH0KK3ByaXZhdGU6CisgICAgR3RrU2V0
dGluZ3NNYW5hZ2VyKCk7CisKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisKKyAgICBT
dHJpbmcgdGhlbWVOYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIGZvbnROYW1lKCkgY29uc3Q7Cisg
ICAgaW50IHhmdEFudGlhbGlhcygpIGNvbnN0OworICAgIGludCB4ZnRIaW50aW5nKCkgY29uc3Q7
CisgICAgU3RyaW5nIHhmdEhpbnRTdHlsZSgpIGNvbnN0OworICAgIFN0cmluZyB4ZnRSR0JBKCkg
Y29uc3Q7CisgICAgaW50IHhmdERQSSgpIGNvbnN0OworICAgIGJvb2wgY3Vyc29yQmxpbmsoKSBj
b25zdDsKKyAgICBpbnQgY3Vyc29yQmxpbmtUaW1lKCkgY29uc3Q7CisgICAgYm9vbCBwcmltYXJ5
QnV0dG9uV2FycHNTbGlkZXIoKSBjb25zdDsKKworICAgIEd0a1NldHRpbmdzKiBtX3NldHRpbmdz
OworICAgIEd0a1NldHRpbmdzU3RhdGUgbV9zZXR0aW5nc1N0YXRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
UGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCmluZGV4IDFhN2ZhNmI3NWVjMjNhYWRlN2FiNTAwYjJlOGUyZmZkNTU4NTRiNjQu
LjZmNjdhODE2OTIxY2YxMjc2NTA4YTI5YTEyZjk3MzU0NWI4ZDdhZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC05NywxMyArOTcs
NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2Um
JiBtZXNzYWdlKQogICAgIHNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFdURk1vdmUobWVz
c2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp0
aGVtZURpZENoYW5nZSgpCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUaGVtZURpZENoYW5nZShw
YWdlQ2xpZW50KCkudGhlbWVOYW1lKCkpKTsKLSAgICBlZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hh
bmdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjZDQ0OGM1MzNiMDdmMDI5YmJiNjRiMWFk
NDY4MmJjYTg2MTdiMDYyLi42M2NmYzBiODhlOTc1YWIyMjQ0YmMwZDQ2ODY0ZGVjYzgzMzIwYzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MzA5LDYgKzMwOSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlICJH
dGtTZXR0aW5nc01hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByaW50T3BlcmF0aW9uR3Rr
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25EYXRhLmg+CiAjaW5jbHVkZSA8Z3RrL2d0
ay5oPgpAQCAtNzMyLDcgKzczMyw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRQ
YWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKHBhcmFtZXRlcnMucGFnaW5hdGlvbkxpbmVHcmlkRW5h
YmxlZCk7CiAKICNpZiBQTEFURk9STShHVEspCi0gICAgdGhlbWVEaWRDaGFuZ2UoV1RGTW92ZShw
YXJhbWV0ZXJzLnRoZW1lTmFtZSkpOworICAgIEd0a1NldHRpbmdzTWFuYWdlclByb3h5OjpzaW5n
bGV0b24oKS5hcHBseVNldHRpbmdzKHBhcmFtZXRlcnMuZ3RrU2V0dGluZ3MpOwogI2VuZGlmCiAK
ICAgICBlZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHBhcmFtZXRlcnMudXNlRGFya0FwcGVh
cmFuY2UsIHBhcmFtZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpOwpAQCAtOTY3
LDYgKzk2OCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9k
ZSAhPSBwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHNldExheWVySG9zdGlu
Z01vZGUocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKTsKIAorI2lmIFBMQVRGT1JNKEdUSykK
KyAgICBHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6c2luZ2xldG9uKCkuYXBwbHlTZXR0aW5ncyhw
YXJhbWV0ZXJzLmd0a1NldHRpbmdzKTsKKyNlbmRpZgorCiAgICAgcGxhdGZvcm1SZWluaXRpYWxp
emUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDM2MjMzNWZkZDc4NTE4YTI4ZTJmYjc2NDk4MzllMzIwMTBjOTJkYjMuLmU0NWM2NDkxMWIw
NzE5NzMxNGE3N2I4ZmYxOTFkMjQ2ZjYzN2IwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg5Myw4ICs4OTMsNiBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIHZvaWQgY29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBzaG93RW1vamlQaWNrZXIoV2ViQ29yZTo6RnJhbWUm
KTsKLQotICAgIHZvaWQgdGhlbWVEaWRDaGFuZ2UoU3RyaW5nJiYpOwogI2VuZGlmCiAKICAgICB2
b2lkIGRpZEFwcGx5U3R5bGUoKTsKQEAgLTIzMjYsMTAgKzIzMjQsNiBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX3Byb2Nlc3NEaXNwbGF5TmFtZTsKICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50
SmF2YVNjcmlwdCBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0
aW9uIHsgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllcyB9OwogCi0jaWYgUExB
VEZPUk0oR1RLKQotICAgIFN0cmluZyBtX3RoZW1lTmFtZTsKLSNlbmRpZgotICAgIAogI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25hdmlnYXRpb25IYXNPY2N1cmVk
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDFjZWRhN2E3YmNhYjJkODBhZTRjMjY5YjBmYzBlN2Vk
YjMxNTFkZDUuLjZiZjQ3M2Q5ZjJlNjg4YWZjMDY3MTdiMDM2YWUzNGM0ZThhYmFjN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtNTE1LDEwICs1MTUsNiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAg
RWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZShib29sIHVzZURhcmtBcHBlYXJhbmNlLCBib29s
IHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKQogCi0jaWYgUExBVEZPUk0oR1RLKQotICAg
IFRoZW1lRGlkQ2hhbmdlKFN0cmluZyB0aGVtZU5hbWUpCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKSAtPiAoYm9v
bCBhY3RpdmUsIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBTdHJpbmcg
dGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlx
dWVJZGVudGlmaWVyKSBBc3luYwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggY2NjZDhjYTE5MzQ5OTk4ZmI3
ZTY0ZGY0M2U4NjcxMGJkY2Y0NGEzMC4uZWMwNzlmN2I2ZDBlMTdiNTllMmM3YWY2MjJjOTM3YjBm
MmM0ZWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlBhZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQYWdlR3RrLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyVGhlbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d3NLZXlib2FyZENvZGVzLmg+CkBAIC0xNzgsMTUgKzE3Nyw0IEBAIHZvaWQgV2ViUGFnZTo6c2hv
d0Vtb2ppUGlja2VyKEZyYW1lJiBmcmFtZSkKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd0Vtb2ppUGlja2VyKGZyYW1lLnZpZXcoKS0+Y29udGVudHNU
b1Jvb3RWaWV3KGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSkpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dGhlbWVEaWRDaGFu
Z2UoU3RyaW5nJiYgdGhlbWVOYW1lKQotewotICAgIGlmIChtX3RoZW1lTmFtZSA9PSB0aGVtZU5h
bWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdGhlbWVOYW1lID0gV1RGTW92ZSh0aGVtZU5h
bWUpOwotICAgIGdfb2JqZWN0X3NldChndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKSwgImd0ay10
aGVtZS1uYW1lIiwgbV90aGVtZU5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7Ci0gICAgUmVu
ZGVyVGhlbWU6OnNpbmdsZXRvbigpLnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci0gICAgUGFn
ZTo6dXBkYXRlU3R5bGVGb3JBbGxQYWdlc0FmdGVyR2xvYmFsQ2hhbmdlSW5FbnZpcm9ubWVudCgp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmY1YmYxYzU3MjRlNWVkMmFmOTVhMjI2YmNkMmQyZDU4N2IzZjEwZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHku
Y3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUHVyaXNtIFNQ
QworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkuaCIKKworI2luY2x1
ZGUgIkd0a1NldHRpbmdzTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRoZW1lLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0d0a1NldHRpbmdzTWFuYWdlclBy
b3h5JiBHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8R3RrU2V0dGluZ3NNYW5hZ2VyUHJveHk+IG1hbmFnZXI7CisgICAgcmV0
dXJuIG1hbmFnZXI7Cit9CisKK0d0a1NldHRpbmdzTWFuYWdlclByb3h5OjpHdGtTZXR0aW5nc01h
bmFnZXJQcm94eSgpCisgICAgOiBtX3NldHRpbmdzKGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgp
KQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6R3RrU2V0dGluZ3NNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRo
aXMpOworfQorCit2b2lkIEd0a1NldHRpbmdzTWFuYWdlclByb3h5OjpzZXR0aW5nc0RpZENoYW5n
ZShHdGtTZXR0aW5nc1N0YXRlJiYgc3RhdGUpCit7CisgICAgYXBwbHlTZXR0aW5ncyhzdGF0ZSk7
Cit9CisKK3ZvaWQgR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHk6OmFwcGx5U2V0dGluZ3MoR3RrU2V0
dGluZ3NTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKHN0YXRlLnRoZW1lTmFtZSkgeworICAgICAg
ICBnX29iamVjdF9zZXQobV9zZXR0aW5ncywgImd0ay10aGVtZS1uYW1lIiwgc3RhdGUuZm9udE5h
bWUtPnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOworICAgICAgICBSZW5kZXJUaGVtZTo6c2luZ2xl
dG9uKCkucGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKKyAgICAgICAgUGFnZTo6dXBkYXRlU3R5
bGVGb3JBbGxQYWdlc0FmdGVyR2xvYmFsQ2hhbmdlSW5FbnZpcm9ubWVudCgpOworICAgIH0KKwor
ICAgIGlmIChzdGF0ZS5mb250TmFtZSkKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1fc2V0dGluZ3Ms
ICJndGstZm9udC1uYW1lIiwgc3RhdGUuZm9udE5hbWUtPnV0ZjgoKS5kYXRhKCksIG51bGxwdHIp
OworCisgICAgaWYgKHN0YXRlLnhmdEFudGlhbGlhcykKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1f
c2V0dGluZ3MsICJndGsteGZ0LWFudGlhbGlhcyIsICpzdGF0ZS54ZnRBbnRpYWxpYXMsIG51bGxw
dHIpOworCisgICAgaWYgKHN0YXRlLnhmdEhpbnRpbmcpCisgICAgICAgIGdfb2JqZWN0X3NldCht
X3NldHRpbmdzLCAiZ3RrLXhmdC1oaW50aW5nIiwgKnN0YXRlLnhmdEhpbnRpbmcsIG51bGxwdHIp
OworCisgICAgaWYgKHN0YXRlLnhmdEhpbnRTdHlsZSkKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1f
c2V0dGluZ3MsICJndGsteGZ0LWhpbnRzdHlsZSIsIHN0YXRlLnhmdEhpbnRTdHlsZS0+dXRmOCgp
LmRhdGEoKSwgbnVsbHB0cik7CisKKyAgICBpZiAoc3RhdGUueGZ0UkdCQSkKKyAgICAgICAgZ19v
YmplY3Rfc2V0KG1fc2V0dGluZ3MsICJndGsteGZ0LXJnYmEiLCBzdGF0ZS54ZnRSR0JBLT51dGY4
KCkuZGF0YSgpLCBudWxscHRyKTsKKworICAgIGlmIChzdGF0ZS54ZnREUEkpCisgICAgICAgIGdf
b2JqZWN0X3NldChtX3NldHRpbmdzLCAiZ3RrLXhmdC1kcGkiLCAqc3RhdGUueGZ0RFBJLCBudWxs
cHRyKTsKKworICAgIGlmIChzdGF0ZS5jdXJzb3JCbGluaykKKyAgICAgICAgZ19vYmplY3Rfc2V0
KG1fc2V0dGluZ3MsICJndGstY3Vyc29yLWJsaW5rIiwgKnN0YXRlLmN1cnNvckJsaW5rLCBudWxs
cHRyKTsKKworICAgIGlmIChzdGF0ZS5jdXJzb3JCbGlua1RpbWUpCisgICAgICAgIGdfb2JqZWN0
X3NldChtX3NldHRpbmdzLCAiZ3RrLWN1cnNvci1ibGluay10aW1lIiwgKnN0YXRlLmN1cnNvckJs
aW5rVGltZSwgbnVsbHB0cik7CisKKyAgICBpZiAoc3RhdGUucHJpbWFyeUJ1dHRvbldhcnBzU2xp
ZGVyKQorICAgICAgICBnX29iamVjdF9zZXQobV9zZXR0aW5ncywgImd0ay1wcmltYXJ5LWJ1dHRv
bi13YXJwcy1zbGlkZXIiLCAqc3RhdGUucHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyLCBudWxscHRy
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY3
ZTg5NGM5ZWE4ZWY2NzQ1YzM2MzEzMTc2NzkyMmYyMmNjNmJiOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkuaApA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIFB1cmlzbSBTUEMKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJHdGtTZXR0aW5nc1N0YXRlLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShHdGtTZXR0aW5nc01hbmFnZXJQcm94eSk7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEd0
a1NldHRpbmdzTWFuYWdlclByb3h5PjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgR3RrU2V0dGluZ3NN
YW5hZ2VyUHJveHkmIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBhcHBseVNldHRpbmdzKEd0a1Nl
dHRpbmdzU3RhdGUmKTsKK3ByaXZhdGU6CisgICAgR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkoKTsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICB2b2lk
IHNldHRpbmdzRGlkQ2hhbmdlKEd0a1NldHRpbmdzU3RhdGUmJik7CisKKyAgICBHdGtTZXR0aW5n
cyogbV9zZXR0aW5nczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ1MzczYmNkZWZlNGM0OWFiMmMxYWI0NDQ1
ZDgyNWY3MzkyNTM2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgUHVyaXNtIFNQQworIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBHdGtTZXR0aW5nc01hbmFnZXJQcm94
eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXR0aW5nc0RpZENoYW5nZShzdHJ1Y3QgV2ViS2l0OjpH
dGtTZXR0aW5nc1N0YXRlIHNldHRpbmdzU3RhdGUpCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433860</attachid>
            <date>2021-07-20 02:07:18 -0700</date>
            <delta_ts>2021-07-20 04:08:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227854-20210720140622.patch</filename>
            <type>text/plain</type>
            <size>46612</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzMTE2NzUyZDAzMjE2YTdm
NTJkODQxYzNmYTdlNDM3NzkyOTQ2MDUuLjVhMGRlN2I1ODdhNjI2ZGUwMzVjMGJlYmFjNzVkOTg2
ODM1MDA4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDctMTkgIEFsZXhhbmRl
ciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBQcm9wYWdh
dGUgR3RrU2V0dGluZ3MgdG8gd2ViIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlJ3MgYSBudW1iZXIgb2YgcHJvcGVydGllcyBpbiBH
dGtTZXR0aW5ncyB0aGF0IHdlYiBwcm9jZXNzIHVzZXM6CisKKyAgICAgICAgLSBndGstY3Vyc29y
LWJsaW5rCisgICAgICAgIC0gZ3RrLWN1cnNvci1ibGluay10aW1lCisgICAgICAgIC0gZ3RrLWZv
bnQtbmFtZQorICAgICAgICAtIGd0ay1wcmltYXJ5LWJ1dHRvbi13YXJwcy1zbGlkZXIKKyAgICAg
ICAgLSBndGstdGhlbWUtbmFtZQorICAgICAgICAtIGd0ay14ZnQtYW50aWFsaWFzCisgICAgICAg
IC0gZ3RrLXhmdC1kcGkKKyAgICAgICAgLSBndGsteGZ0LWhpbnRpbmcKKyAgICAgICAgLSBndGst
eGZ0LWhpbnRzdHlsZQorICAgICAgICAtIGd0ay14ZnQtcmdiYQorCisgICAgICAgIFdoaWxlIHdl
IGRvIHByb3BhZ2F0ZSBndGstdGhlbWUtbmFtZSwgd2UgZG9uJ3QgZG8gaXQgZm9yIGFueSBvZiB0
aGUgb3RoZXIgc2V0dGluZ3MuCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCB0aGV5IGNhbiBvbmx5
IGJlIGZldGNoZWQgZnJvbSBYU2V0dGluZ3MvR1NldHRpbmdzL3NldHRpbmdzIHBvcnRhbAorICAg
ICAgICBieSBHVEsgaXRzZWxmLCBidXQgaWYgdGhlIGFwcCBjaGFuZ2VzIHRoZW0gb3IgaWYgdGhl
eSBhcmUgY2hhbmdlZCBmcm9tIGluc3BlY3RvciwKKyAgICAgICAgd2ViIHByb2Nlc3NlcyB3b24n
dCBzZWUgdGhhdC4KKworICAgICAgICBJbnRyb2R1Y2UgR3RrU2V0dGluZ3NNYW5hZ2VyIGFzIGEg
c3BlY2lmaWMgcGxhY2UgdGhhdCBsaXN0ZW5zIHRvIHByZWZlcmVuY2VzCisgICAgICAgIGNoYW5n
ZXMgYW5kIG5vdGlmaWVzIHRoZSB3ZWIgcHJvY2Vzcywgd2hlcmUgR3RrU2V0dGluZ3NNYW5hZ2Vy
UHJveHkgdXBkYXRlcworICAgICAgICBHdGtTZXR0aW5ncyBvbiB0aGF0IHNpZGUuIEtlZXAgdGhl
IGRhcmsgbW9kZSBwcmVmZXJlbmNlIHNlcGFyYXRlIHNpbmNlIHRoZXJlJ3MKKyAgICAgICAgZXhp
c3RpbmcgY3Jvc3MtcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmUgZm9yIGl0LgorCisgICAgICAgIEFw
cGx5IHNldHRpbmdzIGFmdGVyIHJlaW5pdGlhbGl6aW5nIGFzIHdlbGwsIGl0IHdhcyBvbmx5IGRv
bmUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgc28gZmFpbGVkIHdpdGggUFNPTi4KKwor
ICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvR3RrU2V0dGluZ3NTdGF0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc1N0YXRlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc1N0YXRlOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9ndGsvR3RrU2V0dGluZ3NTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdC
YXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFz
ZVJvb3QpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVbnJvb3QpOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdz
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6dGhlbWVO
YW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjpmb250TmFt
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6eGZ0QW50aWFs
aWFzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjp4ZnRIaW50
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjp4ZnRIaW50
U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OnhmdFJH
QkEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OnhmdERQSSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6Y3Vyc29yQmxpbmsg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OmN1cnNvckJsaW5r
VGltZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6cHJpbWFy
eUJ1dHRvbldhcnBzU2xpZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NN
YW5hZ2VyOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdz
TWFuYWdlcjo6R3RrU2V0dGluZ3NNYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0d0
a1NldHRpbmdzTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NN
YW5hZ2VyOjpzZXR0aW5nc1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dl
YlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBh
Z2VHdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlclBy
b3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlclByb3h5
OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6
R3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01h
bmFnZXJQcm94eTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0
aW5nc01hbmFnZXJQcm94eTo6YXBwbHlTZXR0aW5ncyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9n
dGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorCiAyMDIx
LTA3LTE1ICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAg
ICAgW0dUS10gQ2FuJ3QgY2xpY2sgbGlua3Mgd2l0aCB0b3VjaHNjcmVlbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1H
VEsuY21ha2UKaW5kZXggZDY3OTc4NWNhM2JkNThiMmVkMmNlMDg3NjVlYjU1NzAxYmY1ZTcyMy4u
ODk4NjA4MmFmNzg1NDdmY2NlNDQ3NWQwNTMxNWQzODE5ZjkxNDA5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0zNiw2ICszNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9VTklGSUVEX1NP
VVJDRV9MSVNUX0ZJTEVTCiBsaXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAg
ICBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyCiAKKyAgICBXZWJQcm9jZXNzL2d0ay9H
dGtTZXR0aW5nc01hbmFnZXJQcm94eQogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMmJhZWYwNmNhY2FiM2U1MTVlNzA0NmQ1
MTdhNTM1NmJmMDNjM2MzMC4uNTY1ZmRiNmJhOTkyNDNjNThhMmUyNGI2MmZjN2I3OTI1ZTA3N2Rj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBj
YW5Vc2VDcmVkZW50aWFsU3RvcmFnZTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBlbmNvZGVy
IDw8IHRoZW1lTmFtZTsKKyAgICBlbmNvZGVyIDw8IGd0a1NldHRpbmdzOwogI2VuZGlmCiAgICAg
CiAgICAgZW5jb2RlciA8PCBodHRwc1VwZ3JhZGVFbmFibGVkOwpAQCAtNTkxLDcgKzU5MSw3IEBA
IHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICNpZiBQTEFURk9STShHVEspCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRo
ZW1lTmFtZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmd0a1NldHRpbmdz
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjUxNzg5MjIx
MmMyMzk5ZTFhYWMzNmVhNmI2ZmMzYjE1MmZkNTg5ZC4uZjJiODQxMzdkZjQ0OTFkMWE3NTZhZTA1
OGUzZjU5ODYzZWRhYTMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTUsNiArNTUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKQorI2lu
Y2x1ZGUgIkd0a1NldHRpbmdzU3RhdGUuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIERlY29kZXI7CiBjbGFzcyBFbmNvZGVyOwpAQCAtMjQ4LDcgKzI1Miw3IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7
IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogCiAj
aWYgUExBVEZPUk0oR1RLKQotICAgIFN0cmluZyB0aGVtZU5hbWU7CisgICAgR3RrU2V0dGluZ3NT
dGF0ZSBndGtTZXR0aW5nczsKICNlbmRpZgogICAgIAogICAgIGJvb2wgaHR0cHNVcGdyYWRlRW5h
YmxlZCB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9HdGtT
ZXR0aW5nc1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9HdGtTZXR0aW5nc1N0
YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42Mzg3ZDVjYzA4NWY1YTk1NWYzNjk4NTIyYzY2YzVkMmIxYzA5
ZDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0d0a1NldHRp
bmdzU3RhdGUuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
UHVyaXNtIFNQQworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3RrU2V0dGluZ3NTdGF0ZS5oIgorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgR3Rr
U2V0dGluZ3NTdGF0ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IHRoZW1lTmFtZTsKKyAgICBlbmNvZGVyIDw8IGZvbnROYW1lOworICAgIGVu
Y29kZXIgPDwgeGZ0QW50aWFsaWFzOworICAgIGVuY29kZXIgPDwgeGZ0SGludGluZzsKKyAgICBl
bmNvZGVyIDw8IHhmdEhpbnRTdHlsZTsKKyAgICBlbmNvZGVyIDw8IHhmdFJHQkE7CisgICAgZW5j
b2RlciA8PCB4ZnREUEk7CisgICAgZW5jb2RlciA8PCBjdXJzb3JCbGluazsKKyAgICBlbmNvZGVy
IDw8IGN1cnNvckJsaW5rVGltZTsKKyAgICBlbmNvZGVyIDw8IHByaW1hcnlCdXR0b25XYXJwc1Ns
aWRlcjsKK30KKworc3RkOjpvcHRpb25hbDxHdGtTZXR0aW5nc1N0YXRlPiBHdGtTZXR0aW5nc1N0
YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEd0a1NldHRpbmdzU3Rh
dGUgc3RhdGU7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnRoZW1lTmFtZSkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRlLmZvbnROYW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGUueGZ0QW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUueGZ0SGludGluZykpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRlLnhmdEhpbnRTdHlsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnhmdFJHQkEpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS54ZnREUEkpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5j
dXJzb3JCbGluaykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRlLmN1cnNvckJsaW5rVGltZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnByaW1hcnlCdXR0b25X
YXJwc1NsaWRlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
c3RhdGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0d0a1NldHRpbmdzU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9HdGtTZXR0aW5nc1N0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU2OWVjZTJmOTM3ZTU5ZjlmYzQ2
MTY4YWQ5OGZjYjcwNTEzOGIxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9HdGtTZXR0aW5nc1N0YXRlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBQdXJpc20gU1BDCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgR3RrU2V0dGluZ3NTdGF0ZSB7CisgICAg
R3RrU2V0dGluZ3NTdGF0ZSgpID0gZGVmYXVsdDsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5j
b2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEd0a1NldHRpbmdzU3RhdGU+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0aGVt
ZU5hbWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvbnROYW1lOworICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiB4ZnRBbnRpYWxpYXM7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHhmdEhpbnRp
bmc7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHhmdEhpbnRTdHlsZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4geGZ0UkdCQTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4geGZ0RFBJOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY3Vyc29yQmxpbms7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGN1cnNvckJsaW5rVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHByaW1hcnlCdXR0
b25XYXJwc1NsaWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCmluZGV4IDZk
MGU0NGY5MmNlYWEwMzQxOThmZjkyMDAyMmRlYTZhYmM3NGJmNTYuLjk0NGU2YTRmN2E4OTQ1MGYz
NzJlYWVjYzlmOTJjZWQxMjA0ZWYwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcu
aD4KICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0CmluZGV4IGE0MzkxYmU3YjYzN2ZkOTZkODgwY2IwNjgzOGI2ZGViNWRi
NTUyYjYuLjk1YjRmZmI3NjlkNzExYjZhNDg1YTAwNWY3YTNmNTgxNzJmY2YxYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzR1RLLnR4dApAQCAtODcsNiArODcsNyBAQCBTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAK
IFNoYXJlZC9nbGliL1dlYkNvbnRleHRNZW51SXRlbUdsaWIuY3BwCiAKIFNoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwCitTaGFyZWQvZ3RrL0d0a1NldHRpbmdzU3RhdGUuY3BwCiBTaGFy
ZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCiBTaGFyZWQvZ3RrL05hdGl2ZVdl
Yk1vdXNlRXZlbnRHdGsuY3BwCiBTaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3Bw
CkBAIC0yNTMsNiArMjU0LDcgQEAgVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuY3BwCiBVSVByb2Nl
c3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJHdGsu
Y3BwCitVSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9ndGsv
SGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyLmNwcAogVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAKIFVJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmNwcCBAbm8t
dW5pZnkKQEAgLTQzOSw1ICs0NDEsNiBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2Vs
ZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAgQG5vLXVuaWZ5CiAKIFdlYlByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzR0xpYi5jcHAKIAorV2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHku
Y3BwCiBXZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCiBXZWJQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggMjBlODhkMzgxNDBiOWU5ZjJk
M2JkYTQxN2QwN2EwY2UyNjQ1ZTU5OC4uMDgxODY5MzljM2E5NTU4NTM1YzUyMGE0NWUyZmRlMDA4
ODg0ODA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKQEAgLTU4OSwyMyArNTg5LDYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkQ2hhbmdlV2ViUGFnZUlEKCkgY29uc3QKICAgICAgICAgd2Via2l0V2ViVmlld0RpZENoYW5n
ZVBhZ2VJRChXRUJLSVRfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSk7CiB9CiAKLVN0cmluZyBQYWdl
Q2xpZW50SW1wbDo6dGhlbWVOYW1lKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogdGhlbWVOYW1l
RW52ID0gZ19nZXRlbnYoIkdUS19USEVNRSIpKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lID0gU3Ry
aW5nOjpmcm9tVVRGOCh0aGVtZU5hbWVFbnYpOwotICAgICAgICBpZiAobmFtZS5lbmRzV2l0aCgi
LWRhcmsiKSB8fCBuYW1lLmVuZHNXaXRoKCItRGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIjpkYXJr
IikpCi0gICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGgoKSAt
IDUpOwotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICB9Ci0KLSAgICBHVW5pcXVlT3V0UHRyPGNo
YXI+IHRoZW1lTmFtZVNldHRpbmc7Ci0gICAgZ19vYmplY3RfZ2V0KGd0a193aWRnZXRfZ2V0X3Nl
dHRpbmdzKG1fdmlld1dpZGdldCksICJndGstdGhlbWUtbmFtZSIsICZ0aGVtZU5hbWVTZXR0aW5n
Lm91dFB0cigpLCBudWxscHRyKTsKLSAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6ZnJvbVVURjgo
dGhlbWVOYW1lU2V0dGluZy5nZXQoKSk7Ci0gICAgaWYgKG5hbWUuZW5kc1dpdGgoIi1kYXJrIikg
fHwgbmFtZS5lbmRzV2l0aCgiLURhcmsiKSkKLSAgICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyaW5n
KDAsIG5hbWUubGVuZ3RoKCkgLSA1KTsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6bWFrZVZpZXdCbGFuayhib29sIG1ha2VCbGFuaykKIHsKICAgICB3ZWJraXRX
ZWJWaWV3QmFzZU1ha2VCbGFuayhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBt
YWtlQmxhbmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCmluZGV4IDU2ZjU5NGZhYTZiNjQ5Y2FiZDI5ODc1NGQ3ZGEyZjI1OGJmMzcwZDcu
LjFhNzljNzM4ZjUwNjNlNTJmM2M3MmRmMGIzN2I3YmNhNWFlYjVmNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE3NSw4ICsx
NzUsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQYWdlSUQoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIFN0cmluZyB0aGVtZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKLQogICAg
IHZvaWQgbWFrZVZpZXdCbGFuayhib29sKSBvdmVycmlkZTsKIAogICAgIC8vIE1lbWJlcnMgb2Yg
UGFnZUNsaWVudEltcGwgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggOGI1MmYzMTczYzBkYjM2OWU0M2E5
MDc5ZmVlZThhMjY2YWUxMThiMy4uYzRhOTgzM2UyOGJiNTBkMWY4NzVhYTFjNWFkMDU3Y2VlMDFk
MjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKQEAgLTI5OCw4ICsyOTgsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFdpbmRvd1N0YXRlRXZl
bnRJRCB7IDAgfTsKICNlbmRpZgogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxXaW5kb3dSZWFs
aXplZElEIHsgMCB9OwotICAgIHVuc2lnbmVkIGxvbmcgdGhlbWVDaGFuZ2VkSUQgeyAwIH07Ci0g
ICAgdW5zaWduZWQgbG9uZyBhcHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUlEIHsgMCB9OwogCiAg
ICAgLy8gVmlldyBTdGF0ZS4KICAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0
aXZpdHlTdGF0ZTsKQEAgLTQwMSwxNiArMzk5LDYgQEAgc3RhdGljIGdib29sZWFuIHRvcGxldmVs
V2luZG93U3RhdGVFdmVudChHdGtXaWRnZXQqLCBHZGtFdmVudFdpbmRvd1N0YXRlKiBldmVudCwK
ICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHRoZW1lQ2hhbmdlZChXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCi17Ci0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQ
cm94eS0+dGhlbWVEaWRDaGFuZ2UoKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbGljYXRpb25QcmVm
ZXJEYXJrVGhlbWVDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKLXsKLSAg
ICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5lZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hh
bmdlKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRvcGxldmVsV2luZG93UmVhbGl6ZWQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewogICAgIGd0a193aWRnZXRfcmVhbGl6ZShHVEtfV0lE
R0VUKHdlYlZpZXdCYXNlKSk7CkBAIC00NDQsMTcgKzQzMiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmllCiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT50b3BsZXZl
bE9uU2NyZWVuV2luZG93LCBwcml2LT50b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQpOwogICAgICAg
ICBwcml2LT50b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQgPSAwOwogICAgIH0KLSAgICBpZiAocHJp
di0+dGhlbWVDaGFuZ2VkSUQgfHwgcHJpdi0+YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCkg
ewotICAgICAgICBhdXRvKiBzZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19X
SURHRVQocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpOwotICAgICAgICBpZiAocHJpdi0+
dGhlbWVDaGFuZ2VkSUQpIHsKLSAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChzZXR0aW5ncywgcHJpdi0+dGhlbWVDaGFuZ2VkSUQpOwotICAgICAgICAgICAgcHJpdi0+dGhl
bWVDaGFuZ2VkSUQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcml2LT5hcHBsaWNhdGlv
blByZWZlckRhcmtUaGVtZUlEKSB7Ci0gICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nv
bm5lY3Qoc2V0dGluZ3MsIHByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQpOwotICAg
ICAgICAgICAgcHJpdi0+YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCA9IDA7Ci0gICAgICAg
IH0KLSAgICB9CiAKICAgICBwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93ID0gd2luZG93Owog
CkBAIC00ODMsMTIgKzQ2MCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9w
bGV2ZWxPblNjcmVlbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmllCiAgICAgcHJpdi0+
dG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50SUQgPQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHBy
aXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3csICJ3aW5kb3ctc3RhdGUtZXZlbnQiLCBHX0NBTExC
QUNLKHRvcGxldmVsV2luZG93U3RhdGVFdmVudCksIHdlYlZpZXdCYXNlKTsKIAotICAgIGF1dG8q
IHNldHRpbmdzID0gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MoR1RLX1dJREdFVChwcml2LT50b3Bs
ZXZlbE9uU2NyZWVuV2luZG93KSk7Ci0gICAgcHJpdi0+dGhlbWVDaGFuZ2VkSUQgPQotICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay10aGVtZS1u
YW1lIiwgR19DQUxMQkFDSyh0aGVtZUNoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7Ci0gICAgcHJpdi0+
YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCA9Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLWFwcGxpY2F0aW9uLXByZWZlci1kYXJrLXRo
ZW1lIiwgR19DQUxMQkFDSyhhcHBsaWNhdGlvblByZWZlckRhcmtUaGVtZUNoYW5nZWQpLCB3ZWJW
aWV3QmFzZSk7Ci0KICAgICBpZiAoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQoR1RLX1dJREdFVCh3
aW5kb3cpKSkKICAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKEdUS19XSURHRVQod2ViVmlld0Jh
c2UpKTsKICAgICBlbHNlCkBAIC0xNzgyLDE2ICsxNzUzLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VSb290KEd0a1dpZGdldCogd2lkZ2V0KQogICAgIH0KICAgICBwcml2LT50b3Bs
ZXZlbFdpbmRvd1VucmVhbGl6ZWRJRCA9CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBl
ZChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93LCAidW5yZWFsaXplIiwgR19DQUxMQkFDSyh0
b3BsZXZlbFdpbmRvd1VucmVhbGl6ZWQpLCB3aWRnZXQpOwotCi0gICAgYXV0byogc2V0dGluZ3Mg
PSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHByaXYtPnRvcGxldmVsT25TY3Jl
ZW5XaW5kb3cpKTsKLSAgICBwcml2LT50aGVtZUNoYW5nZWRJRCA9Ci0gICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfc3dhcHBlZChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXRoZW1lLW5hbWUiLCBHX0NB
TExCQUNLKCtbXShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpIHsKLSAgICAgICAgICAg
IHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPnRoZW1lRGlkQ2hhbmdlKCk7Ci0gICAgICAg
IH0pLCB3aWRnZXQpOwotICAgIHByaXYtPmFwcGxpY2F0aW9uUHJlZmVyRGFya1RoZW1lSUQgPQot
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay1h
cHBsaWNhdGlvbi1wcmVmZXItZGFyay10aGVtZSIsIEdfQ0FMTEJBQ0soK1tdKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSkgewotICAgICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPnBh
Z2VQcm94eS0+ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpOwotICAgICAgICB9KSwgd2lk
Z2V0KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbnJvb3QoR3RrV2lkZ2V0
KiB3aWRnZXQpCkBAIC0xODA1LDkgKzE3NjYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
QmFzZVVucm9vdChHdGtXaWRnZXQqIHdpZGdldCkKICAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVy
KCZwcml2LT50b3BsZXZlbFdpbmRvd1VucmVhbGl6ZWRJRCwgcHJpdi0+dG9wbGV2ZWxPblNjcmVl
bldpbmRvdyk7CiAgICAgaWYgKGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKEdUS19XSURHRVQocHJp
di0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpKQogICAgICAgICBnX2NsZWFyX3NpZ25hbF9oYW5k
bGVyKCZwcml2LT50b3BsZXZlbFdpbmRvd1N0YXRlQ2hhbmdlZElELCBndGtfbmF0aXZlX2dldF9z
dXJmYWNlKEdUS19OQVRJVkUocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpKTsKLSAgICBh
dXRvKiBzZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19XSURHRVQocHJpdi0+
dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpOwotICAgIGdfY2xlYXJfc2lnbmFsX2hhbmRsZXIoJnBy
aXYtPnRoZW1lQ2hhbmdlZElELCBzZXR0aW5ncyk7Ci0gICAgZ19jbGVhcl9zaWduYWxfaGFuZGxl
cigmcHJpdi0+YXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCwgc2V0dGluZ3MpOwogICAgIHBy
aXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cgPSBudWxscHRyOwogCiAgICAgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGU7CkBAIC0yMTU1LDYgKzIxMTMsMTMgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3Qp
CiAgICAgZ3RrX2dlc3R1cmVfZ3JvdXAoZ2VzdHVyZSwgcHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAp
OwogICAgIGd0a19nZXN0dXJlX3NpbmdsZV9zZXRfdG91Y2hfb25seShHVEtfR0VTVFVSRV9TSU5H
TEUoZ2VzdHVyZSksIFRSVUUpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KGdlc3R1cmUs
ICJzd2lwZSIsIEdfQ0FMTEJBQ0sod2Via2l0V2ViVmlld0Jhc2VUb3VjaFN3aXBlKSwgdmlld1dp
ZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworCisgICAgYXV0byogc2V0dGluZ3MgPSBndGtfc2V0
dGluZ3NfZ2V0X2RlZmF1bHQoKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gK1tdKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSkgeworICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVBy
b3h5LT5lZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKCk7CisgICAgfTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0X29iamVjdChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXRoZW1lLW5hbWUiLCBHX0NB
TExCQUNLKGNhbGxiYWNrKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHNldHRpbmdzLCAibm90aWZ5OjpndGstYXBwbGljYXRpb24t
cHJlZmVyLWRhcmstdGhlbWUiLCBHX0NBTExCQUNLKGNhbGxiYWNrKSwgdmlld1dpZGdldCwgR19D
T05ORUNUX1NXQVBQRUQpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZXdCYXNlQ2xhc3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMDhjYzI4OTAzOTkyNGQzMzc0
ODkzNjhmMzZjNTA1Y2M2ODg5Njc0NS4uNzRiMDVjMmEwZGExNjg3ODkxM2RjZGM4OTJhM2U0N2Yz
YjYwZWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNjI0LDEwICs2
MjQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlV2ViUGFnZUlEKCkg
Y29uc3QgeyB9CiAKLSNpZiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCBTdHJpbmcgdGhlbWVO
YW1lKCkgY29uc3QgPSAwOwotI2VuZGlmCi0KICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJ
Q0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxl
Q29udGV4dE1lbnVUcmFuc2xhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbihjb25zdCBXZWJDb3JlOjpUcmFuc2xhdGlvbkNvbnRl
eHRNZW51SW5mbyYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGJhYzI4YjdiOWRiNGU0N2QxNWYwN2M0MzgyZDBmZGVjNjhiNTliNWYuLjY1MWQ0N2I2
ZTRlMmQ4Mzk3MTdlN2M2MjQyODQ0NmZjNDdhNzNiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjQ0LDYgKzI0NCw3IEBACiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKEdUSykKKyNpbmNsdWRlICJHdGtTZXR0aW5nc01hbmFnZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1NlbGVjdGlvbkRhdGEuaD4KICNlbmRpZgogCkBAIC04MjIxLDcgKzgyMjIsNyBAQCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJz
KFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuY2FuVXNlQ3JlZGVudGlhbFN0
b3JhZ2UgPSBtX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlOwogCiAjaWYgUExBVEZPUk0oR1RLKQot
ICAgIHBhcmFtZXRlcnMudGhlbWVOYW1lID0gcGFnZUNsaWVudCgpLnRoZW1lTmFtZSgpOworICAg
IHBhcmFtZXRlcnMuZ3RrU2V0dGluZ3MgPSBHdGtTZXR0aW5nc01hbmFnZXI6OnNpbmdsZXRvbigp
LnNldHRpbmdzU3RhdGUoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDFkZGUyYWEwYWQ2NDYzNTVlMjkwNmM2ZTNmZmIwODAwOGQ1MjczNjUuLmJlMjQxZmRj
YjVkM2YyZjQyN2NkZThkNDRhNTAyZTIxOGZjZDRkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC05NjIsNyArOTYyLDYgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KEdUSykKICAgICBQbGF0Zm9ybVZpZXdXaWRnZXQgdmlld1dpZGdldCgpOwogICAgIGJvb2wgbWFr
ZUdMQ29udGV4dEN1cnJlbnQoKTsKLSAgICB2b2lkIHRoZW1lRGlkQ2hhbmdlKCk7CiAjZW5kaWYK
IAogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MzIxMTg1Y2E3ZWQ5YTJhMjU3ZDAxYWJlYWM0NTgzOWI3OTlmNWIwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKQEAg
LTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUHVyaXNtIFNQQworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR3RrU2V0dGluZ3NNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJHdGtTZXR0
aW5nc01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworR3RrU2V0
dGluZ3NNYW5hZ2VyJiBHdGtTZXR0aW5nc01hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEd0a1NldHRpbmdzTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1
cm4gbWFuYWdlcjsKK30KKworU3RyaW5nIEd0a1NldHRpbmdzTWFuYWdlcjo6dGhlbWVOYW1lKCkg
Y29uc3QKK3sKKyAgICBpZiAoYXV0byogdGhlbWVOYW1lRW52ID0gZ19nZXRlbnYoIkdUS19USEVN
RSIpKSB7CisgICAgICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh0aGVtZU5hbWVF
bnYpOworICAgICAgICBpZiAobmFtZS5lbmRzV2l0aCgiLWRhcmsiKSB8fCBuYW1lLmVuZHNXaXRo
KCItRGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIjpkYXJrIikpCisgICAgICAgICAgICByZXR1cm4g
bmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGgoKSAtIDUpOworICAgICAgICByZXR1cm4gbmFt
ZTsKKyAgICB9CisKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IHRoZW1lTmFtZVNldHRpbmc7Cisg
ICAgZ19vYmplY3RfZ2V0KG1fc2V0dGluZ3MsICJndGstdGhlbWUtbmFtZSIsICZ0aGVtZU5hbWVT
ZXR0aW5nLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6ZnJv
bVVURjgodGhlbWVOYW1lU2V0dGluZy5nZXQoKSk7CisgICAgaWYgKG5hbWUuZW5kc1dpdGgoIi1k
YXJrIikgfHwgbmFtZS5lbmRzV2l0aCgiLURhcmsiKSkKKyAgICAgICAgcmV0dXJuIG5hbWUuc3Vi
c3RyaW5nKDAsIG5hbWUubGVuZ3RoKCkgLSA1KTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworU3Ry
aW5nIEd0a1NldHRpbmdzTWFuYWdlcjo6Zm9udE5hbWUoKSBjb25zdAoreworICAgIEdVbmlxdWVP
dXRQdHI8Y2hhcj4gZm9udE5hbWVTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChtX3NldHRpbmdz
LCAiZ3RrLWZvbnQtbmFtZSIsICZmb250TmFtZVNldHRpbmcub3V0UHRyKCksIG51bGxwdHIpOwor
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZvbnROYW1lU2V0dGluZy5nZXQoKSk7Cit9CisK
K2ludCBHdGtTZXR0aW5nc01hbmFnZXI6OnhmdEFudGlhbGlhcygpIGNvbnN0Cit7CisgICAgaW50
IGFudGlhbGlhc1NldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KG1fc2V0dGluZ3MsICJndGsteGZ0
LWFudGlhbGlhcyIsICZhbnRpYWxpYXNTZXR0aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gYW50
aWFsaWFzU2V0dGluZzsKK30KKworaW50IEd0a1NldHRpbmdzTWFuYWdlcjo6eGZ0SGludGluZygp
IGNvbnN0Cit7CisgICAgaW50IGhpbnRpbmdTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChtX3Nl
dHRpbmdzLCAiZ3RrLXhmdC1oaW50aW5nIiwgJmhpbnRpbmdTZXR0aW5nLCBudWxscHRyKTsKKyAg
ICByZXR1cm4gaGludGluZ1NldHRpbmc7Cit9CisKK1N0cmluZyBHdGtTZXR0aW5nc01hbmFnZXI6
OnhmdEhpbnRTdHlsZSgpIGNvbnN0Cit7CisgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBoaW50U3R5
bGVTZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChtX3NldHRpbmdzLCAiZ3RrLXhmdC1oaW50c3R5
bGUiLCAmaGludFN0eWxlU2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoaGludFN0eWxlU2V0dGluZy5nZXQoKSk7Cit9CisKK1N0cmluZyBHdGtT
ZXR0aW5nc01hbmFnZXI6OnhmdFJHQkEoKSBjb25zdAoreworICAgIEdVbmlxdWVPdXRQdHI8Y2hh
cj4gcmdiYVNldHRpbmc7CisgICAgZ19vYmplY3RfZ2V0KG1fc2V0dGluZ3MsICJndGsteGZ0LXJn
YmEiLCAmcmdiYVNldHRpbmcub3V0UHRyKCksIG51bGxwdHIpOworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KHJnYmFTZXR0aW5nLmdldCgpKTsKK30KKworaW50IEd0a1NldHRpbmdzTWFuYWdl
cjo6eGZ0RFBJKCkgY29uc3QKK3sKKyAgICBpbnQgZHBpU2V0dGluZzsKKyAgICBnX29iamVjdF9n
ZXQobV9zZXR0aW5ncywgImd0ay14ZnQtZHBpIiwgJmRwaVNldHRpbmcsIG51bGxwdHIpOworICAg
IHJldHVybiBkcGlTZXR0aW5nOworfQorCitib29sIEd0a1NldHRpbmdzTWFuYWdlcjo6Y3Vyc29y
QmxpbmsoKSBjb25zdAoreworICAgIGdib29sZWFuIGN1cnNvckJsaW5rU2V0dGluZzsKKyAgICBn
X29iamVjdF9nZXQobV9zZXR0aW5ncywgImd0ay1jdXJzb3ItYmxpbmsiLCAmY3Vyc29yQmxpbmtT
ZXR0aW5nLCBudWxscHRyKTsKKyAgICByZXR1cm4gY3Vyc29yQmxpbmtTZXR0aW5nID8gdHJ1ZSA6
IGZhbHNlOworfQorCitpbnQgR3RrU2V0dGluZ3NNYW5hZ2VyOjpjdXJzb3JCbGlua1RpbWUoKSBj
b25zdAoreworICAgIGludCBjdXJzb3JCbGlua1RpbWVTZXR0aW5nOworICAgIGdfb2JqZWN0X2dl
dChtX3NldHRpbmdzLCAiZ3RrLWN1cnNvci1ibGluay10aW1lIiwgJmN1cnNvckJsaW5rVGltZVNl
dHRpbmcsIG51bGxwdHIpOworICAgIHJldHVybiBjdXJzb3JCbGlua1RpbWVTZXR0aW5nOworfQor
Citib29sIEd0a1NldHRpbmdzTWFuYWdlcjo6cHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKCkgY29u
c3QKK3sKKyAgICBnYm9vbGVhbiBidXR0b25TZXR0aW5nOworICAgIGdfb2JqZWN0X2dldChtX3Nl
dHRpbmdzLCAiZ3RrLXByaW1hcnktYnV0dG9uLXdhcnBzLXNsaWRlciIsICZidXR0b25TZXR0aW5n
LCBudWxscHRyKTsKKyAgICByZXR1cm4gYnV0dG9uU2V0dGluZyA/IHRydWUgOiBmYWxzZTsKK30K
Kwordm9pZCBHdGtTZXR0aW5nc01hbmFnZXI6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3sKKyAgICBH
dGtTZXR0aW5nc1N0YXRlIHN0YXRlOworCisgICAgYXV0byB0aGVtZU5hbWUgPSB0aGlzLT50aGVt
ZU5hbWUoKTsKKyAgICBpZiAobV9zZXR0aW5nc1N0YXRlLnRoZW1lTmFtZSAhPSB0aGVtZU5hbWUp
CisgICAgICAgIG1fc2V0dGluZ3NTdGF0ZS50aGVtZU5hbWUgPSBzdGF0ZS50aGVtZU5hbWUgPSB0
aGVtZU5hbWU7CisKKyAgICBhdXRvIGZvbnROYW1lID0gdGhpcy0+Zm9udE5hbWUoKTsKKyAgICBp
ZiAobV9zZXR0aW5nc1N0YXRlLmZvbnROYW1lICE9IGZvbnROYW1lKQorICAgICAgICBtX3NldHRp
bmdzU3RhdGUuZm9udE5hbWUgPSBzdGF0ZS5mb250TmFtZSA9IGZvbnROYW1lOworCisgICAgYXV0
byB4ZnRBbnRpYWxpYXMgPSB0aGlzLT54ZnRBbnRpYWxpYXMoKTsKKyAgICBpZiAobV9zZXR0aW5n
c1N0YXRlLnhmdEFudGlhbGlhcyAhPSB4ZnRBbnRpYWxpYXMpCisgICAgICAgIG1fc2V0dGluZ3NT
dGF0ZS54ZnRBbnRpYWxpYXMgPSBzdGF0ZS54ZnRBbnRpYWxpYXMgPSB4ZnRBbnRpYWxpYXM7CisK
KyAgICBhdXRvIHhmdEhpbnRpbmcgPSB0aGlzLT54ZnRIaW50aW5nKCk7CisgICAgaWYgKG1fc2V0
dGluZ3NTdGF0ZS54ZnRIaW50aW5nICE9IHhmdEhpbnRpbmcpCisgICAgICAgIG1fc2V0dGluZ3NT
dGF0ZS54ZnRIaW50aW5nID0gc3RhdGUueGZ0SGludGluZyA9IHhmdEhpbnRpbmc7CisKKyAgICBh
dXRvIHhmdEhpbnRTdHlsZSA9IHRoaXMtPnhmdEhpbnRTdHlsZSgpOworICAgIGlmIChtX3NldHRp
bmdzU3RhdGUueGZ0SGludFN0eWxlICE9IHhmdEhpbnRTdHlsZSkKKyAgICAgICAgbV9zZXR0aW5n
c1N0YXRlLnhmdEhpbnRTdHlsZSA9IHN0YXRlLnhmdEhpbnRTdHlsZSA9IHhmdEhpbnRTdHlsZTsK
KworICAgIGF1dG8geGZ0UkdCQSA9IHRoaXMtPnhmdFJHQkEoKTsKKyAgICBpZiAobV9zZXR0aW5n
c1N0YXRlLnhmdFJHQkEgIT0geGZ0UkdCQSkKKyAgICAgICAgbV9zZXR0aW5nc1N0YXRlLnhmdFJH
QkEgPSBzdGF0ZS54ZnRSR0JBID0geGZ0UkdCQTsKKworICAgIGF1dG8geGZ0RFBJID0gdGhpcy0+
eGZ0RFBJKCk7CisgICAgaWYgKG1fc2V0dGluZ3NTdGF0ZS54ZnREUEkgIT0geGZ0RFBJKQorICAg
ICAgICBtX3NldHRpbmdzU3RhdGUueGZ0RFBJID0gc3RhdGUueGZ0RFBJID0geGZ0RFBJOworCisg
ICAgYXV0byBjdXJzb3JCbGluayA9IHRoaXMtPmN1cnNvckJsaW5rKCk7CisgICAgaWYgKG1fc2V0
dGluZ3NTdGF0ZS5jdXJzb3JCbGluayAhPSBjdXJzb3JCbGluaykKKyAgICAgICAgbV9zZXR0aW5n
c1N0YXRlLmN1cnNvckJsaW5rID0gc3RhdGUuY3Vyc29yQmxpbmsgPSBjdXJzb3JCbGluazsKKwor
ICAgIGF1dG8gY3Vyc29yQmxpbmtUaW1lID0gdGhpcy0+Y3Vyc29yQmxpbmtUaW1lKCk7CisgICAg
aWYgKG1fc2V0dGluZ3NTdGF0ZS5jdXJzb3JCbGlua1RpbWUgIT0gY3Vyc29yQmxpbmtUaW1lKQor
ICAgICAgICBtX3NldHRpbmdzU3RhdGUuY3Vyc29yQmxpbmtUaW1lID0gc3RhdGUuY3Vyc29yQmxp
bmtUaW1lID0gY3Vyc29yQmxpbmtUaW1lOworCisgICAgYXV0byBwcmltYXJ5QnV0dG9uV2FycHNT
bGlkZXIgPSB0aGlzLT5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIoKTsKKyAgICBpZiAobV9zZXR0
aW5nc1N0YXRlLnByaW1hcnlCdXR0b25XYXJwc1NsaWRlciAhPSBwcmltYXJ5QnV0dG9uV2FycHNT
bGlkZXIpCisgICAgICAgIG1fc2V0dGluZ3NTdGF0ZS5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIg
PSBzdGF0ZS5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIgPSBwcmltYXJ5QnV0dG9uV2FycHNTbGlk
ZXI7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFBy
b2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6U2V0dGluZ3NEaWRDaGFuZ2Uoc3RhdGUp
KTsKK30KKworR3RrU2V0dGluZ3NNYW5hZ2VyOjpHdGtTZXR0aW5nc01hbmFnZXIoKQorICAgIDog
bV9zZXR0aW5ncyhndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKSkKK3sKKyAgICBhdXRvIHNldHRp
bmdzQ2hhbmdlZENhbGxiYWNrID0gK1tdKEd0a1NldHRpbmdzTWFuYWdlciogc2V0dGluZ3NNYW5h
Z2VyKSB7CisgICAgICAgIHNldHRpbmdzTWFuYWdlci0+c2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAg
ICB9OworCisgICAgbV9zZXR0aW5nc1N0YXRlLnRoZW1lTmFtZSA9IHRoZW1lTmFtZSgpOworICAg
IG1fc2V0dGluZ3NTdGF0ZS5mb250TmFtZSA9IGZvbnROYW1lKCk7CisgICAgbV9zZXR0aW5nc1N0
YXRlLnhmdEFudGlhbGlhcyA9IHhmdEFudGlhbGlhcygpOworICAgIG1fc2V0dGluZ3NTdGF0ZS54
ZnRIaW50aW5nID0geGZ0SGludGluZygpOworICAgIG1fc2V0dGluZ3NTdGF0ZS54ZnRIaW50U3R5
bGUgPSB4ZnRIaW50U3R5bGUoKTsKKyAgICBtX3NldHRpbmdzU3RhdGUueGZ0UkdCQSA9IHhmdFJH
QkEoKTsKKyAgICBtX3NldHRpbmdzU3RhdGUueGZ0RFBJID0geGZ0RFBJKCk7CisgICAgbV9zZXR0
aW5nc1N0YXRlLmN1cnNvckJsaW5rID0gY3Vyc29yQmxpbmsoKTsKKyAgICBtX3NldHRpbmdzU3Rh
dGUuY3Vyc29yQmxpbmtUaW1lID0gY3Vyc29yQmxpbmtUaW1lKCk7CisgICAgbV9zZXR0aW5nc1N0
YXRlLnByaW1hcnlCdXR0b25XYXJwc1NsaWRlciA9IHByaW1hcnlCdXR0b25XYXJwc1NsaWRlcigp
OworCisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2V0dGluZ3MsICJub3RpZnk6Omd0
ay10aGVtZS1uYW1lIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5nZWRDYWxsYmFjayksIHRoaXMp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NldHRpbmdzLCAibm90aWZ5OjpndGst
Zm9udC1uYW1lIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0
LWFudGlhbGlhcyIsIEdfQ0FMTEJBQ0soc2V0dGluZ3NDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9zZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhm
dC1kcGkiLCBHX0NBTExCQUNLKHNldHRpbmdzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisgICAg
Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2V0dGluZ3MsICJub3RpZnk6Omd0ay14ZnQtaGlu
dGluZyIsIEdfQ0FMTEJBQ0soc2V0dGluZ3NDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9zZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1oaW50
c3R5bGUiLCBHX0NBTExCQUNLKHNldHRpbmdzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisgICAg
Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2V0dGluZ3MsICJub3RpZnk6Omd0ay14ZnQtcmdi
YSIsIEdfQ0FMTEJBQ0soc2V0dGluZ3NDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV9zZXR0aW5ncywgIm5vdGlmeTo6Z3RrLWN1cnNvci1ibGlu
ayIsIEdfQ0FMTEJBQ0soc2V0dGluZ3NDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV9zZXR0aW5ncywgIm5vdGlmeTo6Z3RrLWN1cnNvci1ibGlu
ay10aW1lIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NldHRpbmdzLCAibm90aWZ5OjpndGstcHJpbWFy
eS1idXR0b24td2FycHMtc2xpZGVyIiwgR19DQUxMQkFDSyhzZXR0aW5nc0NoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjQ0YTk3
MmVmYjM3NjllZGQyOTIxNzMyMzMwZWZlNmUzYjBjOGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5oCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUHVyaXNtIFNQQworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ikd0a1NldHRpbmdzU3RhdGUuaCIKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHdGtTZXR0
aW5nc01hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEd0a1NldHRpbmdzTWFuYWdl
cik7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEd0a1NldHRpbmdzTWFuYWdlcj47CitwdWJs
aWM6CisgICAgc3RhdGljIEd0a1NldHRpbmdzTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBj
b25zdCBHdGtTZXR0aW5nc1N0YXRlJiBzZXR0aW5nc1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXR0aW5nc1N0YXRlOyB9Citwcml2YXRlOgorICAgIEd0a1NldHRpbmdzTWFuYWdlcigpOworCisg
ICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpOworCisgICAgU3RyaW5nIHRoZW1lTmFtZSgpIGNv
bnN0OworICAgIFN0cmluZyBmb250TmFtZSgpIGNvbnN0OworICAgIGludCB4ZnRBbnRpYWxpYXMo
KSBjb25zdDsKKyAgICBpbnQgeGZ0SGludGluZygpIGNvbnN0OworICAgIFN0cmluZyB4ZnRIaW50
U3R5bGUoKSBjb25zdDsKKyAgICBTdHJpbmcgeGZ0UkdCQSgpIGNvbnN0OworICAgIGludCB4ZnRE
UEkoKSBjb25zdDsKKyAgICBib29sIGN1cnNvckJsaW5rKCkgY29uc3Q7CisgICAgaW50IGN1cnNv
ckJsaW5rVGltZSgpIGNvbnN0OworICAgIGJvb2wgcHJpbWFyeUJ1dHRvbldhcnBzU2xpZGVyKCkg
Y29uc3Q7CisKKyAgICBHdGtTZXR0aW5ncyogbV9zZXR0aW5nczsKKyAgICBHdGtTZXR0aW5nc1N0
YXRlIG1fc2V0dGluZ3NTdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCAxYTdm
YTZiNzVlYzIzYWFkZTdhYjUwMGIyZThlMmZmZDU1ODU0YjY0Li42ZjY3YTgxNjkyMWNmMTI3NjUw
OGEyOWExMmY5NzM1NDViOGQ3YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtOTcsMTMgKzk3LDQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSkKICAgICBzZW5k
TWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShVc2VyTWVzc2Fn
ZSYmKSB7IH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dGhlbWVEaWRDaGFuZ2UoKQotewot
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VGhlbWVEaWRDaGFuZ2UocGFnZUNsaWVudCgpLnRoZW1lTmFt
ZSgpKSk7Ci0gICAgZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggY2Q0NDhjNTMzYjA3ZjAyOWJiYjY0YjFhZDQ2ODJiY2E4NjE3YjA2Mi4uNzI2
NTVlNjFjYWYyMmQ5NGQyNjdkNDM0NTE4NjQ3MjUzNzdkNTA4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMwOSw2ICszMDksNyBAQAogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSAiR3RrU2V0dGluZ3NNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcmludE9wZXJhdGlvbkd0ay5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VsZWN0aW9uRGF0YS5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTczMiw3ICs3MzMs
NyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5h
YmxlZChwYXJhbWV0ZXJzLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQpOwogCiAjaWYgUExBVEZP
Uk0oR1RLKQotICAgIHRoZW1lRGlkQ2hhbmdlKFdURk1vdmUocGFyYW1ldGVycy50aGVtZU5hbWUp
KTsKKyAgICBHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6c2luZ2xldG9uKCkuYXBwbHlTZXR0aW5n
cyhXVEZNb3ZlKHBhcmFtZXRlcnMuZ3RrU2V0dGluZ3MpKTsKICNlbmRpZgogCiAgICAgZWZmZWN0
aXZlQXBwZWFyYW5jZURpZENoYW5nZShwYXJhbWV0ZXJzLnVzZURhcmtBcHBlYXJhbmNlLCBwYXJh
bWV0ZXJzLnVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKTsKQEAgLTk2Nyw2ICs5NjgsMTAg
QEAgdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChtX2xheWVySG9zdGluZ01vZGUgIT0gcGFyYW1l
dGVycy5sYXllckhvc3RpbmdNb2RlKQogICAgICAgICBzZXRMYXllckhvc3RpbmdNb2RlKHBhcmFt
ZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSk7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgR3RrU2V0
dGluZ3NNYW5hZ2VyUHJveHk6OnNpbmdsZXRvbigpLmFwcGx5U2V0dGluZ3MoV1RGTW92ZShwYXJh
bWV0ZXJzLmd0a1NldHRpbmdzKSk7CisjZW5kaWYKKwogICAgIHBsYXRmb3JtUmVpbml0aWFsaXpl
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCAzNjIzMzVmZGQ3ODUxOGEyOGUyZmI3NjQ5ODM5ZTMyMDEwYzkyZGIzLi5lNDVjNjQ5MTFiMDcx
OTczMTRhNzdiOGZmMTkxZDI0NmY2MzdiMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04OTMsOCArODkzLDYgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKEdUSykKICAgICB2b2lkIGNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2hvd0Vtb2ppUGlja2VyKFdlYkNvcmU6OkZyYW1lJik7
Ci0KLSAgICB2b2lkIHRoZW1lRGlkQ2hhbmdlKFN0cmluZyYmKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBkaWRBcHBseVN0eWxlKCk7CkBAIC0yMzI2LDEwICsyMzI0LDYgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEph
dmFTY3JpcHQgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlv
biB7IFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXMgfTsKIAotI2lmIFBMQVRG
T1JNKEdUSykKLSAgICBTdHJpbmcgbV90aGVtZU5hbWU7Ci0jZW5kaWYKLSAgICAKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBC
b3VuZERvbWFpbnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCAxY2VkYTdhN2JjYWIyZDgwYWU0YzI2OWIwZmMwZTdlZGIz
MTUxZGQ1Li42YmY0NzNkOWYyZTY4OGFmYzA2NzE3YjAzNmFlMzRjNGU4YWJhYzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTUxNSwxMCArNTE1LDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgIEVm
ZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSwgYm9vbCB1
c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkKIAotI2lmIFBMQVRGT1JNKEdUSykKLSAgICBU
aGVtZURpZENoYW5nZShTdHJpbmcgdGhlbWVOYW1lKQotI2VuZGlmCi0KICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKCkgLT4gKGJvb2wg
YWN0aXZlLCBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgU3RyaW5nIHRp
dGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2VkVGltZSwgdWludDY0X3QgdW5pcXVl
SWRlbnRpZmllcikgQXN5bmMKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IGNjY2Q4Y2ExOTM0OTk5OGZiN2U2
NGRmNDNlODY3MTBiZGNmNDRhMzAuLmVjMDc5ZjdiNmQwZTE3YjU5ZTJjN2FmNjIyYzkzN2IwZjJj
NGVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlclRoZW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dz
S2V5Ym9hcmRDb2Rlcy5oPgpAQCAtMTc4LDE1ICsxNzcsNCBAQCB2b2lkIFdlYlBhZ2U6OnNob3dF
bW9qaVBpY2tlcihGcmFtZSYgZnJhbWUpCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dFbW9qaVBpY2tlcihmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9S
b290VmlldyhmcmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnRoZW1lRGlkQ2hhbmdl
KFN0cmluZyYmIHRoZW1lTmFtZSkKLXsKLSAgICBpZiAobV90aGVtZU5hbWUgPT0gdGhlbWVOYW1l
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RoZW1lTmFtZSA9IFdURk1vdmUodGhlbWVOYW1l
KTsKLSAgICBnX29iamVjdF9zZXQoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksICJndGstdGhl
bWUtbmFtZSIsIG1fdGhlbWVOYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOwotICAgIFJlbmRl
clRoZW1lOjpzaW5nbGV0b24oKS5wbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwotICAgIFBhZ2U6
OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1lbnQoKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0
MjIzN2IxNDk2MDY2NjQ0MzJlOWJkYjMxZTcwODIwYWJmODM0ZmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlclByb3h5LmNw
cApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIFB1cmlzbSBTUEMK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkd0a1NldHRpbmdzTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRl
ICJHdGtTZXR0aW5nc01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUaGVtZS5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitHdGtTZXR0aW5nc01hbmFnZXJQcm94
eSYgR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHk6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEd0a1NldHRpbmdzTWFuYWdlclByb3h5PiBtYW5hZ2VyOworICAgIHJldHVy
biBtYW5hZ2VyOworfQorCitHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6R3RrU2V0dGluZ3NNYW5h
Z2VyUHJveHkoKQorICAgIDogbV9zZXR0aW5ncyhndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKSkK
K3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6Okd0a1NldHRpbmdzTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKK30KKwordm9pZCBHdGtTZXR0aW5nc01hbmFnZXJQcm94eTo6c2V0dGluZ3NEaWRDaGFuZ2Uo
R3RrU2V0dGluZ3NTdGF0ZSYmIHN0YXRlKQoreworICAgIGFwcGx5U2V0dGluZ3MoV1RGTW92ZShz
dGF0ZSkpOworfQorCit2b2lkIEd0a1NldHRpbmdzTWFuYWdlclByb3h5OjphcHBseVNldHRpbmdz
KEd0a1NldHRpbmdzU3RhdGUmJiBzdGF0ZSkKK3sKKyAgICBpZiAoc3RhdGUudGhlbWVOYW1lKSB7
CisgICAgICAgIGdfb2JqZWN0X3NldChtX3NldHRpbmdzLCAiZ3RrLXRoZW1lLW5hbWUiLCBzdGF0
ZS5mb250TmFtZS0+dXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgICAgIFJlbmRlclRoZW1l
OjpzaW5nbGV0b24oKS5wbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOworICAgICAgICBQYWdlOjp1
cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFuZ2VJbkVudmlyb25tZW50KCk7Cisg
ICAgfQorCisgICAgaWYgKHN0YXRlLmZvbnROYW1lKQorICAgICAgICBnX29iamVjdF9zZXQobV9z
ZXR0aW5ncywgImd0ay1mb250LW5hbWUiLCBzdGF0ZS5mb250TmFtZS0+dXRmOCgpLmRhdGEoKSwg
bnVsbHB0cik7CisKKyAgICBpZiAoc3RhdGUueGZ0QW50aWFsaWFzKQorICAgICAgICBnX29iamVj
dF9zZXQobV9zZXR0aW5ncywgImd0ay14ZnQtYW50aWFsaWFzIiwgKnN0YXRlLnhmdEFudGlhbGlh
cywgbnVsbHB0cik7CisKKyAgICBpZiAoc3RhdGUueGZ0SGludGluZykKKyAgICAgICAgZ19vYmpl
Y3Rfc2V0KG1fc2V0dGluZ3MsICJndGsteGZ0LWhpbnRpbmciLCAqc3RhdGUueGZ0SGludGluZywg
bnVsbHB0cik7CisKKyAgICBpZiAoc3RhdGUueGZ0SGludFN0eWxlKQorICAgICAgICBnX29iamVj
dF9zZXQobV9zZXR0aW5ncywgImd0ay14ZnQtaGludHN0eWxlIiwgc3RhdGUueGZ0SGludFN0eWxl
LT51dGY4KCkuZGF0YSgpLCBudWxscHRyKTsKKworICAgIGlmIChzdGF0ZS54ZnRSR0JBKQorICAg
ICAgICBnX29iamVjdF9zZXQobV9zZXR0aW5ncywgImd0ay14ZnQtcmdiYSIsIHN0YXRlLnhmdFJH
QkEtPnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOworCisgICAgaWYgKHN0YXRlLnhmdERQSSkKKyAg
ICAgICAgZ19vYmplY3Rfc2V0KG1fc2V0dGluZ3MsICJndGsteGZ0LWRwaSIsICpzdGF0ZS54ZnRE
UEksIG51bGxwdHIpOworCisgICAgaWYgKHN0YXRlLmN1cnNvckJsaW5rKQorICAgICAgICBnX29i
amVjdF9zZXQobV9zZXR0aW5ncywgImd0ay1jdXJzb3ItYmxpbmsiLCAqc3RhdGUuY3Vyc29yQmxp
bmssIG51bGxwdHIpOworCisgICAgaWYgKHN0YXRlLmN1cnNvckJsaW5rVGltZSkKKyAgICAgICAg
Z19vYmplY3Rfc2V0KG1fc2V0dGluZ3MsICJndGstY3Vyc29yLWJsaW5rLXRpbWUiLCAqc3RhdGUu
Y3Vyc29yQmxpbmtUaW1lLCBudWxscHRyKTsKKworICAgIGlmIChzdGF0ZS5wcmltYXJ5QnV0dG9u
V2FycHNTbGlkZXIpCisgICAgICAgIGdfb2JqZWN0X3NldChtX3NldHRpbmdzLCAiZ3RrLXByaW1h
cnktYnV0dG9uLXdhcnBzLXNsaWRlciIsICpzdGF0ZS5wcmltYXJ5QnV0dG9uV2FycHNTbGlkZXIs
IG51bGxwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jM2M2Yzg4NWI5MzRlMzg1MDFiNWJjYzBlMDIwOWIwNDMyYzQyOGEzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXJQ
cm94eS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUHVyaXNt
IFNQQworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkd0a1NldHRpbmdzU3RhdGUuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHdGtTZXR0aW5nc01hbmFn
ZXJQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEd0a1NldHRpbmdzTWFuYWdlclByb3h5KTsKKyAgICBmcmllbmQgTmV2ZXJEZXN0
cm95ZWQ8R3RrU2V0dGluZ3NNYW5hZ2VyUHJveHk+OworcHVibGljOgorICAgIHN0YXRpYyBHdGtT
ZXR0aW5nc01hbmFnZXJQcm94eSYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIGFwcGx5U2V0dGlu
Z3MoR3RrU2V0dGluZ3NTdGF0ZSYmKTsKK3ByaXZhdGU6CisgICAgR3RrU2V0dGluZ3NNYW5hZ2Vy
UHJveHkoKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKEd0a1NldHRpbmdzU3RhdGUmJik7CisKKyAgICBH
dGtTZXR0aW5ncyogbV9zZXR0aW5nczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGlu
Z3NNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ1MzczYmNkZWZlNGM0OWFi
MmMxYWI0NDQ1ZDgyNWY3MzkyNTM2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAs
MCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgUHVyaXNtIFNQQworIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBHdGtTZXR0aW5nc01h
bmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXR0aW5nc0RpZENoYW5nZShzdHJ1Y3Qg
V2ViS2l0OjpHdGtTZXR0aW5nc1N0YXRlIHNldHRpbmdzU3RhdGUpCit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>