<?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>43335</bug_id>
          
          <creation_ts>2010-08-02 05:06:03 -0700</creation_ts>
          <short_desc>Chromium DevTools: Get rid of APUAgent and DebuggerAgent</short_desc>
          <delta_ts>2010-08-03 00:39:55 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>loislo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258788</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-02 05:06:03 -0700</bug_when>
    <thetext>I&apos;d like to remove DevToolsRPC infrastructure as a whole, starting with removing these two agents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258800</commentid>
    <comment_count>1</comment_count>
      <attachid>63194</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-02 05:23:57 -0700</bug_when>
    <thetext>Created attachment 63194
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258802</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 05:26:58 -0700</bug_when>
    <thetext>Attachment 63194 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/DebuggerAgentImpl.h:55:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebKit/chromium/src/WebDevToolsAgentImpl.cpp:515:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebKit/chromium/public/WebDevToolsAgentClient.h:43:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 5 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258810</commentid>
    <comment_count>3</comment_count>
      <attachid>63200</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-02 05:39:10 -0700</bug_when>
    <thetext>Created attachment 63200
[PATCH] Proposed change with fixed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258813</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 05:43:14 -0700</bug_when>
    <thetext>Attachment 63200 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebDevToolsAgentImpl.cpp:518:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebKit/chromium/public/WebDevToolsAgentClient.h:43:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258815</commentid>
    <comment_count>5</comment_count>
      <attachid>63200</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-02 05:45:12 -0700</bug_when>
    <thetext>Comment on attachment 63200
[PATCH] Proposed change with fixed style.

WebKit/chromium/src/WebDevToolsAgentImpl.cpp:297
 +          ProfilerAgentDispatch::dispatch(m_profilerAgentImpl.get(), data);
looks like m_attached and m_profilerAgentImpl.get() checks are missing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258816</commentid>
    <comment_count>6</comment_count>
      <attachid>63203</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-02 05:47:43 -0700</bug_when>
    <thetext>Created attachment 63203
[PATCH] Profiler check added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258817</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 05:49:28 -0700</bug_when>
    <thetext>Attachment 63203 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebDevToolsAgentImpl.cpp:296:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebKit/chromium/public/WebDevToolsAgentClient.h:43:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 10 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258819</commentid>
    <comment_count>8</comment_count>
      <attachid>63205</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-02 05:53:32 -0700</bug_when>
    <thetext>Created attachment 63205
[PATCH] Proposed change with style addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258820</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 05:55:10 -0700</bug_when>
    <thetext>Attachment 63205 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/public/WebDevToolsAgentClient.h:43:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258821</commentid>
    <comment_count>10</comment_count>
      <attachid>63205</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-02 05:56:17 -0700</bug_when>
    <thetext>Comment on attachment 63205
[PATCH] Proposed change with style addressed.

WebKit/chromium/src/WebDevToolsAgentImpl.cpp:302
 +      if (m_profilerAgentImpl.get() &amp;&amp; ProfilerAgentDispatch::dispatch(m_profilerAgentImpl.get(), data))
 if (m_profilerAgentImpl.get() &amp;&amp; ProfilerAgentDispatch::dispatch(m_profilerAgentImpl.get(), data)) should be

 if (m_profilerAgentImpl)
    ProfilerAgentDispatch::dispatch(m_profilerAgentImpl.get(), data);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259019</commentid>
    <comment_count>11</comment_count>
      <attachid>63243</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-02 11:49:45 -0700</bug_when>
    <thetext>Created attachment 63243
[PATCH] Now I removed all agents + RPC itself.

I&apos;d like to land it as a two-sided change while I am on the duty tomorrow. Sorry about the size of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259055</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-02 12:51:24 -0700</bug_when>
    <thetext>Attachment 63243 did not build on mac:
Build output: http://queues.webkit.org/results/3580746</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259067</commentid>
    <comment_count>13</comment_count>
      <attachid>63248</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-02 13:27:58 -0700</bug_when>
    <thetext>Created attachment 63248
[PATCH] Now I removed all agents + RPC itself (bot fixed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259305</commentid>
    <comment_count>14</comment_count>
      <attachid>63248</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-03 00:31:27 -0700</bug_when>
    <thetext>Comment on attachment 63248
[PATCH] Now I removed all agents + RPC itself (bot fixed).

WebCore/inspector/InspectorFrontend.h:156
 +          void didGetProfilerLogLines(int position, const String&amp; data);
You should either put calling code behind the same guards or remove the guards here.Or remove these methods completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259306</commentid>
    <comment_count>15</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-03 00:39:55 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	WebKit/chromium/public/WebDevToolsMessageData.h
	D	WebKit/chromium/public/WebDevToolsMessageTransport.h
	D	WebKit/chromium/src/APUAgentDelegate.h
	D	WebKit/chromium/src/DebuggerAgent.h
	D	WebKit/chromium/src/DevToolsRPC.h
	D	WebKit/chromium/src/DevToolsRPCJS.h
	D	WebKit/chromium/src/ProfilerAgent.h
	D	WebKit/chromium/src/ProfilerAgentImpl.cpp
	D	WebKit/chromium/src/ProfilerAgentImpl.h
	D	WebKit/chromium/src/ToolsAgent.h
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/ScriptProfiler.h
	M	WebCore/bindings/v8/ScriptProfiler.cpp
	M	WebCore/bindings/v8/ScriptProfiler.h
	M	WebCore/inspector/Inspector.idl
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/front-end/InspectorBackendStub.js
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/WebKit.gyp
	M	WebKit/chromium/public/WebDevToolsAgent.h
	M	WebKit/chromium/public/WebDevToolsAgentClient.h
	M	WebKit/chromium/public/WebDevToolsFrontend.h
	M	WebKit/chromium/public/WebDevToolsFrontendClient.h
	M	WebKit/chromium/src/DebuggerAgentImpl.cpp
	M	WebKit/chromium/src/DebuggerAgentImpl.h
	M	WebKit/chromium/src/DebuggerAgentManager.cpp
	M	WebKit/chromium/src/InspectorClientImpl.cpp
	M	WebKit/chromium/src/InspectorFrontendClientImpl.cpp
	M	WebKit/chromium/src/WebDevToolsAgentImpl.cpp
	M	WebKit/chromium/src/WebDevToolsAgentImpl.h
	M	WebKit/chromium/src/WebDevToolsFrontendImpl.cpp
	M	WebKit/chromium/src/WebDevToolsFrontendImpl.h
	M	WebKit/chromium/src/js/DevTools.js
	M	WebKit/chromium/src/js/DevToolsHostStub.js
	M	WebKit/chromium/src/js/ProfilerAgent.js
	M	WebKit/chromium/src/js/ProfilerProcessor.js
	M	WebKitTools/ChangeLog
	M	WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp
	M	WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.h
	M	WebKitTools/DumpRenderTree/chromium/DRTDevToolsCallArgs.h
	M	WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.cpp
	M	WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.h
Committed r64534</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63194</attachid>
            <date>2010-08-02 05:23:57 -0700</date>
            <delta_ts>2010-08-02 05:39:10 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>removed_agents</filename>
            <type>text/plain</type>
            <size>24717</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGEzODk1MjUuLjc2MTBlNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDEwLTA4LTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9t
aXVtIERldlRvb2xzOiBHZXQgcmlkIG9mIEFQVUFnZW50IGFuZCBEZWJ1Z2dlckFnZW50LgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzMzNQorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
OgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREZWJ1Z2dlck91dHB1
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREaXNwYXRj
aFRvQVBVKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0Lmg6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL0FQVUFnZW50RGVsZWdhdGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9EZWJ1
Z2dlckFnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRJbXBsOjpk
ZWJ1Z2dlck91dHB1dCk6CisgICAgICAgICogc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGVi
dWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6RGVidWdn
ZXJBZ2VudE1hbmFnZXI6Om9uVjhEZWJ1Z01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29tbWFuZFRvVjgpOgorICAgICAgICAoV2Vi
S2l0OjpEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRvVjgpOgorICAg
ICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzQWdlbnRJbXBsOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50SW1wbDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJE
ZXZUb29sc0FnZW50SW1wbDo6anNEaXNwYXRjaE9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDct
MjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAwMTM4NTU0Li42
ODdkMTVjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTQzLDcgKzE0Myw2IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
ZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
b2N1bWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLApAQCAtMjcxLDcgKzI3MCw2
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCi0gICAgICAg
ICAgICAgICAgJ3NyYy9BUFVBZ2VudERlbGVnYXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcCcsCkBAIC0yOTIsNyArMjkwLDYgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGF0YWJhc2VPYnNlcnZl
ci5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9EZWJ1Z2dlckFnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdl
bnRNYW5hZ2VyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dlRvb2xzQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
CmluZGV4IDBlMjZjYzkuLjY1NDM4M2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2VG9vbHNBZ2VudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2
VG9vbHNBZ2VudC5oCkBAIC03Miw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBBc3luY2hyb25v
dXNseSByZXF1ZXN0IGRlYnVnZ2VyIHRvIHBhdXNlIGltbWVkaWF0ZWx5LgogICAgIFdFQktJVF9B
UEkgc3RhdGljIHZvaWQgZGVidWdnZXJQYXVzZVNjcmlwdCgpOwogCi0gICAgV0VCS0lUX0FQSSBz
dGF0aWMgYm9vbCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKFdlYkRldlRv
b2xzTWVzc2FnZVRyYW5zcG9ydCosIGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKTsKLQog
ICAgIHR5cGVkZWYgdm9pZCAoKk1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKSgpOwogCiAgICAg
Ly8gSW5zdGFsbHMgZGlzcGF0Y2ggaGFuZGxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHBl
cmlvZGljYWxseQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29s
c0FnZW50Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRD
bGllbnQuaAppbmRleCA5MWZkM2U4Li43ZmIwNDYyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNDAsNyArNDAsOSBAQCBzdHJ1Y3Qg
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudCB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBX
ZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9DQorICAgIHZpcnR1
YWwgdm9pZCBzZW5kRGVidWdnZXJPdXRwdXQoY29uc3QgV2ViU3RyaW5nJikgeyB9DQorICAgIHZp
cnR1YWwgdm9pZCBzZW5kRGlzcGF0Y2hUb0FQVShjb25zdCBXZWJTdHJpbmcmKSB7IH0KIAogICAg
IC8vIEludmFsaWRhdGVzIHdpZGdldCB3aGljaCBsZWFkcyB0byB0aGUgcmVwYWludC4KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTRjMDdmMS4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLSNkZWZpbmUgV2ViRGV2
VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLQotI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKLSNpbmNs
dWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2ViRGV2VG9v
bHNNZXNzYWdlRGF0YTsKLQotY2xhc3MgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kT25JT1RocmVhZChjb25zdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhJikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9BUFVBZ2VudERlbGVnYXRl
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0FQVUFnZW50RGVsZWdhdGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzBiZTcwMi4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0FQVUFnZW50RGVsZWdhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEFQVUFnZW50RGVsZWdhdGVfaAotI2RlZmluZSBBUFVBZ2VudERlbGVnYXRlX2gKLQotI2lu
Y2x1ZGUgIkRldlRvb2xzUlBDLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jZGVmaW5lIEFQ
VV9BR0VOVF9ERUxFR0FURV9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwgTUVUSE9E
MywgTUVIVE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFNlbmRzIGEganNvbiBvYmplY3QgdG8gYXB1
LiAqLyBcCi0gICAgTUVUSE9EMShkaXNwYXRjaFRvQXB1LCBTdHJpbmcgLyogZGF0YSAqLykKLQot
REVGSU5FX1JQQ19DTEFTUyhBcHVBZ2VudERlbGVnYXRlLCBBUFVfQUdFTlRfREVMRUdBVEVfU1RS
VUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVi
dWdnZXJBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2NkZTExLi4wMDAw
MDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGVidWdnZXJBZ2VudF9oCi0jZGVmaW5lIERlYnVn
Z2VyQWdlbnRfaAotCi0jaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1F
VEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBSZXF1ZXN0cyBnbG9i
YWwgY29udGV4dCBpZCBvZiB0aGUgaW5zcGVjdGVkIHRhYi4gKi8gXAotICAgIE1FVEhPRDAoZ2V0
Q29udGV4dElkKSBcCi0gICAgXAotICAgIC8qIFJlcXVlc3QgdjggdG8gcHJvY2VzcyBhbGwgZGVi
dWcgY29tbWFuZHMgaW4gdGhlIHF1ZXVlLiAqLyBcCi0gICAgTUVUSE9EMChwcm9jZXNzRGVidWdD
b21tYW5kcykKLQotREVGSU5FX1JQQ19DTEFTUyhEZWJ1Z2dlckFnZW50LCBERUJVR0dFUl9BR0VO
VF9TVFJVQ1QpCi0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfREVMRUdBVEVfU1RSVUNUKE1FVEhP
RDAsIE1FVEhPRDEsIE1FVEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICBN
RVRIT0QxKGRlYnVnZ2VyT3V0cHV0LCBTdHJpbmcgLyogb3V0cHV0IHRleHQgKi8pIFwKLSAgICBc
Ci0gICAgLyogUHVzaGVzIGRlYnVnZ2VyIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50LiAqLyBc
Ci0gICAgTUVUSE9EMShzZXRDb250ZXh0SWQsIGludCAvKiBjb250ZXh0IGlkICovKQotCi1ERUZJ
TkVfUlBDX0NMQVNTKERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSwgREVCVUdHRVJfQUdFTlRfREVMRUdB
VEVfU1RSVUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCmluZGV4IGRkZTllMWQuLjRkYzQwYTggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViVmlld0lt
cGwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTMsMTEgKzU0LDExIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBEZWJ1Z2dlckFnZW50SW1wbDo6RGVidWdnZXJBZ2VudEltcGwoCiAg
ICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLAotICAgIERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSog
ZGVsZWdhdGUsCi0gICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQpCisg
ICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsCisgICAgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCogd2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICA6IG1fd2ViVmlld0lt
cGwod2ViVmlld0ltcGwpCi0gICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICwgbV93ZWJk
ZXZ0b29sc0FnZW50KHdlYmRldnRvb2xzQWdlbnQpCisgICAgLCBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQod2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICAsIG1fYXV0b0NvbnRpbnVlT25FeGNl
cHRpb24oZmFsc2UpCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnQXR0YWNoKHRo
aXMpOwpAQCAtNjgsMjAgKzY5LDkgQEAgRGVidWdnZXJBZ2VudEltcGw6On5EZWJ1Z2dlckFnZW50
SW1wbCgpCiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKHRoaXMpOwogfQog
Ci12b2lkIERlYnVnZ2VyQWdlbnRJbXBsOjpnZXRDb250ZXh0SWQoKQotewotICAgIG1fZGVsZWdh
dGUtPnNldENvbnRleHRJZChtX3dlYmRldnRvb2xzQWdlbnQtPmhvc3RJZCgpKTsKLX0KLQotdm9p
ZCBEZWJ1Z2dlckFnZW50SW1wbDo6cHJvY2Vzc0RlYnVnQ29tbWFuZHMoKQotewotICAgIERlYnVn
Z2VyQWdlbnRNYW5hZ2VyOjpVdGlsaXR5Q29udGV4dFNjb3BlIHV0aWxpdHlTY29wZTsKLSAgICB2
ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7Ci19Ci0KIHZvaWQgRGVidWdnZXJBZ2Vu
dEltcGw6OmRlYnVnZ2VyT3V0cHV0KGNvbnN0IFN0cmluZyYgY29tbWFuZCkKIHsKLSAgICBtX2Rl
bGVnYXRlLT5kZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKKyAgICBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQtPnNlbmREZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKICAgICBtX3dlYmRldnRvb2xzQWdl
bnQtPmZvcmNlUmVwYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RlYnVnZ2VyQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJ
bXBsLmgKaW5kZXggMGU2ZTZhZi4uYWM1MDIzZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdn
ZXJBZ2VudEltcGwuaApAQCAtMzEsOCArMzEsNiBAQAogI2lmbmRlZiBEZWJ1Z2dlckFnZW50SW1w
bF9oCiAjZGVmaW5lIERlYnVnZ2VyQWdlbnRJbXBsX2gKIAotI2luY2x1ZGUgIkRlYnVnZ2VyQWdl
bnQuaCIKLQogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQ3LDIwICs0NSwxNyBAQCBjbGFzcyBTdHJpbmc7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50Owog
Y2xhc3MgV2ViRGV2VG9vbHNBZ2VudEltcGw7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAotY2xhc3Mg
RGVidWdnZXJBZ2VudEltcGwgOiBwdWJsaWMgRGVidWdnZXJBZ2VudCB7CitjbGFzcyBEZWJ1Z2dl
ckFnZW50SW1wbCB7CiBwdWJsaWM6CiAgICAgRGVidWdnZXJBZ2VudEltcGwoV2ViS2l0OjpXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgRGVidWdnZXJBZ2Vu
dERlbGVnYXRlKiBkZWxlZ2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBXZWJEZXZUb29sc0Fn
ZW50SW1wbCogd2ViZGV2dG9vbHNBZ2VudCk7CisgICAgICAgICAgICAgICAgICAgICAgV2ViRGV2
VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsDQorICAgICAgICAgICAgICAgICAgICAg
IFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIHdlYmRldnRvb2xzQWdlbnRDbGllbnQpOwogICAgIHZp
cnR1YWwgfkRlYnVnZ2VyQWdlbnRJbXBsKCk7CiAKLSAgICAvLyBEZWJ1Z2dlckFnZW50IGltcGxl
bWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRDb250ZXh0SWQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RlYnVnQ29tbWFuZHMoKTsKLQogICAgIHZvaWQgZGVidWdnZXJPdXRwdXQo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBvdXQpOwogCiAgICAgdm9pZCBzZXRBdXRvQ29udGludWVP
bkV4Y2VwdGlvbihib29sIGF1dG9Db250aW51ZSkgeyBtX2F1dG9Db250aW51ZU9uRXhjZXB0aW9u
ID0gYXV0b0NvbnRpbnVlOyB9CkBAIC04Nyw4ICs4Miw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOwotICAgIERlYnVnZ2VyQWdl
bnREZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBXZWJEZXZUb29sc0FnZW50SW1wbCogbV93ZWJk
ZXZ0b29sc0FnZW50OworICAgIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIG1fd2ViZGV2dG9vbHNB
Z2VudENsaWVudDsKICAgICBib29sIG1fYXV0b0NvbnRpbnVlT25FeGNlcHRpb247CiB9OwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCmluZGV4IDFjYzY3
NDAuLjIzYTA0MWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2Vu
dE1hbmFnZXIuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFn
ZXIuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6ZGVi
dWdEZXRhY2goRGVidWdnZXJBZ2VudEltcGwqIGRlYnVnZ2VyQWdlbnQpCiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgLy8gUmVtb3ZlIGFsbCBicmVha3BvaW50cyBzZXQgYnkgdGhlIGFn
ZW50LgotICAgICAgU3RyaW5nIGNsZWFyQnJlYWtwb2ludEdyb3VwQ21kID0gU3RyaW5nOjpmb3Jt
YXQoCisgICAgICBXZWJDb3JlOjpTdHJpbmcgY2xlYXJCcmVha3BvaW50R3JvdXBDbWQgPSBTdHJp
bmc6OmZvcm1hdCgKICAgICAgICAgICAie1wic2VxXCI6MSxcInR5cGVcIjpcInJlcXVlc3RcIixc
ImNvbW1hbmRcIjpcImNsZWFyYnJlYWtwb2ludGdyb3VwXCIsIgogICAgICAgICAgICAgICAiXCJh
cmd1bWVudHNcIjp7XCJncm91cElkXCI6JWR9fSIsCiAgICAgICAgICAgaG9zdElkKTsKQEAgLTE3
Niw3ICsxNzYsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpvblY4RGVidWdNZXNzYWdl
KGNvbnN0IHY4OjpEZWJ1Zzo6TWVzc2FnZSYgbWVzc2FnZSkKIHsKICAgICB2ODo6SGFuZGxlU2Nv
cGUgc2NvcGU7CiAgICAgdjg6OlN0cmluZzo6VmFsdWUgdmFsdWUobWVzc2FnZS5HZXRKU09OKCkp
OwotICAgIFN0cmluZyBvdXQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCp2YWx1ZSks
IHZhbHVlLmxlbmd0aCgpKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgb3V0KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUNoYXIqPigqdmFsdWUpLCB2YWx1ZS5sZW5ndGgoKSk7CiAKICAgICAvLyBJZiBj
YWxsZXJEYXRhIGlzIG5vdCAwIHRoZSBtZXNzYWdlIGlzIGEgcmVzcG9uc2UgdG8gYSBkZWJ1Z2dl
ciBjb21tYW5kLgogICAgIGlmICh2ODo6RGVidWc6OkNsaWVudERhdGEqIGNhbGxlckRhdGEgPSBt
ZXNzYWdlLkdldENsaWVudERhdGEoKSkgewpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgRGVidWdn
ZXJBZ2VudE1hbmFnZXI6OnBhdXNlU2NyaXB0KCkKICAgICAgICAgdjg6OkRlYnVnOjpEZWJ1Z0Jy
ZWFrKCk7CiB9CiAKLXZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmV4ZWN1dGVEZWJ1Z2dlckNv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBpbnQgY2FsbGVySWQpCit2b2lkIERlYnVnZ2Vy
QWdlbnRNYW5hZ2VyOjpleGVjdXRlRGVidWdnZXJDb21tYW5kKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgY29tbWFuZCwgaW50IGNhbGxlcklkKQogewogICAgIHNlbmRDb21tYW5kVG9WOChjb21tYW5k
LCBuZXcgQ2FsbGVySWRXcmFwcGVyKGNhbGxlcklkKSk7CiB9CkBAIC0yODYsMTQgKzI4NiwxNCBA
QCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpvbk5hdmlnYXRlKCkKICAgICAgICAgRGVidWdn
ZXJBZ2VudE1hbmFnZXI6OnNlbmRDb250aW51ZUNvbW1hbmRUb1Y4KCk7CiB9CiAKLXZvaWQgRGVi
dWdnZXJBZ2VudE1hbmFnZXI6OnNlbmRDb21tYW5kVG9WOChjb25zdCBTdHJpbmcmIGNtZCwgdjg6
OkRlYnVnOjpDbGllbnREYXRhKiBkYXRhKQordm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2Vu
ZENvbW1hbmRUb1Y4KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgY21kLCB2ODo6RGVidWc6OkNsaWVu
dERhdGEqIGRhdGEpCiB7CiAgICAgdjg6OkRlYnVnOjpTZW5kQ29tbWFuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oY21kLmNoYXJhY3RlcnMoKSksIGNtZC5sZW5ndGgoKSwgZGF0
YSk7CiB9CiAKIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNlbmRDb250aW51ZUNvbW1hbmRU
b1Y4KCkKIHsKLSAgICBTdHJpbmcgY29udGludWVDbWQoIntcInNlcVwiOjEsXCJ0eXBlXCI6XCJy
ZXF1ZXN0XCIsXCJjb21tYW5kXCI6XCJjb250aW51ZVwifSIpOworICAgIFdlYkNvcmU6OlN0cmlu
ZyBjb250aW51ZUNtZCgie1wic2VxXCI6MSxcInR5cGVcIjpcInJlcXVlc3RcIixcImNvbW1hbmRc
IjpcImNvbnRpbnVlXCJ9Iik7CiAgICAgc2VuZENvbW1hbmRUb1Y4KGNvbnRpbnVlQ21kLCBuZXcg
Q2FsbGVySWRXcmFwcGVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwCmluZGV4IDFhNjViZmUuLmNiNmE0YjggMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCi0jaW5jbHVkZSAiUHJvZmlsZXJBZ2VudEltcGwuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgpAQCAtNjAsNyArNTksNiBAQAogI2luY2x1ZGUgIldlYkRhdGFTb3Vy
Y2UuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
RGV2VG9vbHNNZXNzYWdlRGF0YS5oIgotI2luY2x1ZGUgIldlYkRldlRvb2xzTWVzc2FnZVRyYW5z
cG9ydC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIK
ICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKQEAgLTEwOSwyMSArMTA3LDYgQEAgc3RhdGljIGNvbnN0
IGNoYXIga1Jlc291cmNlVHJhY2tpbmdGZWF0dXJlTmFtZVtdID0gInJlc291cmNlLXRyYWNraW5n
IjsKIHN0YXRpYyBjb25zdCBjaGFyIGtUaW1lbGluZUZlYXR1cmVOYW1lW10gPSAidGltZWxpbmUt
cHJvZmlsZXIiOwogc3RhdGljIGNvbnN0IGNoYXIga0FwdUFnZW50RmVhdHVyZU5hbWVbXSA9ICJh
cHUtYWdlbnQiOwogCi1jbGFzcyBJT1JQQ0RlbGVnYXRlIDogcHVibGljIERldlRvb2xzUlBDOjpE
ZWxlZ2F0ZSwgcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBJT1JQQ0RlbGVnYXRl
KCkgOiBtX3RyYW5zcG9ydCgwKSB7IH0KLSAgICBleHBsaWNpdCBJT1JQQ0RlbGVnYXRlKFdlYkRl
dlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogdHJhbnNwb3J0KSA6IG1fdHJhbnNwb3J0KHRyYW5zcG9y
dCkgeyB9Ci0gICAgdmlydHVhbCB+SU9SUENEZWxlZ2F0ZSgpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZW5kUnBjTWVzc2FnZShjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQotICAg
IHsKLSAgICAgICAgaWYgKG1fdHJhbnNwb3J0KQotICAgICAgICAgICAgbV90cmFuc3BvcnQtPnNl
bmRNZXNzYWdlVG9Gcm9udGVuZE9uSU9UaHJlYWQoZGF0YSk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIFdlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogbV90cmFuc3BvcnQ7Ci19OwotCiBjbGFz
cyBDbGllbnRNZXNzYWdlTG9vcEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBlbnN1
cmVDbGllbnRNZXNzYWdlTG9vcENyZWF0ZWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCogY2xpZW50
KQpAQCAtMjIyLDkgKzIwNSw3IEBAIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpXZWJEZXZUb29sc0Fn
ZW50SW1wbCgKIHsKICAgICBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2V0RXhwb3NlVjhEZWJ1Z2dl
clByb3RvY29sKAogICAgICAgICBjbGllbnQtPmV4cG9zZVY4RGVidWdnZXJQcm90b2NvbCgpKTsK
LSAgICBtX2RlYnVnZ2VyQWdlbnREZWxlZ2F0ZVN0dWIuc2V0KG5ldyBEZWJ1Z2dlckFnZW50RGVs
ZWdhdGVTdHViKHRoaXMpKTsKICAgICBtX3Rvb2xzQWdlbnREZWxlZ2F0ZVN0dWIuc2V0KG5ldyBU
b29sc0FnZW50RGVsZWdhdGVTdHViKHRoaXMpKTsKLSAgICBtX2FwdUFnZW50RGVsZWdhdGVTdHVi
LnNldChuZXcgQXB1QWdlbnREZWxlZ2F0ZVN0dWIodGhpcykpOwogfQogCiBXZWJEZXZUb29sc0Fn
ZW50SW1wbDo6fldlYkRldlRvb2xzQWdlbnRJbXBsKCkKQEAgLTI1Miw4ICsyMzMsOCBAQCB2b2lk
IFdlYkRldlRvb2xzQWdlbnRJbXBsOjphdHRhY2goKQogCiAgICAgbV9kZWJ1Z2dlckFnZW50SW1w
bC5zZXQoCiAgICAgICAgIG5ldyBEZWJ1Z2dlckFnZW50SW1wbChtX3dlYlZpZXdJbXBsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLmdl
dCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Y2xpZW50KSk7CiAgICAgY3JlYXRlSW5zcGVjdG9yRnJvbnRlbmRQcm94eSgpOwogCiAgICAgLy8g
QWxsb3cgY29udHJvbGxlciB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBmcm9udGVuZC4KQEAgLTI5
NiwxMCArMjc3LDYgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkTmF2aWdhdGUoKQog
dm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QoV2ViRnJhbWVJ
bXBsKiB3ZWJmcmFtZSkKIHsKICAgICBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2V0SG9zdElkKHdl
YmZyYW1lLCBtX2hvc3RJZCk7Ci0gICAgaWYgKG1fYXR0YWNoZWQpIHsKLSAgICAgICAgLy8gUHVz
aCBjb250ZXh0IGlkIGludG8gdGhlIGNsaWVudCBpZiBpdCBpcyBhbHJlYWR5IGF0dGFjaGVkLgot
ICAgICAgICBtX2RlYnVnZ2VyQWdlbnREZWxlZ2F0ZVN0dWItPnNldENvbnRleHRJZChtX2hvc3RJ
ZCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpmb3JjZVJlcGFpbnQo
KQpAQCAtMzE0LDE0ICsyOTEsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRj
aE9uSW5zcGVjdG9yQ29udHJvbGxlcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgV2Vi
RGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQogewotICAgIGlmIChUb29sc0FnZW50RGlzcGF0Y2g6
OmRpc3BhdGNoKHRoaXMsIGRhdGEpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fYXR0
YWNoZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2RlYnVnZ2VyQWdlbnRJbXBsLmdl
dCgpICYmIERlYnVnZ2VyQWdlbnREaXNwYXRjaDo6ZGlzcGF0Y2gobV9kZWJ1Z2dlckFnZW50SW1w
bC5nZXQoKSwgZGF0YSkpCi0gICAgICAgIHJldHVybjsKKyAgICBUb29sc0FnZW50RGlzcGF0Y2g6
OmRpc3BhdGNoKHRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpp
bnNwZWN0RWxlbWVudEF0KGNvbnN0IFdlYlBvaW50JiBwb2ludCkKQEAgLTQzNiwxMCArNDA2LDEw
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJEZXZUb29sc0FnZW50SW1wbDo6anNEaXNwYXRj
aE9uQ2xpZW50KGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgaWYgKG1ldGhvZC5pc0VtcHR5KCkgfHwg
ZXhjZXB0aW9uQ2F0Y2hlci5IYXNDYXVnaHQoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIAotICAgIGlmIChtZXRob2QgIT0gImFkZFJlY29yZFRvVGltZWxpbmUiICYmIG1ldGhv
ZCAhPSAidXBkYXRlUmVzb3VyY2UiICYmIG1ldGhvZCAhPSAiYWRkUmVzb3VyY2UiKQorICAgIGlm
IChtZXRob2QgIT0gInVwZGF0ZVJlc291cmNlIiAmJiBtZXRob2QgIT0gImFkZFJlc291cmNlIikK
ICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIGFnZW50LT5tX2FwdUFnZW50
RGVsZWdhdGVTdHViLT5kaXNwYXRjaFRvQXB1KG1lc3NhZ2UpOworICAgIGFnZW50LT5tX2NsaWVu
dC0+c2VuZERpc3BhdGNoVG9BUFUobWVzc2FnZSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIH0KIApAQCAtNTQyLDkgKzUxMiw5IEBAIGJvb2wgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
V2ViRGV2VG9vbHNBZ2VudEltcGwqIGRldlRvb2xzQWdlbnQgPSBzdGF0aWNfY2FzdDxXZWJEZXZU
b29sc0FnZW50SW1wbCo+KG1fd2ViVmlld0ltcGwtPmRldlRvb2xzQWdlbnQoKSk7CiAgICAgaWYg
KCFkZXZUb29sc0FnZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZGV2VG9v
bHNBZ2VudC0+bV9hcHVBZ2VudEVuYWJsZWQgJiYgZGV2VG9vbHNBZ2VudC0+bV9hcHVBZ2VudERl
bGVnYXRlU3R1YikgewotICAgICAgICBkZXZUb29sc0FnZW50LT5tX2FwdUFnZW50RGVsZWdhdGVT
dHViLT5kaXNwYXRjaFRvQXB1KG1lc3NhZ2UpOworDQorICAgIGlmIChkZXZUb29sc0FnZW50LT5t
X2FwdUFnZW50RW5hYmxlZCkgew0KKyAgICAgICAgbV9jbGllbnQtPnNlbmREaXNwYXRjaFRvQVBV
KG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTYwOCwxMiArNTc4
LDQgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50OjpzZXRNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxl
cihNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcgogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpz
ZXRNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcihoYW5kbGVyKTsKIH0KIAotYm9vbCBXZWJEZXZU
b29sc0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKFdlYkRldlRv
b2xzTWVzc2FnZVRyYW5zcG9ydCogdHJhbnNwb3J0LCBjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VE
YXRhJiBkYXRhKQotewotICAgIElPUlBDRGVsZWdhdGUgZGVsZWdhdGUodHJhbnNwb3J0KTsKLSAg
ICBQcm9maWxlckFnZW50RGVsZWdhdGVTdHViIHN0dWIoJmRlbGVnYXRlKTsKLSAgICBQcm9maWxl
ckFnZW50SW1wbCBhZ2VudCgmc3R1Yik7Ci0gICAgcmV0dXJuIFByb2ZpbGVyQWdlbnREaXNwYXRj
aDo6ZGlzcGF0Y2goJmFnZW50LCBkYXRhKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggYzhlMjJiMC4u
OWU0MmQ5MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApA
QCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAKLSNpbmNs
dWRlICJBUFVBZ2VudERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIKICNpbmNs
dWRlICJUb29sc0FnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIK
QEAgLTEzMCwxMCArMTI5LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9ob3N0SWQ7CiAgICAgV2Vi
RGV2VG9vbHNBZ2VudENsaWVudCogbV9jbGllbnQ7CiAgICAgV2ViVmlld0ltcGwqIG1fd2ViVmll
d0ltcGw7Ci0gICAgT3duUHRyPERlYnVnZ2VyQWdlbnREZWxlZ2F0ZVN0dWI+IG1fZGVidWdnZXJB
Z2VudERlbGVnYXRlU3R1YjsKICAgICBPd25QdHI8VG9vbHNBZ2VudERlbGVnYXRlU3R1Yj4gbV90
b29sc0FnZW50RGVsZWdhdGVTdHViOwogICAgIE93blB0cjxEZWJ1Z2dlckFnZW50SW1wbD4gbV9k
ZWJ1Z2dlckFnZW50SW1wbDsKLSAgICBPd25QdHI8QXB1QWdlbnREZWxlZ2F0ZVN0dWI+IG1fYXB1
QWdlbnREZWxlZ2F0ZVN0dWI7CiAgICAgYm9vbCBtX2FwdUFnZW50RW5hYmxlZDsKICAgICBib29s
IG1fcmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQ7CiAgICAgYm9vbCBtX2F0dGFjaGVkOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcAppbmRleCA1
OTJhNTMyLi44YTM2NDVlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzRnJvbnRlbmRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
RnJvbnRlbmRJbXBsLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJEZXZUb29s
c1JQQ0pTLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAt
NzgsNyArNzcsNiBAQCBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IFRvVjhTdHJpbmcoY29u
c3QgU3RyaW5nJiBzKQogICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MTZfdCo+KHMuY2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSk7CiB9CiAKLURF
RklORV9SUENfSlNfQk9VTkRfT0JKKERlYnVnZ2VyQWdlbnQsIERFQlVHR0VSX0FHRU5UX1NUUlVD
VCwgRGVidWdnZXJBZ2VudERlbGVnYXRlLCBERUJVR0dFUl9BR0VOVF9ERUxFR0FURV9TVFJVQ1Qp
CiBERUZJTkVfUlBDX0pTX0JPVU5EX09CSihQcm9maWxlckFnZW50LCBQUk9GSUxFUl9BR0VOVF9T
VFJVQ1QsIFByb2ZpbGVyQWdlbnREZWxlZ2F0ZSwgUFJPRklMRVJfQUdFTlRfREVMRUdBVEVfU1RS
VUNUKQogREVGSU5FX1JQQ19KU19CT1VORF9PQkooVG9vbHNBZ2VudCwgVE9PTFNfQUdFTlRfU1RS
VUNULCBUb29sc0FnZW50RGVsZWdhdGUsIFRPT0xTX0FHRU5UX0RFTEVHQVRFX1NUUlVDVCkKIApA
QCAtMTEzLDcgKzExMSw2IEBAIFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpXZWJEZXZUb29sc0Zy
b250ZW5kSW1wbCgKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gZnJhbWVDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZS0+ZnJhbWUo
KSk7CiAKLSAgICBtX2RlYnVnZ2VyQWdlbnRPYmouc2V0KG5ldyBKU0RlYnVnZ2VyQWdlbnRCb3Vu
ZE9iaih0aGlzLCBmcmFtZUNvbnRleHQsICJSZW1vdGVEZWJ1Z2dlckFnZW50IikpOwogICAgIG1f
cHJvZmlsZXJBZ2VudE9iai5zZXQobmV3IEpTUHJvZmlsZXJBZ2VudEJvdW5kT2JqKHRoaXMsIGZy
YW1lQ29udGV4dCwgIlJlbW90ZVByb2ZpbGVyQWdlbnQiKSk7CiAgICAgbV90b29sc0FnZW50T2Jq
LnNldChuZXcgSlNUb29sc0FnZW50Qm91bmRPYmoodGhpcywgZnJhbWVDb250ZXh0LCAiUmVtb3Rl
VG9vbHNBZ2VudCIpKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZU
b29sc0Zyb250ZW5kSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250
ZW5kSW1wbC5oCmluZGV4IGZhNDcwN2QuLjcxNmY0ZjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgY2xhc3MgU3Ry
aW5nOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgSlNEZWJ1Z2dlckFnZW50Qm91bmRP
Ymo7CiBjbGFzcyBKU1Byb2ZpbGVyQWdlbnRCb3VuZE9iajsKIGNsYXNzIEpTVG9vbHNBZ2VudEJv
dW5kT2JqOwogY2xhc3MgV2ViRGV2VG9vbHNDbGllbnREZWxlZ2F0ZTsKQEAgLTgzLDcgKzgyLDYg
QEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOwogICAg
IFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5n
IG1fYXBwbGljYXRpb25Mb2NhbGU7Ci0gICAgT3duUHRyPEpTRGVidWdnZXJBZ2VudEJvdW5kT2Jq
PiBtX2RlYnVnZ2VyQWdlbnRPYmo7CiAgICAgT3duUHRyPEpTUHJvZmlsZXJBZ2VudEJvdW5kT2Jq
PiBtX3Byb2ZpbGVyQWdlbnRPYmo7CiAgICAgT3duUHRyPEpTVG9vbHNBZ2VudEJvdW5kT2JqPiBt
X3Rvb2xzQWdlbnRPYmo7CiAgICAgYm9vbCBtX2xvYWRlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63200</attachid>
            <date>2010-08-02 05:39:10 -0700</date>
            <delta_ts>2010-08-02 05:47:43 -0700</delta_ts>
            <desc>[PATCH] Proposed change with fixed style.</desc>
            <filename>removed_agents</filename>
            <type>text/plain</type>
            <size>25388</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGEzODk1MjUuLjc2MTBlNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDEwLTA4LTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9t
aXVtIERldlRvb2xzOiBHZXQgcmlkIG9mIEFQVUFnZW50IGFuZCBEZWJ1Z2dlckFnZW50LgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzMzNQorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
OgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREZWJ1Z2dlck91dHB1
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREaXNwYXRj
aFRvQVBVKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0Lmg6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL0FQVUFnZW50RGVsZWdhdGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9EZWJ1
Z2dlckFnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRJbXBsOjpk
ZWJ1Z2dlck91dHB1dCk6CisgICAgICAgICogc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGVi
dWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6RGVidWdn
ZXJBZ2VudE1hbmFnZXI6Om9uVjhEZWJ1Z01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29tbWFuZFRvVjgpOgorICAgICAgICAoV2Vi
S2l0OjpEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRvVjgpOgorICAg
ICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzQWdlbnRJbXBsOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50SW1wbDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJE
ZXZUb29sc0FnZW50SW1wbDo6anNEaXNwYXRjaE9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDct
MjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAwMTM4NTU0Li42
ODdkMTVjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTQzLDcgKzE0Myw2IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
ZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
b2N1bWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLApAQCAtMjcxLDcgKzI3MCw2
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCi0gICAgICAg
ICAgICAgICAgJ3NyYy9BUFVBZ2VudERlbGVnYXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcCcsCkBAIC0yOTIsNyArMjkwLDYgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGF0YWJhc2VPYnNlcnZl
ci5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9EZWJ1Z2dlckFnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdl
bnRNYW5hZ2VyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dlRvb2xzQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
CmluZGV4IDBlMjZjYzkuLjY1NDM4M2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2VG9vbHNBZ2VudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2
VG9vbHNBZ2VudC5oCkBAIC03Miw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBBc3luY2hyb25v
dXNseSByZXF1ZXN0IGRlYnVnZ2VyIHRvIHBhdXNlIGltbWVkaWF0ZWx5LgogICAgIFdFQktJVF9B
UEkgc3RhdGljIHZvaWQgZGVidWdnZXJQYXVzZVNjcmlwdCgpOwogCi0gICAgV0VCS0lUX0FQSSBz
dGF0aWMgYm9vbCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKFdlYkRldlRv
b2xzTWVzc2FnZVRyYW5zcG9ydCosIGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKTsKLQog
ICAgIHR5cGVkZWYgdm9pZCAoKk1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKSgpOwogCiAgICAg
Ly8gSW5zdGFsbHMgZGlzcGF0Y2ggaGFuZGxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHBl
cmlvZGljYWxseQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29s
c0FnZW50Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRD
bGllbnQuaAppbmRleCA5MWZkM2U4Li43ZmIwNDYyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNDAsNyArNDAsOSBAQCBzdHJ1Y3Qg
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudCB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBX
ZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9DQorICAgIHZpcnR1
YWwgdm9pZCBzZW5kRGVidWdnZXJPdXRwdXQoY29uc3QgV2ViU3RyaW5nJikgeyB9DQorICAgIHZp
cnR1YWwgdm9pZCBzZW5kRGlzcGF0Y2hUb0FQVShjb25zdCBXZWJTdHJpbmcmKSB7IH0KIAogICAg
IC8vIEludmFsaWRhdGVzIHdpZGdldCB3aGljaCBsZWFkcyB0byB0aGUgcmVwYWludC4KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTRjMDdmMS4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLSNkZWZpbmUgV2ViRGV2
VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLQotI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKLSNpbmNs
dWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2ViRGV2VG9v
bHNNZXNzYWdlRGF0YTsKLQotY2xhc3MgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kT25JT1RocmVhZChjb25zdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhJikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9BUFVBZ2VudERlbGVnYXRl
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0FQVUFnZW50RGVsZWdhdGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzBiZTcwMi4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0FQVUFnZW50RGVsZWdhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEFQVUFnZW50RGVsZWdhdGVfaAotI2RlZmluZSBBUFVBZ2VudERlbGVnYXRlX2gKLQotI2lu
Y2x1ZGUgIkRldlRvb2xzUlBDLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jZGVmaW5lIEFQ
VV9BR0VOVF9ERUxFR0FURV9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwgTUVUSE9E
MywgTUVIVE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFNlbmRzIGEganNvbiBvYmplY3QgdG8gYXB1
LiAqLyBcCi0gICAgTUVUSE9EMShkaXNwYXRjaFRvQXB1LCBTdHJpbmcgLyogZGF0YSAqLykKLQot
REVGSU5FX1JQQ19DTEFTUyhBcHVBZ2VudERlbGVnYXRlLCBBUFVfQUdFTlRfREVMRUdBVEVfU1RS
VUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVi
dWdnZXJBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2NkZTExLi4wMDAw
MDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGVidWdnZXJBZ2VudF9oCi0jZGVmaW5lIERlYnVn
Z2VyQWdlbnRfaAotCi0jaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1F
VEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBSZXF1ZXN0cyBnbG9i
YWwgY29udGV4dCBpZCBvZiB0aGUgaW5zcGVjdGVkIHRhYi4gKi8gXAotICAgIE1FVEhPRDAoZ2V0
Q29udGV4dElkKSBcCi0gICAgXAotICAgIC8qIFJlcXVlc3QgdjggdG8gcHJvY2VzcyBhbGwgZGVi
dWcgY29tbWFuZHMgaW4gdGhlIHF1ZXVlLiAqLyBcCi0gICAgTUVUSE9EMChwcm9jZXNzRGVidWdD
b21tYW5kcykKLQotREVGSU5FX1JQQ19DTEFTUyhEZWJ1Z2dlckFnZW50LCBERUJVR0dFUl9BR0VO
VF9TVFJVQ1QpCi0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfREVMRUdBVEVfU1RSVUNUKE1FVEhP
RDAsIE1FVEhPRDEsIE1FVEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICBN
RVRIT0QxKGRlYnVnZ2VyT3V0cHV0LCBTdHJpbmcgLyogb3V0cHV0IHRleHQgKi8pIFwKLSAgICBc
Ci0gICAgLyogUHVzaGVzIGRlYnVnZ2VyIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50LiAqLyBc
Ci0gICAgTUVUSE9EMShzZXRDb250ZXh0SWQsIGludCAvKiBjb250ZXh0IGlkICovKQotCi1ERUZJ
TkVfUlBDX0NMQVNTKERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSwgREVCVUdHRVJfQUdFTlRfREVMRUdB
VEVfU1RSVUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCmluZGV4IGRkZTllMWQuLjRkYzQwYTggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViVmlld0lt
cGwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTMsMTEgKzU0LDExIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBEZWJ1Z2dlckFnZW50SW1wbDo6RGVidWdnZXJBZ2VudEltcGwoCiAg
ICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLAotICAgIERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSog
ZGVsZWdhdGUsCi0gICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQpCisg
ICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsCisgICAgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCogd2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICA6IG1fd2ViVmlld0lt
cGwod2ViVmlld0ltcGwpCi0gICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICwgbV93ZWJk
ZXZ0b29sc0FnZW50KHdlYmRldnRvb2xzQWdlbnQpCisgICAgLCBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQod2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICAsIG1fYXV0b0NvbnRpbnVlT25FeGNl
cHRpb24oZmFsc2UpCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnQXR0YWNoKHRo
aXMpOwpAQCAtNjgsMjAgKzY5LDkgQEAgRGVidWdnZXJBZ2VudEltcGw6On5EZWJ1Z2dlckFnZW50
SW1wbCgpCiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKHRoaXMpOwogfQog
Ci12b2lkIERlYnVnZ2VyQWdlbnRJbXBsOjpnZXRDb250ZXh0SWQoKQotewotICAgIG1fZGVsZWdh
dGUtPnNldENvbnRleHRJZChtX3dlYmRldnRvb2xzQWdlbnQtPmhvc3RJZCgpKTsKLX0KLQotdm9p
ZCBEZWJ1Z2dlckFnZW50SW1wbDo6cHJvY2Vzc0RlYnVnQ29tbWFuZHMoKQotewotICAgIERlYnVn
Z2VyQWdlbnRNYW5hZ2VyOjpVdGlsaXR5Q29udGV4dFNjb3BlIHV0aWxpdHlTY29wZTsKLSAgICB2
ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7Ci19Ci0KIHZvaWQgRGVidWdnZXJBZ2Vu
dEltcGw6OmRlYnVnZ2VyT3V0cHV0KGNvbnN0IFN0cmluZyYgY29tbWFuZCkKIHsKLSAgICBtX2Rl
bGVnYXRlLT5kZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKKyAgICBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQtPnNlbmREZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKICAgICBtX3dlYmRldnRvb2xzQWdl
bnQtPmZvcmNlUmVwYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RlYnVnZ2VyQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJ
bXBsLmgKaW5kZXggMGU2ZTZhZi4uZDhiMTNmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdn
ZXJBZ2VudEltcGwuaApAQCAtMzEsOCArMzEsNiBAQAogI2lmbmRlZiBEZWJ1Z2dlckFnZW50SW1w
bF9oCiAjZGVmaW5lIERlYnVnZ2VyQWdlbnRJbXBsX2gKIAotI2luY2x1ZGUgIkRlYnVnZ2VyQWdl
bnQuaCIKLQogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQ3LDIwICs0NSwxNyBAQCBjbGFzcyBTdHJpbmc7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50Owog
Y2xhc3MgV2ViRGV2VG9vbHNBZ2VudEltcGw7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAotY2xhc3Mg
RGVidWdnZXJBZ2VudEltcGwgOiBwdWJsaWMgRGVidWdnZXJBZ2VudCB7CitjbGFzcyBEZWJ1Z2dl
ckFnZW50SW1wbCB7CiBwdWJsaWM6CiAgICAgRGVidWdnZXJBZ2VudEltcGwoV2ViS2l0OjpXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgRGVidWdnZXJBZ2Vu
dERlbGVnYXRlKiBkZWxlZ2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBXZWJEZXZUb29sc0Fn
ZW50SW1wbCogd2ViZGV2dG9vbHNBZ2VudCk7CisgICAgICAgICAgICAgICAgICAgICAgV2ViRGV2
VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsCisgICAgICAgICAgICAgICAgICAgICAg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogd2ViZGV2dG9vbHNBZ2VudENsaWVudCk7CiAgICAgdmly
dHVhbCB+RGVidWdnZXJBZ2VudEltcGwoKTsKIAotICAgIC8vIERlYnVnZ2VyQWdlbnQgaW1wbGVt
ZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGdldENvbnRleHRJZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzRGVidWdDb21tYW5kcygpOwotCiAgICAgdm9pZCBkZWJ1Z2dlck91dHB1dChj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIG91dCk7CiAKICAgICB2b2lkIHNldEF1dG9Db250aW51ZU9u
RXhjZXB0aW9uKGJvb2wgYXV0b0NvbnRpbnVlKSB7IG1fYXV0b0NvbnRpbnVlT25FeGNlcHRpb24g
PSBhdXRvQ29udGludWU7IH0KQEAgLTg3LDggKzgyLDggQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7Ci0gICAgRGVidWdnZXJBZ2Vu
dERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBtX3dlYmRl
dnRvb2xzQWdlbnQ7CisgICAgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogbV93ZWJkZXZ0b29sc0Fn
ZW50Q2xpZW50OwogICAgIGJvb2wgbV9hdXRvQ29udGludWVPbkV4Y2VwdGlvbjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAKaW5kZXggMWNjNjc0
MC4uMjNhMDQxYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50
TWFuYWdlci5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdl
ci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpkZWJ1
Z0RldGFjaChEZWJ1Z2dlckFnZW50SW1wbCogZGVidWdnZXJBZ2VudCkKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAvLyBSZW1vdmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdl
bnQuCi0gICAgICBTdHJpbmcgY2xlYXJCcmVha3BvaW50R3JvdXBDbWQgPSBTdHJpbmc6OmZvcm1h
dCgKKyAgICAgIFdlYkNvcmU6OlN0cmluZyBjbGVhckJyZWFrcG9pbnRHcm91cENtZCA9IFN0cmlu
Zzo6Zm9ybWF0KAogICAgICAgICAgICJ7XCJzZXFcIjoxLFwidHlwZVwiOlwicmVxdWVzdFwiLFwi
Y29tbWFuZFwiOlwiY2xlYXJicmVha3BvaW50Z3JvdXBcIiwiCiAgICAgICAgICAgICAgICJcImFy
Z3VtZW50c1wiOntcImdyb3VwSWRcIjolZH19IiwKICAgICAgICAgICBob3N0SWQpOwpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6Om9uVjhEZWJ1Z01lc3NhZ2Uo
Y29uc3Qgdjg6OkRlYnVnOjpNZXNzYWdlJiBtZXNzYWdlKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKICAgICB2ODo6U3RyaW5nOjpWYWx1ZSB2YWx1ZShtZXNzYWdlLkdldEpTT04oKSk7
Ci0gICAgU3RyaW5nIG91dChyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oKnZhbHVlKSwg
dmFsdWUubGVuZ3RoKCkpOworICAgIFdlYkNvcmU6OlN0cmluZyBvdXQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KCp2YWx1ZSksIHZhbHVlLmxlbmd0aCgpKTsKIAogICAgIC8vIElmIGNh
bGxlckRhdGEgaXMgbm90IDAgdGhlIG1lc3NhZ2UgaXMgYSByZXNwb25zZSB0byBhIGRlYnVnZ2Vy
IGNvbW1hbmQuCiAgICAgaWYgKHY4OjpEZWJ1Zzo6Q2xpZW50RGF0YSogY2FsbGVyRGF0YSA9IG1l
c3NhZ2UuR2V0Q2xpZW50RGF0YSgpKSB7CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6cGF1c2VTY3JpcHQoKQogICAgICAgICB2ODo6RGVidWc6OkRlYnVnQnJl
YWsoKTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGludCBjYWxsZXJJZCkKK3ZvaWQgRGVidWdnZXJB
Z2VudE1hbmFnZXI6OmV4ZWN1dGVEZWJ1Z2dlckNvbW1hbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBjb21tYW5kLCBpbnQgY2FsbGVySWQpCiB7CiAgICAgc2VuZENvbW1hbmRUb1Y4KGNvbW1hbmQs
IG5ldyBDYWxsZXJJZFdyYXBwZXIoY2FsbGVySWQpKTsKIH0KQEAgLTI4NiwxNCArMjg2LDE0IEBA
IHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6Om9uTmF2aWdhdGUoKQogICAgICAgICBEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRvVjgoKTsKIH0KIAotdm9pZCBEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbW1hbmRUb1Y4KGNvbnN0IFN0cmluZyYgY21kLCB2ODo6
RGVidWc6OkNsaWVudERhdGEqIGRhdGEpCit2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5k
Q29tbWFuZFRvVjgoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBjbWQsIHY4OjpEZWJ1Zzo6Q2xpZW50
RGF0YSogZGF0YSkKIHsKICAgICB2ODo6RGVidWc6OlNlbmRDb21tYW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDE2X3QqPihjbWQuY2hhcmFjdGVycygpKSwgY21kLmxlbmd0aCgpLCBkYXRh
KTsKIH0KIAogdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRv
VjgoKQogewotICAgIFN0cmluZyBjb250aW51ZUNtZCgie1wic2VxXCI6MSxcInR5cGVcIjpcInJl
cXVlc3RcIixcImNvbW1hbmRcIjpcImNvbnRpbnVlXCJ9Iik7CisgICAgV2ViQ29yZTo6U3RyaW5n
IGNvbnRpbnVlQ21kKCJ7XCJzZXFcIjoxLFwidHlwZVwiOlwicmVxdWVzdFwiLFwiY29tbWFuZFwi
OlwiY29udGludWVcIn0iKTsKICAgICBzZW5kQ29tbWFuZFRvVjgoY29udGludWVDbWQsIG5ldyBD
YWxsZXJJZFdyYXBwZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAKaW5kZXggMWE2NWJmZS4uYTYxMWUwYSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNs
dWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzTWVzc2FnZURhdGEuaCIKLSNpbmNsdWRlICJXZWJEZXZU
b29sc01lc3NhZ2VUcmFuc3BvcnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNs
dWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC0xMDksMjEgKzEwOCw2
IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtSZXNvdXJjZVRyYWNraW5nRmVhdHVyZU5hbWVbXSA9ICJy
ZXNvdXJjZS10cmFja2luZyI7CiBzdGF0aWMgY29uc3QgY2hhciBrVGltZWxpbmVGZWF0dXJlTmFt
ZVtdID0gInRpbWVsaW5lLXByb2ZpbGVyIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBcHVBZ2VudEZl
YXR1cmVOYW1lW10gPSAiYXB1LWFnZW50IjsKIAotY2xhc3MgSU9SUENEZWxlZ2F0ZSA6IHB1Ymxp
YyBEZXZUb29sc1JQQzo6RGVsZWdhdGUsIHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0g
ICAgSU9SUENEZWxlZ2F0ZSgpIDogbV90cmFuc3BvcnQoMCkgeyB9Ci0gICAgZXhwbGljaXQgSU9S
UENEZWxlZ2F0ZShXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIHRyYW5zcG9ydCkgOiBtX3Ry
YW5zcG9ydCh0cmFuc3BvcnQpIHsgfQotICAgIHZpcnR1YWwgfklPUlBDRGVsZWdhdGUoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2VuZFJwY01lc3NhZ2UoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdl
RGF0YSYgZGF0YSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3RyYW5zcG9ydCkKLSAgICAgICAgICAg
IG1fdHJhbnNwb3J0LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkKGRhdGEpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIG1fdHJhbnNw
b3J0OwotfTsKLQogY2xhc3MgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyIDogcHVibGljIFdlYkNv
cmU6OlNjcmlwdERlYnVnU2VydmVyOjpDbGllbnRNZXNzYWdlTG9vcCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKFdlYkRldlRvb2xzQWdl
bnRDbGllbnQqIGNsaWVudCkKQEAgLTIyMiw5ICsyMDYsOCBAQCBXZWJEZXZUb29sc0FnZW50SW1w
bDo6V2ViRGV2VG9vbHNBZ2VudEltcGwoCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNl
dEV4cG9zZVY4RGVidWdnZXJQcm90b2NvbCgKICAgICAgICAgY2xpZW50LT5leHBvc2VWOERlYnVn
Z2VyUHJvdG9jb2woKSk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLnNldChuZXcg
RGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7CiAgICAgbV90b29sc0FnZW50RGVsZWdh
dGVTdHViLnNldChuZXcgVG9vbHNBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7Ci0gICAgbV9hcHVB
Z2VudERlbGVnYXRlU3R1Yi5zZXQobmV3IEFwdUFnZW50RGVsZWdhdGVTdHViKHRoaXMpKTsKKyAg
ICBtX3Byb2ZpbGVyQWdlbnREZWxlZ2F0ZVN0dWIuc2V0KG5ldyBQcm9maWxlckFnZW50RGVsZWdh
dGVTdHViKHRoaXMpKTsKIH0KIAogV2ViRGV2VG9vbHNBZ2VudEltcGw6On5XZWJEZXZUb29sc0Fn
ZW50SW1wbCgpCkBAIC0yNTEsOSArMjM0LDggQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
YXR0YWNoKCkKICAgICAgICAgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyOjplbnN1cmVDbGllbnRN
ZXNzYWdlTG9vcENyZWF0ZWQobV9jbGllbnQpOwogCiAgICAgbV9kZWJ1Z2dlckFnZW50SW1wbC5z
ZXQoCi0gICAgICAgIG5ldyBEZWJ1Z2dlckFnZW50SW1wbChtX3dlYlZpZXdJbXBsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLmdldCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICBuZXcgRGVi
dWdnZXJBZ2VudEltcGwobV93ZWJWaWV3SW1wbCwgdGhpcywgbV9jbGllbnQpKTsKKyAgICBtX3By
b2ZpbGVyQWdlbnRJbXBsLnNldChuZXcgUHJvZmlsZXJBZ2VudEltcGwobV9wcm9maWxlckFnZW50
RGVsZWdhdGVTdHViLmdldCgpKSk7CiAgICAgY3JlYXRlSW5zcGVjdG9yRnJvbnRlbmRQcm94eSgp
OwogCiAgICAgLy8gQWxsb3cgY29udHJvbGxlciB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBmcm9u
dGVuZC4KQEAgLTI4Myw2ICsyNjUsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkZXRh
Y2goKQogICAgIGljLT5jbG9zZSgpOwogICAgIGRpc3Bvc2VVdGlsaXR5Q29udGV4dCgpOwogICAg
IG1fZGVidWdnZXJBZ2VudEltcGwuc2V0KDApOworICAgIG1fcHJvZmlsZXJBZ2VudEltcGwuc2V0
KDApOwogICAgIG1fYXR0YWNoZWQgPSBmYWxzZTsKICAgICBtX2FwdUFnZW50RW5hYmxlZCA9IGZh
bHNlOwogfQpAQCAtMjk2LDEwICsyNzksNiBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWROYXZpZ2F0ZSgpCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRDbGVhcldpbmRvd09i
amVjdChXZWJGcmFtZUltcGwqIHdlYmZyYW1lKQogewogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2Vy
OjpzZXRIb3N0SWQod2ViZnJhbWUsIG1faG9zdElkKTsKLSAgICBpZiAobV9hdHRhY2hlZCkgewot
ICAgICAgICAvLyBQdXNoIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50IGlmIGl0IGlzIGFscmVh
ZHkgYXR0YWNoZWQuCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yi0+c2V0Q29u
dGV4dElkKG1faG9zdElkKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6
OmZvcmNlUmVwYWludCgpCkBAIC0zMTQsMTQgKzI5Myw4IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2Vu
dEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIAogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250
ZW5kKGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmIGRhdGEpCiB7Ci0gICAgaWYgKFRvb2xz
QWdlbnREaXNwYXRjaDo6ZGlzcGF0Y2godGhpcywgZGF0YSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICghbV9hdHRhY2hlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZGVidWdn
ZXJBZ2VudEltcGwuZ2V0KCkgJiYgRGVidWdnZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaChtX2Rl
YnVnZ2VyQWdlbnRJbXBsLmdldCgpLCBkYXRhKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICgh
VG9vbHNBZ2VudERpc3BhdGNoOjpkaXNwYXRjaCh0aGlzLCBkYXRhKSkKKyAgICAgICAgUHJvZmls
ZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaChtX3Byb2ZpbGVyQWdlbnRJbXBsLmdldCgpLCBkYXRh
KTsKIH0KIAogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aW5zcGVjdEVsZW1lbnRBdChjb25z
dCBXZWJQb2ludCYgcG9pbnQpCkBAIC00MzYsMTAgKzQwOSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gV2ViRGV2VG9vbHNBZ2VudEltcGw6OmpzRGlzcGF0Y2hPbkNsaWVudChjb25zdCB2ODo6
QXJndW1lbgogICAgIGlmIChtZXRob2QuaXNFbXB0eSgpIHx8IGV4Y2VwdGlvbkNhdGNoZXIuSGFz
Q2F1Z2h0KCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBpZiAobWV0
aG9kICE9ICJhZGRSZWNvcmRUb1RpbWVsaW5lIiAmJiBtZXRob2QgIT0gInVwZGF0ZVJlc291cmNl
IiAmJiBtZXRob2QgIT0gImFkZFJlc291cmNlIikKKyAgICBpZiAobWV0aG9kICE9ICJ1cGRhdGVS
ZXNvdXJjZSIgJiYgbWV0aG9kICE9ICJhZGRSZXNvdXJjZSIpCiAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiAKLSAgICBhZ2VudC0+bV9hcHVBZ2VudERlbGVnYXRlU3R1Yi0+ZGlzcGF0
Y2hUb0FwdShtZXNzYWdlKTsKKyAgICBhZ2VudC0+bV9jbGllbnQtPnNlbmREaXNwYXRjaFRvQVBV
KG1lc3NhZ2UpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTU0Miw5ICs1
MTUsOSBAQCBib29sIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKQogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBs
KiBkZXZUb29sc0FnZW50ID0gc3RhdGljX2Nhc3Q8V2ViRGV2VG9vbHNBZ2VudEltcGwqPihtX3dl
YlZpZXdJbXBsLT5kZXZUb29sc0FnZW50KCkpOwogICAgIGlmICghZGV2VG9vbHNBZ2VudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGRldlRvb2xzQWdlbnQtPm1fYXB1QWdlbnRF
bmFibGVkICYmIGRldlRvb2xzQWdlbnQtPm1fYXB1QWdlbnREZWxlZ2F0ZVN0dWIpIHsKLSAgICAg
ICAgZGV2VG9vbHNBZ2VudC0+bV9hcHVBZ2VudERlbGVnYXRlU3R1Yi0+ZGlzcGF0Y2hUb0FwdSht
ZXNzYWdlKTsKKw0KKyAgICBpZiAoZGV2VG9vbHNBZ2VudC0+bV9hcHVBZ2VudEVuYWJsZWQpIHsN
CisgICAgICAgIG1fY2xpZW50LT5zZW5kRGlzcGF0Y2hUb0FQVShtZXNzYWdlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC02MDgsMTIgKzU4MSw0IEBAIHZvaWQgV2ViRGV2VG9v
bHNBZ2VudDo6c2V0TWVzc2FnZUxvb3BEaXNwYXRjaEhhbmRsZXIoTWVzc2FnZUxvb3BEaXNwYXRj
aEhhbmRsZXIKICAgICBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2V0TWVzc2FnZUxvb3BEaXNwYXRj
aEhhbmRsZXIoaGFuZGxlcik7CiB9CiAKLWJvb2wgV2ViRGV2VG9vbHNBZ2VudDo6ZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kT25JT1RocmVhZChXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQq
IHRyYW5zcG9ydCwgY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkKLXsKLSAgICBJ
T1JQQ0RlbGVnYXRlIGRlbGVnYXRlKHRyYW5zcG9ydCk7Ci0gICAgUHJvZmlsZXJBZ2VudERlbGVn
YXRlU3R1YiBzdHViKCZkZWxlZ2F0ZSk7Ci0gICAgUHJvZmlsZXJBZ2VudEltcGwgYWdlbnQoJnN0
dWIpOwotICAgIHJldHVybiBQcm9maWxlckFnZW50RGlzcGF0Y2g6OmRpc3BhdGNoKCZhZ2VudCwg
ZGF0YSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IGM4ZTIyYjAuLjI1NDdiNTggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogCi0jaW5jbHVkZSAiQVBVQWdlbnREZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkRldlRvb2xzUlBDLmgiCiAjaW5jbHVkZSAiVG9vbHNBZ2VudC5oIgog
I2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCkBAIC01Myw2ICs1Miw4IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViOwogY2xh
c3MgRGVidWdnZXJBZ2VudEltcGw7CitjbGFzcyBQcm9maWxlckFnZW50RGVsZWdhdGVTdHViOwor
Y2xhc3MgUHJvZmlsZXJBZ2VudEltcGw7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50Owog
Y2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJGcmFtZUltcGw7CkBAIC0xMzAsMTAgKzEzMSwxMCBA
QCBwcml2YXRlOgogICAgIGludCBtX2hvc3RJZDsKICAgICBXZWJEZXZUb29sc0FnZW50Q2xpZW50
KiBtX2NsaWVudDsKICAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKLSAgICBPd25QdHI8
RGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yj4gbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViOwog
ICAgIE93blB0cjxUb29sc0FnZW50RGVsZWdhdGVTdHViPiBtX3Rvb2xzQWdlbnREZWxlZ2F0ZVN0
dWI7CisgICAgT3duUHRyPFByb2ZpbGVyQWdlbnREZWxlZ2F0ZVN0dWI+IG1fcHJvZmlsZXJBZ2Vu
dERlbGVnYXRlU3R1YjsKICAgICBPd25QdHI8RGVidWdnZXJBZ2VudEltcGw+IG1fZGVidWdnZXJB
Z2VudEltcGw7Ci0gICAgT3duUHRyPEFwdUFnZW50RGVsZWdhdGVTdHViPiBtX2FwdUFnZW50RGVs
ZWdhdGVTdHViOworICAgIE93blB0cjxQcm9maWxlckFnZW50SW1wbD4gbV9wcm9maWxlckFnZW50
SW1wbDsKICAgICBib29sIG1fYXB1QWdlbnRFbmFibGVkOwogICAgIGJvb2wgbV9yZXNvdXJjZVRy
YWNraW5nV2FzRW5hYmxlZDsKICAgICBib29sIG1fYXR0YWNoZWQ7CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwCmluZGV4IDU5MmE1MzIuLjhhMzY0
NWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZElt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwu
Y3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0j
aW5jbHVkZSAiRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkRldlRvb2xzUlBDSlMuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC03OCw3ICs3Nyw2IEBA
IHN0YXRpYyB2ODo6TG9jYWw8djg6OlN0cmluZz4gVG9WOFN0cmluZyhjb25zdCBTdHJpbmcmIHMp
CiAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ldyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQx
Nl90Kj4ocy5jaGFyYWN0ZXJzKCkpLCBzLmxlbmd0aCgpKTsKIH0KIAotREVGSU5FX1JQQ19KU19C
T1VORF9PQkooRGVidWdnZXJBZ2VudCwgREVCVUdHRVJfQUdFTlRfU1RSVUNULCBEZWJ1Z2dlckFn
ZW50RGVsZWdhdGUsIERFQlVHR0VSX0FHRU5UX0RFTEVHQVRFX1NUUlVDVCkKIERFRklORV9SUENf
SlNfQk9VTkRfT0JKKFByb2ZpbGVyQWdlbnQsIFBST0ZJTEVSX0FHRU5UX1NUUlVDVCwgUHJvZmls
ZXJBZ2VudERlbGVnYXRlLCBQUk9GSUxFUl9BR0VOVF9ERUxFR0FURV9TVFJVQ1QpCiBERUZJTkVf
UlBDX0pTX0JPVU5EX09CSihUb29sc0FnZW50LCBUT09MU19BR0VOVF9TVFJVQ1QsIFRvb2xzQWdl
bnREZWxlZ2F0ZSwgVE9PTFNfQUdFTlRfREVMRUdBVEVfU1RSVUNUKQogCkBAIC0xMTMsNyArMTEx
LDYgQEAgV2ViRGV2VG9vbHNGcm9udGVuZEltcGw6OldlYkRldlRvb2xzRnJvbnRlbmRJbXBsKAog
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBm
cmFtZUNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lLT5mcmFtZSgpKTsKIAotICAgIG1f
ZGVidWdnZXJBZ2VudE9iai5zZXQobmV3IEpTRGVidWdnZXJBZ2VudEJvdW5kT2JqKHRoaXMsIGZy
YW1lQ29udGV4dCwgIlJlbW90ZURlYnVnZ2VyQWdlbnQiKSk7CiAgICAgbV9wcm9maWxlckFnZW50
T2JqLnNldChuZXcgSlNQcm9maWxlckFnZW50Qm91bmRPYmoodGhpcywgZnJhbWVDb250ZXh0LCAi
UmVtb3RlUHJvZmlsZXJBZ2VudCIpKTsKICAgICBtX3Rvb2xzQWdlbnRPYmouc2V0KG5ldyBKU1Rv
b2xzQWdlbnRCb3VuZE9iaih0aGlzLCBmcmFtZUNvbnRleHQsICJSZW1vdGVUb29sc0FnZW50Iikp
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJ
bXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmgKaW5k
ZXggZmE0NzA3ZC4uNzE2ZjRmNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0Zyb250ZW5kSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNGcm9udGVuZEltcGwuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBTdHJpbmc7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBKU0RlYnVnZ2VyQWdlbnRCb3VuZE9iajsKIGNsYXNzIEpT
UHJvZmlsZXJBZ2VudEJvdW5kT2JqOwogY2xhc3MgSlNUb29sc0FnZW50Qm91bmRPYmo7CiBjbGFz
cyBXZWJEZXZUb29sc0NsaWVudERlbGVnYXRlOwpAQCAtODMsNyArODIsNiBAQCBwcml2YXRlOgog
ICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7CiAgICAgV2ViS2l0OjpXZWJE
ZXZUb29sc0Zyb250ZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlv
bkxvY2FsZTsKLSAgICBPd25QdHI8SlNEZWJ1Z2dlckFnZW50Qm91bmRPYmo+IG1fZGVidWdnZXJB
Z2VudE9iajsKICAgICBPd25QdHI8SlNQcm9maWxlckFnZW50Qm91bmRPYmo+IG1fcHJvZmlsZXJB
Z2VudE9iajsKICAgICBPd25QdHI8SlNUb29sc0FnZW50Qm91bmRPYmo+IG1fdG9vbHNBZ2VudE9i
ajsKICAgICBib29sIG1fbG9hZGVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63203</attachid>
            <date>2010-08-02 05:47:43 -0700</date>
            <delta_ts>2010-08-02 05:53:32 -0700</delta_ts>
            <desc>[PATCH] Profiler check added.</desc>
            <filename>removed_agents</filename>
            <type>text/plain</type>
            <size>25398</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGEzODk1MjUuLjc2MTBlNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDEwLTA4LTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9t
aXVtIERldlRvb2xzOiBHZXQgcmlkIG9mIEFQVUFnZW50IGFuZCBEZWJ1Z2dlckFnZW50LgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzMzNQorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
OgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREZWJ1Z2dlck91dHB1
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREaXNwYXRj
aFRvQVBVKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0Lmg6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL0FQVUFnZW50RGVsZWdhdGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9EZWJ1
Z2dlckFnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRJbXBsOjpk
ZWJ1Z2dlck91dHB1dCk6CisgICAgICAgICogc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGVi
dWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6RGVidWdn
ZXJBZ2VudE1hbmFnZXI6Om9uVjhEZWJ1Z01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29tbWFuZFRvVjgpOgorICAgICAgICAoV2Vi
S2l0OjpEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRvVjgpOgorICAg
ICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzQWdlbnRJbXBsOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50SW1wbDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJE
ZXZUb29sc0FnZW50SW1wbDo6anNEaXNwYXRjaE9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDct
MjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAwMTM4NTU0Li42
ODdkMTVjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTQzLDcgKzE0Myw2IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
ZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
b2N1bWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLApAQCAtMjcxLDcgKzI3MCw2
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCi0gICAgICAg
ICAgICAgICAgJ3NyYy9BUFVBZ2VudERlbGVnYXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcCcsCkBAIC0yOTIsNyArMjkwLDYgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGF0YWJhc2VPYnNlcnZl
ci5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9EZWJ1Z2dlckFnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdl
bnRNYW5hZ2VyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dlRvb2xzQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
CmluZGV4IDBlMjZjYzkuLjY1NDM4M2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2VG9vbHNBZ2VudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2
VG9vbHNBZ2VudC5oCkBAIC03Miw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBBc3luY2hyb25v
dXNseSByZXF1ZXN0IGRlYnVnZ2VyIHRvIHBhdXNlIGltbWVkaWF0ZWx5LgogICAgIFdFQktJVF9B
UEkgc3RhdGljIHZvaWQgZGVidWdnZXJQYXVzZVNjcmlwdCgpOwogCi0gICAgV0VCS0lUX0FQSSBz
dGF0aWMgYm9vbCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKFdlYkRldlRv
b2xzTWVzc2FnZVRyYW5zcG9ydCosIGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKTsKLQog
ICAgIHR5cGVkZWYgdm9pZCAoKk1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKSgpOwogCiAgICAg
Ly8gSW5zdGFsbHMgZGlzcGF0Y2ggaGFuZGxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHBl
cmlvZGljYWxseQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29s
c0FnZW50Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRD
bGllbnQuaAppbmRleCA5MWZkM2U4Li43ZmIwNDYyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNDAsNyArNDAsOSBAQCBzdHJ1Y3Qg
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudCB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBX
ZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9DQorICAgIHZpcnR1
YWwgdm9pZCBzZW5kRGVidWdnZXJPdXRwdXQoY29uc3QgV2ViU3RyaW5nJikgeyB9DQorICAgIHZp
cnR1YWwgdm9pZCBzZW5kRGlzcGF0Y2hUb0FQVShjb25zdCBXZWJTdHJpbmcmKSB7IH0KIAogICAg
IC8vIEludmFsaWRhdGVzIHdpZGdldCB3aGljaCBsZWFkcyB0byB0aGUgcmVwYWludC4KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTRjMDdmMS4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLSNkZWZpbmUgV2ViRGV2
VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLQotI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKLSNpbmNs
dWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2ViRGV2VG9v
bHNNZXNzYWdlRGF0YTsKLQotY2xhc3MgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kT25JT1RocmVhZChjb25zdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhJikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9BUFVBZ2VudERlbGVnYXRl
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0FQVUFnZW50RGVsZWdhdGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzBiZTcwMi4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0FQVUFnZW50RGVsZWdhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEFQVUFnZW50RGVsZWdhdGVfaAotI2RlZmluZSBBUFVBZ2VudERlbGVnYXRlX2gKLQotI2lu
Y2x1ZGUgIkRldlRvb2xzUlBDLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jZGVmaW5lIEFQ
VV9BR0VOVF9ERUxFR0FURV9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwgTUVUSE9E
MywgTUVIVE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFNlbmRzIGEganNvbiBvYmplY3QgdG8gYXB1
LiAqLyBcCi0gICAgTUVUSE9EMShkaXNwYXRjaFRvQXB1LCBTdHJpbmcgLyogZGF0YSAqLykKLQot
REVGSU5FX1JQQ19DTEFTUyhBcHVBZ2VudERlbGVnYXRlLCBBUFVfQUdFTlRfREVMRUdBVEVfU1RS
VUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVi
dWdnZXJBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2NkZTExLi4wMDAw
MDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGVidWdnZXJBZ2VudF9oCi0jZGVmaW5lIERlYnVn
Z2VyQWdlbnRfaAotCi0jaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1F
VEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBSZXF1ZXN0cyBnbG9i
YWwgY29udGV4dCBpZCBvZiB0aGUgaW5zcGVjdGVkIHRhYi4gKi8gXAotICAgIE1FVEhPRDAoZ2V0
Q29udGV4dElkKSBcCi0gICAgXAotICAgIC8qIFJlcXVlc3QgdjggdG8gcHJvY2VzcyBhbGwgZGVi
dWcgY29tbWFuZHMgaW4gdGhlIHF1ZXVlLiAqLyBcCi0gICAgTUVUSE9EMChwcm9jZXNzRGVidWdD
b21tYW5kcykKLQotREVGSU5FX1JQQ19DTEFTUyhEZWJ1Z2dlckFnZW50LCBERUJVR0dFUl9BR0VO
VF9TVFJVQ1QpCi0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfREVMRUdBVEVfU1RSVUNUKE1FVEhP
RDAsIE1FVEhPRDEsIE1FVEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICBN
RVRIT0QxKGRlYnVnZ2VyT3V0cHV0LCBTdHJpbmcgLyogb3V0cHV0IHRleHQgKi8pIFwKLSAgICBc
Ci0gICAgLyogUHVzaGVzIGRlYnVnZ2VyIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50LiAqLyBc
Ci0gICAgTUVUSE9EMShzZXRDb250ZXh0SWQsIGludCAvKiBjb250ZXh0IGlkICovKQotCi1ERUZJ
TkVfUlBDX0NMQVNTKERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSwgREVCVUdHRVJfQUdFTlRfREVMRUdB
VEVfU1RSVUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCmluZGV4IGRkZTllMWQuLjRkYzQwYTggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViVmlld0lt
cGwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTMsMTEgKzU0LDExIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBEZWJ1Z2dlckFnZW50SW1wbDo6RGVidWdnZXJBZ2VudEltcGwoCiAg
ICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLAotICAgIERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSog
ZGVsZWdhdGUsCi0gICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQpCisg
ICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsCisgICAgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCogd2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICA6IG1fd2ViVmlld0lt
cGwod2ViVmlld0ltcGwpCi0gICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICwgbV93ZWJk
ZXZ0b29sc0FnZW50KHdlYmRldnRvb2xzQWdlbnQpCisgICAgLCBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQod2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICAsIG1fYXV0b0NvbnRpbnVlT25FeGNl
cHRpb24oZmFsc2UpCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnQXR0YWNoKHRo
aXMpOwpAQCAtNjgsMjAgKzY5LDkgQEAgRGVidWdnZXJBZ2VudEltcGw6On5EZWJ1Z2dlckFnZW50
SW1wbCgpCiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKHRoaXMpOwogfQog
Ci12b2lkIERlYnVnZ2VyQWdlbnRJbXBsOjpnZXRDb250ZXh0SWQoKQotewotICAgIG1fZGVsZWdh
dGUtPnNldENvbnRleHRJZChtX3dlYmRldnRvb2xzQWdlbnQtPmhvc3RJZCgpKTsKLX0KLQotdm9p
ZCBEZWJ1Z2dlckFnZW50SW1wbDo6cHJvY2Vzc0RlYnVnQ29tbWFuZHMoKQotewotICAgIERlYnVn
Z2VyQWdlbnRNYW5hZ2VyOjpVdGlsaXR5Q29udGV4dFNjb3BlIHV0aWxpdHlTY29wZTsKLSAgICB2
ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7Ci19Ci0KIHZvaWQgRGVidWdnZXJBZ2Vu
dEltcGw6OmRlYnVnZ2VyT3V0cHV0KGNvbnN0IFN0cmluZyYgY29tbWFuZCkKIHsKLSAgICBtX2Rl
bGVnYXRlLT5kZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKKyAgICBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQtPnNlbmREZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKICAgICBtX3dlYmRldnRvb2xzQWdl
bnQtPmZvcmNlUmVwYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RlYnVnZ2VyQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJ
bXBsLmgKaW5kZXggMGU2ZTZhZi4uZDhiMTNmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdn
ZXJBZ2VudEltcGwuaApAQCAtMzEsOCArMzEsNiBAQAogI2lmbmRlZiBEZWJ1Z2dlckFnZW50SW1w
bF9oCiAjZGVmaW5lIERlYnVnZ2VyQWdlbnRJbXBsX2gKIAotI2luY2x1ZGUgIkRlYnVnZ2VyQWdl
bnQuaCIKLQogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQ3LDIwICs0NSwxNyBAQCBjbGFzcyBTdHJpbmc7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50Owog
Y2xhc3MgV2ViRGV2VG9vbHNBZ2VudEltcGw7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAotY2xhc3Mg
RGVidWdnZXJBZ2VudEltcGwgOiBwdWJsaWMgRGVidWdnZXJBZ2VudCB7CitjbGFzcyBEZWJ1Z2dl
ckFnZW50SW1wbCB7CiBwdWJsaWM6CiAgICAgRGVidWdnZXJBZ2VudEltcGwoV2ViS2l0OjpXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgRGVidWdnZXJBZ2Vu
dERlbGVnYXRlKiBkZWxlZ2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBXZWJEZXZUb29sc0Fn
ZW50SW1wbCogd2ViZGV2dG9vbHNBZ2VudCk7CisgICAgICAgICAgICAgICAgICAgICAgV2ViRGV2
VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsCisgICAgICAgICAgICAgICAgICAgICAg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogd2ViZGV2dG9vbHNBZ2VudENsaWVudCk7CiAgICAgdmly
dHVhbCB+RGVidWdnZXJBZ2VudEltcGwoKTsKIAotICAgIC8vIERlYnVnZ2VyQWdlbnQgaW1wbGVt
ZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGdldENvbnRleHRJZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzRGVidWdDb21tYW5kcygpOwotCiAgICAgdm9pZCBkZWJ1Z2dlck91dHB1dChj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIG91dCk7CiAKICAgICB2b2lkIHNldEF1dG9Db250aW51ZU9u
RXhjZXB0aW9uKGJvb2wgYXV0b0NvbnRpbnVlKSB7IG1fYXV0b0NvbnRpbnVlT25FeGNlcHRpb24g
PSBhdXRvQ29udGludWU7IH0KQEAgLTg3LDggKzgyLDggQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7Ci0gICAgRGVidWdnZXJBZ2Vu
dERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBtX3dlYmRl
dnRvb2xzQWdlbnQ7CisgICAgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogbV93ZWJkZXZ0b29sc0Fn
ZW50Q2xpZW50OwogICAgIGJvb2wgbV9hdXRvQ29udGludWVPbkV4Y2VwdGlvbjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAKaW5kZXggMWNjNjc0
MC4uMjNhMDQxYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50
TWFuYWdlci5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdl
ci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpkZWJ1
Z0RldGFjaChEZWJ1Z2dlckFnZW50SW1wbCogZGVidWdnZXJBZ2VudCkKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAvLyBSZW1vdmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdl
bnQuCi0gICAgICBTdHJpbmcgY2xlYXJCcmVha3BvaW50R3JvdXBDbWQgPSBTdHJpbmc6OmZvcm1h
dCgKKyAgICAgIFdlYkNvcmU6OlN0cmluZyBjbGVhckJyZWFrcG9pbnRHcm91cENtZCA9IFN0cmlu
Zzo6Zm9ybWF0KAogICAgICAgICAgICJ7XCJzZXFcIjoxLFwidHlwZVwiOlwicmVxdWVzdFwiLFwi
Y29tbWFuZFwiOlwiY2xlYXJicmVha3BvaW50Z3JvdXBcIiwiCiAgICAgICAgICAgICAgICJcImFy
Z3VtZW50c1wiOntcImdyb3VwSWRcIjolZH19IiwKICAgICAgICAgICBob3N0SWQpOwpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6Om9uVjhEZWJ1Z01lc3NhZ2Uo
Y29uc3Qgdjg6OkRlYnVnOjpNZXNzYWdlJiBtZXNzYWdlKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKICAgICB2ODo6U3RyaW5nOjpWYWx1ZSB2YWx1ZShtZXNzYWdlLkdldEpTT04oKSk7
Ci0gICAgU3RyaW5nIG91dChyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oKnZhbHVlKSwg
dmFsdWUubGVuZ3RoKCkpOworICAgIFdlYkNvcmU6OlN0cmluZyBvdXQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KCp2YWx1ZSksIHZhbHVlLmxlbmd0aCgpKTsKIAogICAgIC8vIElmIGNh
bGxlckRhdGEgaXMgbm90IDAgdGhlIG1lc3NhZ2UgaXMgYSByZXNwb25zZSB0byBhIGRlYnVnZ2Vy
IGNvbW1hbmQuCiAgICAgaWYgKHY4OjpEZWJ1Zzo6Q2xpZW50RGF0YSogY2FsbGVyRGF0YSA9IG1l
c3NhZ2UuR2V0Q2xpZW50RGF0YSgpKSB7CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6cGF1c2VTY3JpcHQoKQogICAgICAgICB2ODo6RGVidWc6OkRlYnVnQnJl
YWsoKTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGludCBjYWxsZXJJZCkKK3ZvaWQgRGVidWdnZXJB
Z2VudE1hbmFnZXI6OmV4ZWN1dGVEZWJ1Z2dlckNvbW1hbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBjb21tYW5kLCBpbnQgY2FsbGVySWQpCiB7CiAgICAgc2VuZENvbW1hbmRUb1Y4KGNvbW1hbmQs
IG5ldyBDYWxsZXJJZFdyYXBwZXIoY2FsbGVySWQpKTsKIH0KQEAgLTI4NiwxNCArMjg2LDE0IEBA
IHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6Om9uTmF2aWdhdGUoKQogICAgICAgICBEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRvVjgoKTsKIH0KIAotdm9pZCBEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbW1hbmRUb1Y4KGNvbnN0IFN0cmluZyYgY21kLCB2ODo6
RGVidWc6OkNsaWVudERhdGEqIGRhdGEpCit2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5k
Q29tbWFuZFRvVjgoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBjbWQsIHY4OjpEZWJ1Zzo6Q2xpZW50
RGF0YSogZGF0YSkKIHsKICAgICB2ODo6RGVidWc6OlNlbmRDb21tYW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDE2X3QqPihjbWQuY2hhcmFjdGVycygpKSwgY21kLmxlbmd0aCgpLCBkYXRh
KTsKIH0KIAogdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRv
VjgoKQogewotICAgIFN0cmluZyBjb250aW51ZUNtZCgie1wic2VxXCI6MSxcInR5cGVcIjpcInJl
cXVlc3RcIixcImNvbW1hbmRcIjpcImNvbnRpbnVlXCJ9Iik7CisgICAgV2ViQ29yZTo6U3RyaW5n
IGNvbnRpbnVlQ21kKCJ7XCJzZXFcIjoxLFwidHlwZVwiOlwicmVxdWVzdFwiLFwiY29tbWFuZFwi
OlwiY29udGludWVcIn0iKTsKICAgICBzZW5kQ29tbWFuZFRvVjgoY29udGludWVDbWQsIG5ldyBD
YWxsZXJJZFdyYXBwZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAKaW5kZXggMWE2NWJmZS4uYTRjZGVkOSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNs
dWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzTWVzc2FnZURhdGEuaCIKLSNpbmNsdWRlICJXZWJEZXZU
b29sc01lc3NhZ2VUcmFuc3BvcnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNs
dWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC0xMDksMjEgKzEwOCw2
IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtSZXNvdXJjZVRyYWNraW5nRmVhdHVyZU5hbWVbXSA9ICJy
ZXNvdXJjZS10cmFja2luZyI7CiBzdGF0aWMgY29uc3QgY2hhciBrVGltZWxpbmVGZWF0dXJlTmFt
ZVtdID0gInRpbWVsaW5lLXByb2ZpbGVyIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBcHVBZ2VudEZl
YXR1cmVOYW1lW10gPSAiYXB1LWFnZW50IjsKIAotY2xhc3MgSU9SUENEZWxlZ2F0ZSA6IHB1Ymxp
YyBEZXZUb29sc1JQQzo6RGVsZWdhdGUsIHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0g
ICAgSU9SUENEZWxlZ2F0ZSgpIDogbV90cmFuc3BvcnQoMCkgeyB9Ci0gICAgZXhwbGljaXQgSU9S
UENEZWxlZ2F0ZShXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIHRyYW5zcG9ydCkgOiBtX3Ry
YW5zcG9ydCh0cmFuc3BvcnQpIHsgfQotICAgIHZpcnR1YWwgfklPUlBDRGVsZWdhdGUoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2VuZFJwY01lc3NhZ2UoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdl
RGF0YSYgZGF0YSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3RyYW5zcG9ydCkKLSAgICAgICAgICAg
IG1fdHJhbnNwb3J0LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkKGRhdGEpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIG1fdHJhbnNw
b3J0OwotfTsKLQogY2xhc3MgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyIDogcHVibGljIFdlYkNv
cmU6OlNjcmlwdERlYnVnU2VydmVyOjpDbGllbnRNZXNzYWdlTG9vcCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKFdlYkRldlRvb2xzQWdl
bnRDbGllbnQqIGNsaWVudCkKQEAgLTIyMiw5ICsyMDYsOCBAQCBXZWJEZXZUb29sc0FnZW50SW1w
bDo6V2ViRGV2VG9vbHNBZ2VudEltcGwoCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNl
dEV4cG9zZVY4RGVidWdnZXJQcm90b2NvbCgKICAgICAgICAgY2xpZW50LT5leHBvc2VWOERlYnVn
Z2VyUHJvdG9jb2woKSk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLnNldChuZXcg
RGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7CiAgICAgbV90b29sc0FnZW50RGVsZWdh
dGVTdHViLnNldChuZXcgVG9vbHNBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7Ci0gICAgbV9hcHVB
Z2VudERlbGVnYXRlU3R1Yi5zZXQobmV3IEFwdUFnZW50RGVsZWdhdGVTdHViKHRoaXMpKTsKKyAg
ICBtX3Byb2ZpbGVyQWdlbnREZWxlZ2F0ZVN0dWIuc2V0KG5ldyBQcm9maWxlckFnZW50RGVsZWdh
dGVTdHViKHRoaXMpKTsKIH0KIAogV2ViRGV2VG9vbHNBZ2VudEltcGw6On5XZWJEZXZUb29sc0Fn
ZW50SW1wbCgpCkBAIC0yNTEsOSArMjM0LDggQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
YXR0YWNoKCkKICAgICAgICAgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyOjplbnN1cmVDbGllbnRN
ZXNzYWdlTG9vcENyZWF0ZWQobV9jbGllbnQpOwogCiAgICAgbV9kZWJ1Z2dlckFnZW50SW1wbC5z
ZXQoCi0gICAgICAgIG5ldyBEZWJ1Z2dlckFnZW50SW1wbChtX3dlYlZpZXdJbXBsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLmdldCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICBuZXcgRGVi
dWdnZXJBZ2VudEltcGwobV93ZWJWaWV3SW1wbCwgdGhpcywgbV9jbGllbnQpKTsKKyAgICBtX3By
b2ZpbGVyQWdlbnRJbXBsLnNldChuZXcgUHJvZmlsZXJBZ2VudEltcGwobV9wcm9maWxlckFnZW50
RGVsZWdhdGVTdHViLmdldCgpKSk7CiAgICAgY3JlYXRlSW5zcGVjdG9yRnJvbnRlbmRQcm94eSgp
OwogCiAgICAgLy8gQWxsb3cgY29udHJvbGxlciB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBmcm9u
dGVuZC4KQEAgLTI4Myw2ICsyNjUsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkZXRh
Y2goKQogICAgIGljLT5jbG9zZSgpOwogICAgIGRpc3Bvc2VVdGlsaXR5Q29udGV4dCgpOwogICAg
IG1fZGVidWdnZXJBZ2VudEltcGwuc2V0KDApOworICAgIG1fcHJvZmlsZXJBZ2VudEltcGwuc2V0
KDApOwogICAgIG1fYXR0YWNoZWQgPSBmYWxzZTsKICAgICBtX2FwdUFnZW50RW5hYmxlZCA9IGZh
bHNlOwogfQpAQCAtMjk2LDEwICsyNzksNiBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWROYXZpZ2F0ZSgpCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRDbGVhcldpbmRvd09i
amVjdChXZWJGcmFtZUltcGwqIHdlYmZyYW1lKQogewogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2Vy
OjpzZXRIb3N0SWQod2ViZnJhbWUsIG1faG9zdElkKTsKLSAgICBpZiAobV9hdHRhY2hlZCkgewot
ICAgICAgICAvLyBQdXNoIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50IGlmIGl0IGlzIGFscmVh
ZHkgYXR0YWNoZWQuCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yi0+c2V0Q29u
dGV4dElkKG1faG9zdElkKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6
OmZvcmNlUmVwYWludCgpCkBAIC0zMTQsMTMgKzI5MywxMyBAQCB2b2lkIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcihjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9u
dGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQogewotICAgIGlmIChUb29s
c0FnZW50RGlzcGF0Y2g6OmRpc3BhdGNoKHRoaXMsIGRhdGEpKQorICAgIGlmIChUb29sc0FnZW50
RGlzcGF0Y2g6OmRpc3BhdGNoKHRoaXMsIGRhdGEpKQ0KICAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKCFtX2F0dGFjaGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9kZWJ1Z2dlckFn
ZW50SW1wbC5nZXQoKSAmJiBEZWJ1Z2dlckFnZW50RGlzcGF0Y2g6OmRpc3BhdGNoKG1fZGVidWdn
ZXJBZ2VudEltcGwuZ2V0KCksIGRhdGEpKQorDQorICAgIGlmICghbV9hdHRhY2hlZCkNCisgICAg
ICAgIHJldHVybjsNCisNCisgICAgaWYgKG1fcHJvZmlsZXJBZ2VudEltcGwuZ2V0KCkgJiYgUHJv
ZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaChtX3Byb2ZpbGVyQWdlbnRJbXBsLmdldCgpLCBk
YXRhKSkNCiAgICAgICAgIHJldHVybjsKIH0KIApAQCAtNDM2LDEwICs0MTUsMTAgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFdlYkRldlRvb2xzQWdlbnRJbXBsOjpqc0Rpc3BhdGNoT25DbGllbnQo
Y29uc3Qgdjg6OkFyZ3VtZW4KICAgICBpZiAobWV0aG9kLmlzRW1wdHkoKSB8fCBleGNlcHRpb25D
YXRjaGVyLkhhc0NhdWdodCgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0g
ICAgaWYgKG1ldGhvZCAhPSAiYWRkUmVjb3JkVG9UaW1lbGluZSIgJiYgbWV0aG9kICE9ICJ1cGRh
dGVSZXNvdXJjZSIgJiYgbWV0aG9kICE9ICJhZGRSZXNvdXJjZSIpCisgICAgaWYgKG1ldGhvZCAh
PSAidXBkYXRlUmVzb3VyY2UiICYmIG1ldGhvZCAhPSAiYWRkUmVzb3VyY2UiKQogICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgYWdlbnQtPm1fYXB1QWdlbnREZWxlZ2F0ZVN0
dWItPmRpc3BhdGNoVG9BcHUobWVzc2FnZSk7CisgICAgYWdlbnQtPm1fY2xpZW50LT5zZW5kRGlz
cGF0Y2hUb0FQVShtZXNzYWdlKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCkBA
IC01NDIsOSArNTIxLDkgQEAgYm9vbCBXZWJEZXZUb29sc0FnZW50SW1wbDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSkKICAgICBXZWJEZXZUb29s
c0FnZW50SW1wbCogZGV2VG9vbHNBZ2VudCA9IHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJ
bXBsKj4obV93ZWJWaWV3SW1wbC0+ZGV2VG9vbHNBZ2VudCgpKTsKICAgICBpZiAoIWRldlRvb2xz
QWdlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChkZXZUb29sc0FnZW50LT5t
X2FwdUFnZW50RW5hYmxlZCAmJiBkZXZUb29sc0FnZW50LT5tX2FwdUFnZW50RGVsZWdhdGVTdHVi
KSB7Ci0gICAgICAgIGRldlRvb2xzQWdlbnQtPm1fYXB1QWdlbnREZWxlZ2F0ZVN0dWItPmRpc3Bh
dGNoVG9BcHUobWVzc2FnZSk7CisNCisgICAgaWYgKGRldlRvb2xzQWdlbnQtPm1fYXB1QWdlbnRF
bmFibGVkKSB7DQorICAgICAgICBtX2NsaWVudC0+c2VuZERpc3BhdGNoVG9BUFUobWVzc2FnZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNjA4LDEyICs1ODcsNCBAQCB2b2lk
IFdlYkRldlRvb2xzQWdlbnQ6OnNldE1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKE1lc3NhZ2VM
b29wRGlzcGF0Y2hIYW5kbGVyCiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNldE1lc3NhZ2VM
b29wRGlzcGF0Y2hIYW5kbGVyKGhhbmRsZXIpOwogfQogCi1ib29sIFdlYkRldlRvb2xzQWdlbnQ6
OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNNZXNzYWdl
VHJhbnNwb3J0KiB0cmFuc3BvcnQsIGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmIGRhdGEp
Ci17Ci0gICAgSU9SUENEZWxlZ2F0ZSBkZWxlZ2F0ZSh0cmFuc3BvcnQpOwotICAgIFByb2ZpbGVy
QWdlbnREZWxlZ2F0ZVN0dWIgc3R1YigmZGVsZWdhdGUpOwotICAgIFByb2ZpbGVyQWdlbnRJbXBs
IGFnZW50KCZzdHViKTsKLSAgICByZXR1cm4gUHJvZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRj
aCgmYWdlbnQsIGRhdGEpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAppbmRleCBjOGUyMmIwLi4yNTQ3YjU4IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCkBAIC0zMyw3ICsz
Myw2IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKIAotI2luY2x1ZGUgIkFQVUFn
ZW50RGVsZWdhdGUuaCIKICNpbmNsdWRlICJEZXZUb29sc1JQQy5oIgogI2luY2x1ZGUgIlRvb2xz
QWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgpAQCAtNTMsNiAr
NTIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGVidWdnZXJBZ2VudERlbGVnYXRl
U3R1YjsKIGNsYXNzIERlYnVnZ2VyQWdlbnRJbXBsOworY2xhc3MgUHJvZmlsZXJBZ2VudERlbGVn
YXRlU3R1YjsKK2NsYXNzIFByb2ZpbGVyQWdlbnRJbXBsOwogY2xhc3MgV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudDsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViRnJhbWVJbXBsOwpAQCAtMTMwLDEw
ICsxMzEsMTAgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9ob3N0SWQ7CiAgICAgV2ViRGV2VG9vbHNB
Z2VudENsaWVudCogbV9jbGllbnQ7CiAgICAgV2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7Ci0g
ICAgT3duUHRyPERlYnVnZ2VyQWdlbnREZWxlZ2F0ZVN0dWI+IG1fZGVidWdnZXJBZ2VudERlbGVn
YXRlU3R1YjsKICAgICBPd25QdHI8VG9vbHNBZ2VudERlbGVnYXRlU3R1Yj4gbV90b29sc0FnZW50
RGVsZWdhdGVTdHViOworICAgIE93blB0cjxQcm9maWxlckFnZW50RGVsZWdhdGVTdHViPiBtX3By
b2ZpbGVyQWdlbnREZWxlZ2F0ZVN0dWI7CiAgICAgT3duUHRyPERlYnVnZ2VyQWdlbnRJbXBsPiBt
X2RlYnVnZ2VyQWdlbnRJbXBsOwotICAgIE93blB0cjxBcHVBZ2VudERlbGVnYXRlU3R1Yj4gbV9h
cHVBZ2VudERlbGVnYXRlU3R1YjsKKyAgICBPd25QdHI8UHJvZmlsZXJBZ2VudEltcGw+IG1fcHJv
ZmlsZXJBZ2VudEltcGw7CiAgICAgYm9vbCBtX2FwdUFnZW50RW5hYmxlZDsKICAgICBib29sIG1f
cmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQ7CiAgICAgYm9vbCBtX2F0dGFjaGVkOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcAppbmRleCA1OTJh
NTMyLi44YTM2NDVlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
RnJvbnRlbmRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJv
bnRlbmRJbXBsLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgogI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJEZXZUb29sc1JQ
Q0pTLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtNzgs
NyArNzcsNiBAQCBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IFRvVjhTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzKQogICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MTZfdCo+KHMuY2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSk7CiB9CiAKLURFRklO
RV9SUENfSlNfQk9VTkRfT0JKKERlYnVnZ2VyQWdlbnQsIERFQlVHR0VSX0FHRU5UX1NUUlVDVCwg
RGVidWdnZXJBZ2VudERlbGVnYXRlLCBERUJVR0dFUl9BR0VOVF9ERUxFR0FURV9TVFJVQ1QpCiBE
RUZJTkVfUlBDX0pTX0JPVU5EX09CSihQcm9maWxlckFnZW50LCBQUk9GSUxFUl9BR0VOVF9TVFJV
Q1QsIFByb2ZpbGVyQWdlbnREZWxlZ2F0ZSwgUFJPRklMRVJfQUdFTlRfREVMRUdBVEVfU1RSVUNU
KQogREVGSU5FX1JQQ19KU19CT1VORF9PQkooVG9vbHNBZ2VudCwgVE9PTFNfQUdFTlRfU1RSVUNU
LCBUb29sc0FnZW50RGVsZWdhdGUsIFRPT0xTX0FHRU5UX0RFTEVHQVRFX1NUUlVDVCkKIApAQCAt
MTEzLDcgKzExMSw2IEBAIFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpXZWJEZXZUb29sc0Zyb250
ZW5kSW1wbCgKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gZnJhbWVDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZS0+ZnJhbWUoKSk7
CiAKLSAgICBtX2RlYnVnZ2VyQWdlbnRPYmouc2V0KG5ldyBKU0RlYnVnZ2VyQWdlbnRCb3VuZE9i
aih0aGlzLCBmcmFtZUNvbnRleHQsICJSZW1vdGVEZWJ1Z2dlckFnZW50IikpOwogICAgIG1fcHJv
ZmlsZXJBZ2VudE9iai5zZXQobmV3IEpTUHJvZmlsZXJBZ2VudEJvdW5kT2JqKHRoaXMsIGZyYW1l
Q29udGV4dCwgIlJlbW90ZVByb2ZpbGVyQWdlbnQiKSk7CiAgICAgbV90b29sc0FnZW50T2JqLnNl
dChuZXcgSlNUb29sc0FnZW50Qm91bmRPYmoodGhpcywgZnJhbWVDb250ZXh0LCAiUmVtb3RlVG9v
bHNBZ2VudCIpKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0Zyb250ZW5kSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5k
SW1wbC5oCmluZGV4IGZhNDcwN2QuLjcxNmY0ZjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgY2xhc3MgU3RyaW5n
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgSlNEZWJ1Z2dlckFnZW50Qm91bmRPYmo7
CiBjbGFzcyBKU1Byb2ZpbGVyQWdlbnRCb3VuZE9iajsKIGNsYXNzIEpTVG9vbHNBZ2VudEJvdW5k
T2JqOwogY2xhc3MgV2ViRGV2VG9vbHNDbGllbnREZWxlZ2F0ZTsKQEAgLTgzLDcgKzgyLDYgQEAg
cHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOwogICAgIFdl
YktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1f
YXBwbGljYXRpb25Mb2NhbGU7Ci0gICAgT3duUHRyPEpTRGVidWdnZXJBZ2VudEJvdW5kT2JqPiBt
X2RlYnVnZ2VyQWdlbnRPYmo7CiAgICAgT3duUHRyPEpTUHJvZmlsZXJBZ2VudEJvdW5kT2JqPiBt
X3Byb2ZpbGVyQWdlbnRPYmo7CiAgICAgT3duUHRyPEpTVG9vbHNBZ2VudEJvdW5kT2JqPiBtX3Rv
b2xzQWdlbnRPYmo7CiAgICAgYm9vbCBtX2xvYWRlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63205</attachid>
            <date>2010-08-02 05:53:32 -0700</date>
            <delta_ts>2010-08-02 13:27:58 -0700</delta_ts>
            <desc>[PATCH] Proposed change with style addressed.</desc>
            <filename>removed_agents</filename>
            <type>text/plain</type>
            <size>25015</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGEzODk1MjUuLjc2MTBlNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDEwLTA4LTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9t
aXVtIERldlRvb2xzOiBHZXQgcmlkIG9mIEFQVUFnZW50IGFuZCBEZWJ1Z2dlckFnZW50LgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzMzNQorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
OgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREZWJ1Z2dlck91dHB1
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmREaXNwYXRj
aFRvQVBVKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0Lmg6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL0FQVUFnZW50RGVsZWdhdGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9EZWJ1
Z2dlckFnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRJbXBsOjpk
ZWJ1Z2dlck91dHB1dCk6CisgICAgICAgICogc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGVi
dWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6RGVidWdn
ZXJBZ2VudE1hbmFnZXI6Om9uVjhEZWJ1Z01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29tbWFuZFRvVjgpOgorICAgICAgICAoV2Vi
S2l0OjpEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRvVjgpOgorICAg
ICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzQWdlbnRJbXBsOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50SW1wbDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJE
ZXZUb29sc0FnZW50SW1wbDo6anNEaXNwYXRjaE9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDct
MjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAwMTM4NTU0Li42
ODdkMTVjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTQzLDcgKzE0Myw2IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
ZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
b2N1bWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLApAQCAtMjcxLDcgKzI3MCw2
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCi0gICAgICAg
ICAgICAgICAgJ3NyYy9BUFVBZ2VudERlbGVnYXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcCcsCkBAIC0yOTIsNyArMjkwLDYgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGF0YWJhc2VPYnNlcnZl
ci5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9EZWJ1Z2dlckFnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdl
bnRNYW5hZ2VyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dlRvb2xzQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5o
CmluZGV4IDBlMjZjYzkuLjY1NDM4M2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2VG9vbHNBZ2VudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2
VG9vbHNBZ2VudC5oCkBAIC03Miw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBBc3luY2hyb25v
dXNseSByZXF1ZXN0IGRlYnVnZ2VyIHRvIHBhdXNlIGltbWVkaWF0ZWx5LgogICAgIFdFQktJVF9B
UEkgc3RhdGljIHZvaWQgZGVidWdnZXJQYXVzZVNjcmlwdCgpOwogCi0gICAgV0VCS0lUX0FQSSBz
dGF0aWMgYm9vbCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKFdlYkRldlRv
b2xzTWVzc2FnZVRyYW5zcG9ydCosIGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKTsKLQog
ICAgIHR5cGVkZWYgdm9pZCAoKk1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKSgpOwogCiAgICAg
Ly8gSW5zdGFsbHMgZGlzcGF0Y2ggaGFuZGxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHBl
cmlvZGljYWxseQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29s
c0FnZW50Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRD
bGllbnQuaAppbmRleCA5MWZkM2U4Li43ZmIwNDYyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNDAsNyArNDAsOSBAQCBzdHJ1Y3Qg
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudCB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBX
ZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9DQorICAgIHZpcnR1
YWwgdm9pZCBzZW5kRGVidWdnZXJPdXRwdXQoY29uc3QgV2ViU3RyaW5nJikgeyB9DQorICAgIHZp
cnR1YWwgdm9pZCBzZW5kRGlzcGF0Y2hUb0FQVShjb25zdCBXZWJTdHJpbmcmKSB7IH0KIAogICAg
IC8vIEludmFsaWRhdGVzIHdpZGdldCB3aGljaCBsZWFkcyB0byB0aGUgcmVwYWludC4KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTRjMDdmMS4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLSNkZWZpbmUgV2ViRGV2
VG9vbHNNZXNzYWdlVHJhbnNwb3J0X2gKLQotI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKLSNpbmNs
dWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2ViRGV2VG9v
bHNNZXNzYWdlRGF0YTsKLQotY2xhc3MgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kT25JT1RocmVhZChjb25zdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhJikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9BUFVBZ2VudERlbGVnYXRl
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0FQVUFnZW50RGVsZWdhdGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzBiZTcwMi4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0FQVUFnZW50RGVsZWdhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEFQVUFnZW50RGVsZWdhdGVfaAotI2RlZmluZSBBUFVBZ2VudERlbGVnYXRlX2gKLQotI2lu
Y2x1ZGUgIkRldlRvb2xzUlBDLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jZGVmaW5lIEFQ
VV9BR0VOVF9ERUxFR0FURV9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwgTUVUSE9E
MywgTUVIVE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFNlbmRzIGEganNvbiBvYmplY3QgdG8gYXB1
LiAqLyBcCi0gICAgTUVUSE9EMShkaXNwYXRjaFRvQXB1LCBTdHJpbmcgLyogZGF0YSAqLykKLQot
REVGSU5FX1JQQ19DTEFTUyhBcHVBZ2VudERlbGVnYXRlLCBBUFVfQUdFTlRfREVMRUdBVEVfU1RS
VUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVi
dWdnZXJBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2NkZTExLi4wMDAw
MDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGVidWdnZXJBZ2VudF9oCi0jZGVmaW5lIERlYnVn
Z2VyQWdlbnRfaAotCi0jaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1F
VEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBSZXF1ZXN0cyBnbG9i
YWwgY29udGV4dCBpZCBvZiB0aGUgaW5zcGVjdGVkIHRhYi4gKi8gXAotICAgIE1FVEhPRDAoZ2V0
Q29udGV4dElkKSBcCi0gICAgXAotICAgIC8qIFJlcXVlc3QgdjggdG8gcHJvY2VzcyBhbGwgZGVi
dWcgY29tbWFuZHMgaW4gdGhlIHF1ZXVlLiAqLyBcCi0gICAgTUVUSE9EMChwcm9jZXNzRGVidWdD
b21tYW5kcykKLQotREVGSU5FX1JQQ19DTEFTUyhEZWJ1Z2dlckFnZW50LCBERUJVR0dFUl9BR0VO
VF9TVFJVQ1QpCi0KLSNkZWZpbmUgREVCVUdHRVJfQUdFTlRfREVMRUdBVEVfU1RSVUNUKE1FVEhP
RDAsIE1FVEhPRDEsIE1FVEhPRDIsIE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICBN
RVRIT0QxKGRlYnVnZ2VyT3V0cHV0LCBTdHJpbmcgLyogb3V0cHV0IHRleHQgKi8pIFwKLSAgICBc
Ci0gICAgLyogUHVzaGVzIGRlYnVnZ2VyIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50LiAqLyBc
Ci0gICAgTUVUSE9EMShzZXRDb250ZXh0SWQsIGludCAvKiBjb250ZXh0IGlkICovKQotCi1ERUZJ
TkVfUlBDX0NMQVNTKERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSwgREVCVUdHRVJfQUdFTlRfREVMRUdB
VEVfU1RSVUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCmluZGV4IGRkZTllMWQuLjRkYzQwYTggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViVmlld0lt
cGwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTMsMTEgKzU0LDExIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBEZWJ1Z2dlckFnZW50SW1wbDo6RGVidWdnZXJBZ2VudEltcGwoCiAg
ICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLAotICAgIERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSog
ZGVsZWdhdGUsCi0gICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQpCisg
ICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsCisgICAgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCogd2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICA6IG1fd2ViVmlld0lt
cGwod2ViVmlld0ltcGwpCi0gICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICwgbV93ZWJk
ZXZ0b29sc0FnZW50KHdlYmRldnRvb2xzQWdlbnQpCisgICAgLCBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQod2ViZGV2dG9vbHNBZ2VudENsaWVudCkKICAgICAsIG1fYXV0b0NvbnRpbnVlT25FeGNl
cHRpb24oZmFsc2UpCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnQXR0YWNoKHRo
aXMpOwpAQCAtNjgsMjAgKzY5LDkgQEAgRGVidWdnZXJBZ2VudEltcGw6On5EZWJ1Z2dlckFnZW50
SW1wbCgpCiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNoKHRoaXMpOwogfQog
Ci12b2lkIERlYnVnZ2VyQWdlbnRJbXBsOjpnZXRDb250ZXh0SWQoKQotewotICAgIG1fZGVsZWdh
dGUtPnNldENvbnRleHRJZChtX3dlYmRldnRvb2xzQWdlbnQtPmhvc3RJZCgpKTsKLX0KLQotdm9p
ZCBEZWJ1Z2dlckFnZW50SW1wbDo6cHJvY2Vzc0RlYnVnQ29tbWFuZHMoKQotewotICAgIERlYnVn
Z2VyQWdlbnRNYW5hZ2VyOjpVdGlsaXR5Q29udGV4dFNjb3BlIHV0aWxpdHlTY29wZTsKLSAgICB2
ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7Ci19Ci0KIHZvaWQgRGVidWdnZXJBZ2Vu
dEltcGw6OmRlYnVnZ2VyT3V0cHV0KGNvbnN0IFN0cmluZyYgY29tbWFuZCkKIHsKLSAgICBtX2Rl
bGVnYXRlLT5kZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKKyAgICBtX3dlYmRldnRvb2xzQWdlbnRD
bGllbnQtPnNlbmREZWJ1Z2dlck91dHB1dChjb21tYW5kKTsKICAgICBtX3dlYmRldnRvb2xzQWdl
bnQtPmZvcmNlUmVwYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RlYnVnZ2VyQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJ
bXBsLmgKaW5kZXggMGU2ZTZhZi4uZDhiMTNmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdn
ZXJBZ2VudEltcGwuaApAQCAtMzEsOCArMzEsNiBAQAogI2lmbmRlZiBEZWJ1Z2dlckFnZW50SW1w
bF9oCiAjZGVmaW5lIERlYnVnZ2VyQWdlbnRJbXBsX2gKIAotI2luY2x1ZGUgIkRlYnVnZ2VyQWdl
bnQuaCIKLQogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQ3LDIwICs0NSwxNyBAQCBjbGFzcyBTdHJpbmc7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50Owog
Y2xhc3MgV2ViRGV2VG9vbHNBZ2VudEltcGw7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAotY2xhc3Mg
RGVidWdnZXJBZ2VudEltcGwgOiBwdWJsaWMgRGVidWdnZXJBZ2VudCB7CitjbGFzcyBEZWJ1Z2dl
ckFnZW50SW1wbCB7CiBwdWJsaWM6CiAgICAgRGVidWdnZXJBZ2VudEltcGwoV2ViS2l0OjpXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgRGVidWdnZXJBZ2Vu
dERlbGVnYXRlKiBkZWxlZ2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBXZWJEZXZUb29sc0Fn
ZW50SW1wbCogd2ViZGV2dG9vbHNBZ2VudCk7CisgICAgICAgICAgICAgICAgICAgICAgV2ViRGV2
VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQsCisgICAgICAgICAgICAgICAgICAgICAg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogd2ViZGV2dG9vbHNBZ2VudENsaWVudCk7CiAgICAgdmly
dHVhbCB+RGVidWdnZXJBZ2VudEltcGwoKTsKIAotICAgIC8vIERlYnVnZ2VyQWdlbnQgaW1wbGVt
ZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGdldENvbnRleHRJZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzRGVidWdDb21tYW5kcygpOwotCiAgICAgdm9pZCBkZWJ1Z2dlck91dHB1dChj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIG91dCk7CiAKICAgICB2b2lkIHNldEF1dG9Db250aW51ZU9u
RXhjZXB0aW9uKGJvb2wgYXV0b0NvbnRpbnVlKSB7IG1fYXV0b0NvbnRpbnVlT25FeGNlcHRpb24g
PSBhdXRvQ29udGludWU7IH0KQEAgLTg3LDggKzgyLDggQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7Ci0gICAgRGVidWdnZXJBZ2Vu
dERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBtX3dlYmRl
dnRvb2xzQWdlbnQ7CisgICAgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogbV93ZWJkZXZ0b29sc0Fn
ZW50Q2xpZW50OwogICAgIGJvb2wgbV9hdXRvQ29udGludWVPbkV4Y2VwdGlvbjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAKaW5kZXggMWNjNjc0
MC4uMjNhMDQxYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50
TWFuYWdlci5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdl
ci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpkZWJ1
Z0RldGFjaChEZWJ1Z2dlckFnZW50SW1wbCogZGVidWdnZXJBZ2VudCkKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAvLyBSZW1vdmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdl
bnQuCi0gICAgICBTdHJpbmcgY2xlYXJCcmVha3BvaW50R3JvdXBDbWQgPSBTdHJpbmc6OmZvcm1h
dCgKKyAgICAgIFdlYkNvcmU6OlN0cmluZyBjbGVhckJyZWFrcG9pbnRHcm91cENtZCA9IFN0cmlu
Zzo6Zm9ybWF0KAogICAgICAgICAgICJ7XCJzZXFcIjoxLFwidHlwZVwiOlwicmVxdWVzdFwiLFwi
Y29tbWFuZFwiOlwiY2xlYXJicmVha3BvaW50Z3JvdXBcIiwiCiAgICAgICAgICAgICAgICJcImFy
Z3VtZW50c1wiOntcImdyb3VwSWRcIjolZH19IiwKICAgICAgICAgICBob3N0SWQpOwpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6Om9uVjhEZWJ1Z01lc3NhZ2Uo
Y29uc3Qgdjg6OkRlYnVnOjpNZXNzYWdlJiBtZXNzYWdlKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKICAgICB2ODo6U3RyaW5nOjpWYWx1ZSB2YWx1ZShtZXNzYWdlLkdldEpTT04oKSk7
Ci0gICAgU3RyaW5nIG91dChyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oKnZhbHVlKSwg
dmFsdWUubGVuZ3RoKCkpOworICAgIFdlYkNvcmU6OlN0cmluZyBvdXQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KCp2YWx1ZSksIHZhbHVlLmxlbmd0aCgpKTsKIAogICAgIC8vIElmIGNh
bGxlckRhdGEgaXMgbm90IDAgdGhlIG1lc3NhZ2UgaXMgYSByZXNwb25zZSB0byBhIGRlYnVnZ2Vy
IGNvbW1hbmQuCiAgICAgaWYgKHY4OjpEZWJ1Zzo6Q2xpZW50RGF0YSogY2FsbGVyRGF0YSA9IG1l
c3NhZ2UuR2V0Q2xpZW50RGF0YSgpKSB7CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6cGF1c2VTY3JpcHQoKQogICAgICAgICB2ODo6RGVidWc6OkRlYnVnQnJl
YWsoKTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGludCBjYWxsZXJJZCkKK3ZvaWQgRGVidWdnZXJB
Z2VudE1hbmFnZXI6OmV4ZWN1dGVEZWJ1Z2dlckNvbW1hbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBjb21tYW5kLCBpbnQgY2FsbGVySWQpCiB7CiAgICAgc2VuZENvbW1hbmRUb1Y4KGNvbW1hbmQs
IG5ldyBDYWxsZXJJZFdyYXBwZXIoY2FsbGVySWQpKTsKIH0KQEAgLTI4NiwxNCArMjg2LDE0IEBA
IHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6Om9uTmF2aWdhdGUoKQogICAgICAgICBEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRvVjgoKTsKIH0KIAotdm9pZCBEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbW1hbmRUb1Y4KGNvbnN0IFN0cmluZyYgY21kLCB2ODo6
RGVidWc6OkNsaWVudERhdGEqIGRhdGEpCit2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5k
Q29tbWFuZFRvVjgoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBjbWQsIHY4OjpEZWJ1Zzo6Q2xpZW50
RGF0YSogZGF0YSkKIHsKICAgICB2ODo6RGVidWc6OlNlbmRDb21tYW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDE2X3QqPihjbWQuY2hhcmFjdGVycygpKSwgY21kLmxlbmd0aCgpLCBkYXRh
KTsKIH0KIAogdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbnRpbnVlQ29tbWFuZFRv
VjgoKQogewotICAgIFN0cmluZyBjb250aW51ZUNtZCgie1wic2VxXCI6MSxcInR5cGVcIjpcInJl
cXVlc3RcIixcImNvbW1hbmRcIjpcImNvbnRpbnVlXCJ9Iik7CisgICAgV2ViQ29yZTo6U3RyaW5n
IGNvbnRpbnVlQ21kKCJ7XCJzZXFcIjoxLFwidHlwZVwiOlwicmVxdWVzdFwiLFwiY29tbWFuZFwi
OlwiY29udGludWVcIn0iKTsKICAgICBzZW5kQ29tbWFuZFRvVjgoY29udGludWVDbWQsIG5ldyBD
YWxsZXJJZFdyYXBwZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAKaW5kZXggMWE2NWJmZS4uNTA0MTA0YyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNs
dWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzTWVzc2FnZURhdGEuaCIKLSNpbmNsdWRlICJXZWJEZXZU
b29sc01lc3NhZ2VUcmFuc3BvcnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNs
dWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC0xMDksMjEgKzEwOCw2
IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtSZXNvdXJjZVRyYWNraW5nRmVhdHVyZU5hbWVbXSA9ICJy
ZXNvdXJjZS10cmFja2luZyI7CiBzdGF0aWMgY29uc3QgY2hhciBrVGltZWxpbmVGZWF0dXJlTmFt
ZVtdID0gInRpbWVsaW5lLXByb2ZpbGVyIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBcHVBZ2VudEZl
YXR1cmVOYW1lW10gPSAiYXB1LWFnZW50IjsKIAotY2xhc3MgSU9SUENEZWxlZ2F0ZSA6IHB1Ymxp
YyBEZXZUb29sc1JQQzo6RGVsZWdhdGUsIHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0g
ICAgSU9SUENEZWxlZ2F0ZSgpIDogbV90cmFuc3BvcnQoMCkgeyB9Ci0gICAgZXhwbGljaXQgSU9S
UENEZWxlZ2F0ZShXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIHRyYW5zcG9ydCkgOiBtX3Ry
YW5zcG9ydCh0cmFuc3BvcnQpIHsgfQotICAgIHZpcnR1YWwgfklPUlBDRGVsZWdhdGUoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2VuZFJwY01lc3NhZ2UoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdl
RGF0YSYgZGF0YSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3RyYW5zcG9ydCkKLSAgICAgICAgICAg
IG1fdHJhbnNwb3J0LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkKGRhdGEpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIG1fdHJhbnNw
b3J0OwotfTsKLQogY2xhc3MgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyIDogcHVibGljIFdlYkNv
cmU6OlNjcmlwdERlYnVnU2VydmVyOjpDbGllbnRNZXNzYWdlTG9vcCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKFdlYkRldlRvb2xzQWdl
bnRDbGllbnQqIGNsaWVudCkKQEAgLTIyMiw5ICsyMDYsOCBAQCBXZWJEZXZUb29sc0FnZW50SW1w
bDo6V2ViRGV2VG9vbHNBZ2VudEltcGwoCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNl
dEV4cG9zZVY4RGVidWdnZXJQcm90b2NvbCgKICAgICAgICAgY2xpZW50LT5leHBvc2VWOERlYnVn
Z2VyUHJvdG9jb2woKSk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLnNldChuZXcg
RGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7CiAgICAgbV90b29sc0FnZW50RGVsZWdh
dGVTdHViLnNldChuZXcgVG9vbHNBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7Ci0gICAgbV9hcHVB
Z2VudERlbGVnYXRlU3R1Yi5zZXQobmV3IEFwdUFnZW50RGVsZWdhdGVTdHViKHRoaXMpKTsKKyAg
ICBtX3Byb2ZpbGVyQWdlbnREZWxlZ2F0ZVN0dWIuc2V0KG5ldyBQcm9maWxlckFnZW50RGVsZWdh
dGVTdHViKHRoaXMpKTsKIH0KIAogV2ViRGV2VG9vbHNBZ2VudEltcGw6On5XZWJEZXZUb29sc0Fn
ZW50SW1wbCgpCkBAIC0yNTEsOSArMjM0LDggQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
YXR0YWNoKCkKICAgICAgICAgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyOjplbnN1cmVDbGllbnRN
ZXNzYWdlTG9vcENyZWF0ZWQobV9jbGllbnQpOwogCiAgICAgbV9kZWJ1Z2dlckFnZW50SW1wbC5z
ZXQoCi0gICAgICAgIG5ldyBEZWJ1Z2dlckFnZW50SW1wbChtX3dlYlZpZXdJbXBsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLmdldCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpOworICAgICAgICBuZXcgRGVi
dWdnZXJBZ2VudEltcGwobV93ZWJWaWV3SW1wbCwgdGhpcywgbV9jbGllbnQpKTsKKyAgICBtX3By
b2ZpbGVyQWdlbnRJbXBsLnNldChuZXcgUHJvZmlsZXJBZ2VudEltcGwobV9wcm9maWxlckFnZW50
RGVsZWdhdGVTdHViLmdldCgpKSk7CiAgICAgY3JlYXRlSW5zcGVjdG9yRnJvbnRlbmRQcm94eSgp
OwogCiAgICAgLy8gQWxsb3cgY29udHJvbGxlciB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBmcm9u
dGVuZC4KQEAgLTI4Myw2ICsyNjUsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkZXRh
Y2goKQogICAgIGljLT5jbG9zZSgpOwogICAgIGRpc3Bvc2VVdGlsaXR5Q29udGV4dCgpOwogICAg
IG1fZGVidWdnZXJBZ2VudEltcGwuc2V0KDApOworICAgIG1fcHJvZmlsZXJBZ2VudEltcGwuc2V0
KDApOwogICAgIG1fYXR0YWNoZWQgPSBmYWxzZTsKICAgICBtX2FwdUFnZW50RW5hYmxlZCA9IGZh
bHNlOwogfQpAQCAtMjk2LDEwICsyNzksNiBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWROYXZpZ2F0ZSgpCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRDbGVhcldpbmRvd09i
amVjdChXZWJGcmFtZUltcGwqIHdlYmZyYW1lKQogewogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2Vy
OjpzZXRIb3N0SWQod2ViZnJhbWUsIG1faG9zdElkKTsKLSAgICBpZiAobV9hdHRhY2hlZCkgewot
ICAgICAgICAvLyBQdXNoIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50IGlmIGl0IGlzIGFscmVh
ZHkgYXR0YWNoZWQuCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yi0+c2V0Q29u
dGV4dElkKG1faG9zdElkKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6
OmZvcmNlUmVwYWludCgpCkBAIC0zMjAsNyArMjk5LDcgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50
SW1wbDo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFdlYkRldlRvb2xzTWVzc2Fn
ZUQKICAgICBpZiAoIW1fYXR0YWNoZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2Rl
YnVnZ2VyQWdlbnRJbXBsLmdldCgpICYmIERlYnVnZ2VyQWdlbnREaXNwYXRjaDo6ZGlzcGF0Y2go
bV9kZWJ1Z2dlckFnZW50SW1wbC5nZXQoKSwgZGF0YSkpCisgICAgaWYgKG1fcHJvZmlsZXJBZ2Vu
dEltcGwuZ2V0KCkgJiYgUHJvZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaChtX3Byb2ZpbGVy
QWdlbnRJbXBsLmdldCgpLCBkYXRhKSkKICAgICAgICAgcmV0dXJuOwogfQogCkBAIC00MzYsMTAg
KzQxNSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRGV2VG9vbHNBZ2VudEltcGw6Ompz
RGlzcGF0Y2hPbkNsaWVudChjb25zdCB2ODo6QXJndW1lbgogICAgIGlmIChtZXRob2QuaXNFbXB0
eSgpIHx8IGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpCiAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiAKLSAgICBpZiAobWV0aG9kICE9ICJhZGRSZWNvcmRUb1RpbWVsaW5lIiAm
JiBtZXRob2QgIT0gInVwZGF0ZVJlc291cmNlIiAmJiBtZXRob2QgIT0gImFkZFJlc291cmNlIikK
KyAgICBpZiAobWV0aG9kICE9ICJ1cGRhdGVSZXNvdXJjZSIgJiYgbWV0aG9kICE9ICJhZGRSZXNv
dXJjZSIpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBhZ2VudC0+bV9h
cHVBZ2VudERlbGVnYXRlU3R1Yi0+ZGlzcGF0Y2hUb0FwdShtZXNzYWdlKTsKKyAgICBhZ2VudC0+
bV9jbGllbnQtPnNlbmREaXNwYXRjaFRvQVBVKG1lc3NhZ2UpOwogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKQEAgLTU0Myw4ICs1MjIsOCBAQCBib29sIFdlYkRldlRvb2xzQWdlbnRJ
bXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdl
KQogICAgIGlmICghZGV2VG9vbHNBZ2VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGRldlRvb2xzQWdlbnQtPm1fYXB1QWdlbnRFbmFibGVkICYmIGRldlRvb2xzQWdlbnQtPm1f
YXB1QWdlbnREZWxlZ2F0ZVN0dWIpIHsKLSAgICAgICAgZGV2VG9vbHNBZ2VudC0+bV9hcHVBZ2Vu
dERlbGVnYXRlU3R1Yi0+ZGlzcGF0Y2hUb0FwdShtZXNzYWdlKTsKKyAgICBpZiAoZGV2VG9vbHNB
Z2VudC0+bV9hcHVBZ2VudEVuYWJsZWQpIHsKKyAgICAgICAgbV9jbGllbnQtPnNlbmREaXNwYXRj
aFRvQVBVKG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTYwOCwx
MiArNTg3LDQgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50OjpzZXRNZXNzYWdlTG9vcERpc3BhdGNo
SGFuZGxlcihNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcgogICAgIERlYnVnZ2VyQWdlbnRNYW5h
Z2VyOjpzZXRNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcihoYW5kbGVyKTsKIH0KIAotYm9vbCBX
ZWJEZXZUb29sc0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKFdl
YkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogdHJhbnNwb3J0LCBjb25zdCBXZWJEZXZUb29sc01l
c3NhZ2VEYXRhJiBkYXRhKQotewotICAgIElPUlBDRGVsZWdhdGUgZGVsZWdhdGUodHJhbnNwb3J0
KTsKLSAgICBQcm9maWxlckFnZW50RGVsZWdhdGVTdHViIHN0dWIoJmRlbGVnYXRlKTsKLSAgICBQ
cm9maWxlckFnZW50SW1wbCBhZ2VudCgmc3R1Yik7Ci0gICAgcmV0dXJuIFByb2ZpbGVyQWdlbnRE
aXNwYXRjaDo6ZGlzcGF0Y2goJmFnZW50LCBkYXRhKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggYzhl
MjJiMC4uMjU0N2I1OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAK
LSNpbmNsdWRlICJBUFVBZ2VudERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIK
ICNpbmNsdWRlICJUb29sc0FnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZh
dGUuaCIKQEAgLTUzLDYgKzUyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERlYnVn
Z2VyQWdlbnREZWxlZ2F0ZVN0dWI7CiBjbGFzcyBEZWJ1Z2dlckFnZW50SW1wbDsKK2NsYXNzIFBy
b2ZpbGVyQWdlbnREZWxlZ2F0ZVN0dWI7CitjbGFzcyBQcm9maWxlckFnZW50SW1wbDsKIGNsYXNz
IFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkZyYW1l
SW1wbDsKQEAgLTEzMCwxMCArMTMxLDEwIEBAIHByaXZhdGU6CiAgICAgaW50IG1faG9zdElkOwog
ICAgIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIG1fY2xpZW50OwogICAgIFdlYlZpZXdJbXBsKiBt
X3dlYlZpZXdJbXBsOwotICAgIE93blB0cjxEZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViPiBtX2Rl
YnVnZ2VyQWdlbnREZWxlZ2F0ZVN0dWI7CiAgICAgT3duUHRyPFRvb2xzQWdlbnREZWxlZ2F0ZVN0
dWI+IG1fdG9vbHNBZ2VudERlbGVnYXRlU3R1YjsKKyAgICBPd25QdHI8UHJvZmlsZXJBZ2VudERl
bGVnYXRlU3R1Yj4gbV9wcm9maWxlckFnZW50RGVsZWdhdGVTdHViOwogICAgIE93blB0cjxEZWJ1
Z2dlckFnZW50SW1wbD4gbV9kZWJ1Z2dlckFnZW50SW1wbDsKLSAgICBPd25QdHI8QXB1QWdlbnRE
ZWxlZ2F0ZVN0dWI+IG1fYXB1QWdlbnREZWxlZ2F0ZVN0dWI7CisgICAgT3duUHRyPFByb2ZpbGVy
QWdlbnRJbXBsPiBtX3Byb2ZpbGVyQWdlbnRJbXBsOwogICAgIGJvb2wgbV9hcHVBZ2VudEVuYWJs
ZWQ7CiAgICAgYm9vbCBtX3Jlc291cmNlVHJhY2tpbmdXYXNFbmFibGVkOwogICAgIGJvb2wgbV9h
dHRhY2hlZDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9u
dGVuZEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1w
bC5jcHAKaW5kZXggNTkyYTUzMi4uOGEzNjQ1ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRl
ICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUl0ZW0uaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlckFnZW50LmgiCiAjaW5j
bHVkZSAiRGV2VG9vbHNSUENKUy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKQEAgLTc4LDcgKzc3LDYgQEAgc3RhdGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBU
b1Y4U3RyaW5nKGNvbnN0IFN0cmluZyYgcykKICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzLmNoYXJhY3RlcnMoKSksIHMubGVuZ3Ro
KCkpOwogfQogCi1ERUZJTkVfUlBDX0pTX0JPVU5EX09CSihEZWJ1Z2dlckFnZW50LCBERUJVR0dF
Ul9BR0VOVF9TVFJVQ1QsIERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSwgREVCVUdHRVJfQUdFTlRfREVM
RUdBVEVfU1RSVUNUKQogREVGSU5FX1JQQ19KU19CT1VORF9PQkooUHJvZmlsZXJBZ2VudCwgUFJP
RklMRVJfQUdFTlRfU1RSVUNULCBQcm9maWxlckFnZW50RGVsZWdhdGUsIFBST0ZJTEVSX0FHRU5U
X0RFTEVHQVRFX1NUUlVDVCkKIERFRklORV9SUENfSlNfQk9VTkRfT0JKKFRvb2xzQWdlbnQsIFRP
T0xTX0FHRU5UX1NUUlVDVCwgVG9vbHNBZ2VudERlbGVnYXRlLCBUT09MU19BR0VOVF9ERUxFR0FU
RV9TVFJVQ1QpCiAKQEAgLTExMyw3ICsxMTEsNiBAQCBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6
V2ViRGV2VG9vbHNGcm9udGVuZEltcGwoCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAg
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGZyYW1lQ29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQo
ZnJhbWUtPmZyYW1lKCkpOwogCi0gICAgbV9kZWJ1Z2dlckFnZW50T2JqLnNldChuZXcgSlNEZWJ1
Z2dlckFnZW50Qm91bmRPYmoodGhpcywgZnJhbWVDb250ZXh0LCAiUmVtb3RlRGVidWdnZXJBZ2Vu
dCIpKTsKICAgICBtX3Byb2ZpbGVyQWdlbnRPYmouc2V0KG5ldyBKU1Byb2ZpbGVyQWdlbnRCb3Vu
ZE9iaih0aGlzLCBmcmFtZUNvbnRleHQsICJSZW1vdGVQcm9maWxlckFnZW50IikpOwogICAgIG1f
dG9vbHNBZ2VudE9iai5zZXQobmV3IEpTVG9vbHNBZ2VudEJvdW5kT2JqKHRoaXMsIGZyYW1lQ29u
dGV4dCwgIlJlbW90ZVRvb2xzQWdlbnQiKSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuaAppbmRleCBmYTQ3MDdkLi43MTZmNGY3IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5oCkBAIC00OSw3ICs0OSw2
IEBAIGNsYXNzIFN0cmluZzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEpTRGVidWdn
ZXJBZ2VudEJvdW5kT2JqOwogY2xhc3MgSlNQcm9maWxlckFnZW50Qm91bmRPYmo7CiBjbGFzcyBK
U1Rvb2xzQWdlbnRCb3VuZE9iajsKIGNsYXNzIFdlYkRldlRvb2xzQ2xpZW50RGVsZWdhdGU7CkBA
IC04Myw3ICs4Miw2IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJW
aWV3SW1wbDsKICAgICBXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQqIG1fY2xpZW50
OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uTG9jYWxlOwotICAgIE93blB0cjxKU0RlYnVnZ2Vy
QWdlbnRCb3VuZE9iaj4gbV9kZWJ1Z2dlckFnZW50T2JqOwogICAgIE93blB0cjxKU1Byb2ZpbGVy
QWdlbnRCb3VuZE9iaj4gbV9wcm9maWxlckFnZW50T2JqOwogICAgIE93blB0cjxKU1Rvb2xzQWdl
bnRCb3VuZE9iaj4gbV90b29sc0FnZW50T2JqOwogICAgIGJvb2wgbV9sb2FkZWQ7Cg==
</data>
<flag name="review"
          id="51513"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63243</attachid>
            <date>2010-08-02 11:49:45 -0700</date>
            <delta_ts>2010-08-02 13:27:58 -0700</delta_ts>
            <desc>[PATCH] Now I removed all agents + RPC itself.</desc>
            <filename>remove_devtools_rpc</filename>
            <type>text/plain</type>
            <size>89968</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTM2YjQyMi4uMTIzY2Y2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wOC0wMiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBEZXZUb29sczogR2V0IHJpZCBvZiBEZXZUb29s
cyBSUEMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzMzM1CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OmdldFByb2ZpbGVyTG9nTGluZXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFByb2ZpbGVyOjpnZXRQcm9maWxlckxvZ0xpbmVzKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY3JpcHRQcm9maWxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckJhY2tlbmQ6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZXJMb2dMaW5lcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNhYmxlUHJvZmlsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yik6CisKIDIwMTAtMDgtMDEgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGlyayBTY2h1bHplLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9m
aWxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCmluZGV4IDE2MTk1
YTMuLjdkOWRiNWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmls
ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKQEAgLTQwLDYg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHN0YXJ0KFNjcmlwdFN0YXRlKiBzdGF0
ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0UHJv
ZmlsZT4gc3RvcChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAg
IHN0YXRpYyB2b2lkIHRha2VIZWFwU25hcHNob3QoKSB7IH0KKyAgICBzdGF0aWMgbG9uZyBnZXRQ
cm9maWxlckxvZ0xpbmVzKGxvbmcsIFN0cmluZyopIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCA0ODkxODky
Li45MjEzNzc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVy
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtNTks
NCArNTksMTQgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdCgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdjg6OlBST0ZJTEVSX01PRFVMRV9KU19DT05TVFJV
Q1RPUlMpOwogfQogCitsb25nIFNjcmlwdFByb2ZpbGVyOjpnZXRQcm9maWxlckxvZ0xpbmVzKGxv
bmcgcG9zaXRpb24sIFN0cmluZyogZGF0YSkKK3sKKyAgICBzdGF0aWMgY2hhciBidWZmZXJbNjU1
MzZdOworICAgIGNvbnN0IGludCByZWFkU2l6ZSA9IHY4OjpWODo6R2V0TG9nTGluZXMocG9zaXRp
b24sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxKTsKKyAgICBidWZmZXJbcmVhZFNpemVdID0g
J1wwJzsKKyAgICBwb3NpdGlvbiArPSByZWFkU2l6ZTsKKyAgICAqZGF0YSA9IGJ1ZmZlcjsKKyAg
ICByZXR1cm4gcG9zaXRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZXIuaAppbmRleCBhZmYzY2U3Li41YzEwNTRiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUq
IHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCB0YWtlSGVhcFNu
YXBzaG90KCk7CisgICAgc3RhdGljIGxvbmcgZ2V0UHJvZmlsZXJMb2dMaW5lcyhsb25nIHBvc2l0
aW9uLCBTdHJpbmcqIGRhdGEpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKaW5kZXggMTU1YmZjZC4uY2YzZjY4NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsCkBAIC05OCw2ICs5OCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBjbGVh
clByb2ZpbGVzKCk7CiAKICAgICAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KCk7CisgICAgICAg
IHZvaWQgZ2V0UHJvZmlsZXJMb2dMaW5lcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBpblBvc2l0
aW9uLCBvdXQgbG9uZyBvdXRQb3NpdGlvbiwgb3V0IFN0cmluZyBsb2cpOwogI2VuZGlmCiAgICAg
ICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNjcmlwdFNvdXJjZSk7
CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBp
biBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIFN0cmluZyBtZXRob2ROYW1lLCBpbiBTdHJpbmcg
YXJndW1lbnRzLCBpbiBib29sZWFuIGFzeW5jKTsKQEAgLTE1Nyw1ICsxNTgsNiBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGlu
IGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBpbiBTdHJpbmcgdmFsdWUpOwogICAgICAg
ICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3Jh
Z2VJZCwgaW4gU3RyaW5nIGtleSk7CiAjZW5kaWYKKwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuY3BwCmluZGV4IGYyN2I4MTIuLjNiZGNjZGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAi
UmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgog
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQpAQCAtMjkyLDggKzI5MywxOCBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmNsZWFyUHJv
ZmlsZXMoKQogCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnRha2VIZWFwU25hcHNob3QoKQogewot
ICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+dGFrZUhlYXBTbmFwc2hvdCgpOworICAgIFNjcmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNu
YXBzaG90KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZXJMb2dMaW5l
cyhsb25nIGNhbGxJZCwgbG9uZyBwb3NpdGlvbikKK3sKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxk
IG1ha2UgaW5zcGVjdG9yIGRpc3BhdGNoZXIgcGx1Z2dhYmxlLCBzbyB0aGF0IGVtYmVkZGVycyBj
b3VsZCBjb250cmlidXRlIEFQSXMgaW5zdGVhZCBvZiBwb2xsdXRpbmcgdGhlIGNvcmUgb25lCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzU3CisgICAg
aWYgKFJlbW90ZUluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCA9IHJlbW90ZUZyb250ZW5kKCkp
IHsKKyAgICAgICAgU3RyaW5nIGRhdGE7CisgICAgICAgIGludCBvdXRQb3NpdGlvbiA9IFNjcmlw
dFByb2ZpbGVyOjpnZXRQcm9maWxlckxvZ0xpbmVzKHBvc2l0aW9uLCAmZGF0YSk7CisgICAgICAg
IGZyb250ZW5kLT5kaWRHZXRQcm9maWxlckxvZ0xpbmVzKGNhbGxJZCwgb3V0UG9zaXRpb24sIGRh
dGEpOworICAgIH0KIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgK
aW5kZXggMTZkNTNjMC4uM2EyMTU5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJvZmlsZXMoKTsK
IAogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdCgpOworICAgIHZvaWQgZ2V0UHJvZmlsZXJMb2dM
aW5lcyhsb25nIGNhbGxJZCwgbG9uZyBwb3NpdGlvbik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0
SW5qZWN0ZWRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlMjljN2FlLi45MTRjYTdlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY4NywxNCArMTY4
Nyw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVByb2ZpbGVyKGJvb2wgYWx3
YXlzKQogICAgIGlmIChtX2Zyb250ZW5kKQogICAgICAgICBtX2Zyb250ZW5kLT5wcm9maWxlcldh
c0Rpc2FibGVkKCk7CiB9Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6dGFrZUhlYXBTbmFw
c2hvdCgpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNj
cmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90KCk7Ci19CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IDE3NmRkMTEuLjAxNTNkOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTI2MCw4ICsyNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxl
UHJvZmlsZXIoYm9vbCBhbHdheXMgPSBmYWxzZSk7CiAgICAgYm9vbCBwcm9maWxlckVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBlbmFibGVkKCkgJiYgbV9wcm9maWxlckVuYWJsZWQ7IH0KIAotICAg
IHZvaWQgdGFrZUhlYXBTbmFwc2hvdCgpOwotCiAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcigpOwog
ICAgIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzID0gZmFsc2UpOwogICAgIGJvb2wg
ZGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckVuYWJsZWQ7IH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IGU2NTY3YmUuLjM4NDJkODUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGlkRGVzdHJveVdvcmtlcihjb25zdCBJ
bnNwZWN0b3JXb3JrZXJSZXNvdXJjZSYpOwogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVIpCiAKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUiAmJiAhVVNFKEpTQykKKyAgICAgICAgdm9pZCBkaWRHZXRBY3RpdmVQcm9maWxl
ck1vZHVsZXMoaW50IGZsYWdzKTsKKyAgICAgICAgdm9pZCBkaWRHZXRQcm9maWxlckxvZ0xpbmVz
KGludCBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyNlbmRpZgorCiAgICAgICAgIHZv
aWQgZGlkR2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0QXJyYXkmIGNvb2tpZXMs
IGNvbnN0IFN0cmluZyYgY29va2llc1N0cmluZyk7CiAgICAgICAgIHZvaWQgZGlkRGlzcGF0Y2hP
bkluamVjdGVkU2NyaXB0KGxvbmcgY2FsbElkLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJlc3Vs
dCwgYm9vbCBpc0V4Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcwppbmRleCA3Y2ZjOGExLi5mY2IwYjJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHVi
LmpzCkBAIC04MSw2ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1YiA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzdG9wVGltZWxpbmVQcm9m
aWxlciIpOwogICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0b3JlTGFzdEFjdGl2ZVBhbmVs
Iik7CiAgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgidGFrZUhlYXBTbmFwc2hvdCIpOworICAg
IHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldFByb2ZpbGVyTG9nTGluZXMiKTsKIAogICAgIHRo
aXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldEFsbFN0eWxlcyIpOwogICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoImdldFN0eWxlcyIpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTM4OTUyNS4uOTllODE5OSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTAtMDgtMDIgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hyb21pdW0gRGV2VG9vbHM6IEdldCByaWQgb2YgRGV2VG9vbHMg
UlBDLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MzMzNQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9v
bHNBZ2VudC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmRNZXNzYWdlVG9JbnNw
ZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6
OnNlbmREZWJ1Z2dlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRD
bGllbnQ6OnNlbmREaXNwYXRjaFRvQVBVKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNG
cm9udGVuZC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQ6OnNlbmRNZXNzYWdl
VG9CYWNrZW5kKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvQVBVQWdlbnREZWxlZ2F0ZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9EZWJ1Z2dlckFnZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0RlYnVn
Z2VyQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGVidWdnZXJBZ2VudEltcGw6OkRl
YnVnZ2VyQWdlbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6RGVidWdnZXJBZ2VudEltcGw6OmRl
YnVnZ2VyT3V0cHV0KToKKyAgICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudEltcGwuaDoKKyAgICAg
ICAgKiBzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6ZGVidWdEZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6b25WOERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkRlYnVn
Z2VyQWdlbnRNYW5hZ2VyOjpleGVjdXRlRGVidWdnZXJDb21tYW5kKToKKyAgICAgICAgKFdlYktp
dDo6RGVidWdnZXJBZ2VudE1hbmFnZXI6OnNlbmRDb21tYW5kVG9WOCk6CisgICAgICAgIChXZWJL
aXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29udGludWVDb21tYW5kVG9WOCk6CisgICAg
ICAgICogc3JjL0RldlRvb2xzUlBDLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0RldlRvb2xz
UlBDSlMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgICogc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0JhY2tl
bmQpOgorICAgICAgICAqIHNyYy9Qcm9maWxlckFnZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
c3JjL1Byb2ZpbGVyQWdlbnRJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvUHJvZmls
ZXJBZ2VudEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvVG9vbHNBZ2VudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpXZWJEZXZU
b29sc0FnZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjph
dHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkQ2xlYXJX
aW5kb3dPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlz
cGF0Y2hPbkluc3BlY3RvckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Fn
ZW50SW1wbDo6anNEaXNwYXRjaE9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9v
bHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZEltcGw6OldlYkRldlRv
b2xzRnJvbnRlbmRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZElt
cGw6OmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
dlRvb2xzRnJvbnRlbmRJbXBsOjpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzRnJvbnRlbmRJbXBsOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBzcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuaDoKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6Cisg
ICAgICAgIChkZXZ0b29scy5kaXNwYXRjaCk6CisgICAgICAgIChkZXZ0b29scy5Ub29sc0FnZW50
KToKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHNIb3N0U3R1Yi5qczoKKyAgICAgICAgKiBzcmMv
anMvUHJvZmlsZXJBZ2VudC5qczoKKyAgICAgICAgKGRldnRvb2xzLlByb2ZpbGVyQWdlbnQpOgor
ICAgICAgICAoZGV2dG9vbHMuUHJvZmlsZXJBZ2VudC5wcm90b3R5cGUuX2dldE5leHRMb2dMaW5l
cy5lbHNlLmRlbGF5ZWRSZXF1ZXN0KToKKyAgICAgICAgKGRldnRvb2xzLlByb2ZpbGVyQWdlbnQu
cHJvdG90eXBlLl9nZXROZXh0TG9nTGluZXMpOgorICAgICAgICAoZGV2dG9vbHMuUHJvZmlsZXJB
Z2VudC5wcm90b3R5cGUuX2RpZEdldFByb2ZpbGVyTG9nTGluZXMpOgorICAgICAgICAqIHNyYy9q
cy9Qcm9maWxlclByb2Nlc3Nvci5qczoKKyAgICAgICAgKGRldnRvb2xzLnByb2ZpbGVyLlByb2Nl
c3Nvci5wcm90b3R5cGUucHJpbnRFcnJvcik6CisKIDIwMTAtMDctMjcgIEx1aXogQWdvc3Rpbmkg
IDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAwMTM4NTU0Li5hNmFiOTRmIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cApAQCAtMTQyLDggKzE0Miw2IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZU
b29sc0FnZW50Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNG
cm9udGVuZC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRD
bGllbnQuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VEYXRh
LmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRG9jdW1lbnQuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJEcmFnRGF0YS5oJywKQEAgLTI3MSw3ICsyNjksNiBAQAogICAgICAgICAgICAgICAgICdw
dWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
d2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvd2lu
L1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLAotICAgICAgICAgICAgICAgICdzcmMvQVBVQWdlbnRE
ZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAnLApAQCAtMjky
LDEzICsyODksMTAgQEAKICAgICAgICAgICAgICAgICAnc3JjL0NvbnRleHRNZW51Q2xpZW50SW1w
bC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAnLAotICAgICAgICAgICAg
ICAgICdzcmMvRGVidWdnZXJBZ2VudC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2Vy
QWdlbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5oJywKLSAgICAgICAgICAgICAg
ICAnc3JjL0RldlRvb2xzUlBDLmgnLAotICAgICAgICAgICAgICAgICdzcmMvRGV2VG9vbHNSUENK
Uy5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9EcmFnQ2xpZW50SW1wbC5jcHAnLApAQCAtMzQzLDkgKzMzNyw2IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9Ob3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCcsCi0gICAgICAgICAgICAgICAg
J3NyYy9Qcm9maWxlckFnZW50LmgnLAotICAgICAgICAgICAgICAgICdzcmMvUHJvZmlsZXJBZ2Vu
dEltcGwuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1Byb2ZpbGVyQWdlbnRJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvUmVzb3VyY2VIYW5kbGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1NvY2tldFN0cmVhbUhhbmRsZS5jcHAnLApAQCAtMzU5LDcgKzM1MCw2IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1RlbXBv
cmFyeUdsdWUuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9Ub29sc0FnZW50LmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRldlRvb2xzQWdlbnQuaAppbmRleCAwZTI2Y2M5Li5kOWY5Y2NhIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2aWdhdGUoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURh
dGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kKGNv
bnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RF
bGVtZW50QXQoY29uc3QgV2ViUG9pbnQmKSA9IDA7CiAKQEAgLTcyLDggKzcyLDYgQEAgcHVibGlj
OgogICAgIC8vIEFzeW5jaHJvbm91c2x5IHJlcXVlc3QgZGVidWdnZXIgdG8gcGF1c2UgaW1tZWRp
YXRlbHkuCiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBkZWJ1Z2dlclBhdXNlU2NyaXB0KCk7
CiAKLSAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVu
ZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0KiwgY29uc3QgV2ViRGV2VG9v
bHNNZXNzYWdlRGF0YSYpOwotCiAgICAgdHlwZWRlZiB2b2lkICgqTWVzc2FnZUxvb3BEaXNwYXRj
aEhhbmRsZXIpKCk7CiAKICAgICAvLyBJbnN0YWxscyBkaXNwYXRjaCBoYW5kbGUgdGhhdCBpcyBn
b2luZyB0byBiZSBjYWxsZWQgcGVyaW9kaWNhbGx5CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCmluZGV4IDkxZmQzZTguLjA4YmRkNTggMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCkBAIC00
MCw3ICs0MCw5IEBAIHN0cnVjdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhOwogCiBjbGFzcyBXZWJE
ZXZUb29sc0FnZW50Q2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFdlYlN0cmluZyYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZW5kRGVidWdnZXJPdXRwdXQoY29uc3QgV2ViU3RyaW5n
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlbmREaXNwYXRjaFRvQVBVKGNvbnN0IFdlYlN0cmlu
ZyYpIHsgfQogCiAgICAgLy8gSW52YWxpZGF0ZXMgd2lkZ2V0IHdoaWNoIGxlYWRzIHRvIHRoZSBy
ZXBhaW50LgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZC5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgKaW5kZXggZDk1ZjM1YS4uMDMyNWY5
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5k
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgKQEAg
LTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJEZXZUb29sc0Zyb250
ZW5kQ2xpZW50OwogY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViVmlldzsKLXN0cnVjdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhOwogCiAvLyBXZWJEZXZUb29sc0Zyb250ZW5kIHJlcHJlc2VudHMg
RGV2VG9vbHMgY2xpZW50IHNpdHRpbmcgaW4gdGhlIEdsdWUuIEl0IHByb3ZpZGVzCiAvLyBkaXJl
Y3QgYW5kIGRlbGVnYXRlIEFwaXMgdG8gdGhlIGhvc3QuCkBAIC01MCw3ICs0OSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfldlYkRldlRvb2xzRnJvbnRlbmQoKSB7fQogCi0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21BZ2VudChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VE
YXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uSW5zcGVjdG9yRnJvbnRlbmQo
Y29uc3QgV2ViU3RyaW5nJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oCmlu
ZGV4IDE1OWEzY2QuLmI4NzZjMzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdlYkRl
dlRvb2xzRnJvbnRlbmRDbGllbnQgewogcHVibGljOgogICAgIFdlYkRldlRvb2xzRnJvbnRlbmRD
bGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQWdlbnQoY29uc3Qg
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2Fn
ZVRvQmFja2VuZChjb25zdCBXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VuZERl
YnVnZ2VyQ29tbWFuZFRvQWdlbnQoY29uc3QgV2ViU3RyaW5nJiBjb21tYW5kKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2VuZERlYnVnZ2VyUGF1c2VTY3JpcHQoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VEYXRhLmggYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWJmOWFjZC4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdlYkRldlRvb2xzTWVzc2FnZURhdGFfaAotI2RlZmluZSBXZWJEZXZUb29sc01l
c3NhZ2VEYXRhX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgotI2luY2x1ZGUgIldlYlZlY3Rvci5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3Ry
dWN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEgewotICAgIFdlYlN0cmluZyBjbGFzc05hbWU7Ci0g
ICAgV2ViU3RyaW5nIG1ldGhvZE5hbWU7Ci0gICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJndW1l
bnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaCBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YzA3ZjEuLjAwMDAwMDAKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydF9oCi0j
ZGVmaW5lIFdlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydF9oCi0KLSNpbmNsdWRlICJXZWJDU3Ry
aW5nLmgiCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotc3Ry
dWN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGE7Ci0KLWNsYXNzIFdlYkRldlRvb2xzTWVzc2FnZVRy
YW5zcG9ydCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNw
b3J0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZE9uSU9UaHJl
YWQoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQVBV
QWdlbnREZWxlZ2F0ZS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9BUFVBZ2VudERlbGVnYXRlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwYmU3MDIuLjAwMDAwMDAKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9BUFVBZ2VudERlbGVnYXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBBUFVBZ2VudERlbGVnYXRlX2gKLSNkZWZpbmUgQVBVQWdlbnREZWxl
Z2F0ZV9oCi0KLSNpbmNsdWRlICJEZXZUb29sc1JQQy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotI2RlZmluZSBBUFVfQUdFTlRfREVMRUdBVEVfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1F
VEhPRDIsIE1FVEhPRDMsIE1FSFRPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBTZW5kcyBhIGpzb24g
b2JqZWN0IHRvIGFwdS4gKi8gXAotICAgIE1FVEhPRDEoZGlzcGF0Y2hUb0FwdSwgU3RyaW5nIC8q
IGRhdGEgKi8pCi0KLURFRklORV9SUENfQ0xBU1MoQXB1QWdlbnREZWxlZ2F0ZSwgQVBVX0FHRU5U
X0RFTEVHQVRFX1NUUlVDVCkKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50LmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0RlYnVnZ2VyQWdlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTdjZGUxMS4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERlYnVnZ2VyQWdlbnRfaAot
I2RlZmluZSBEZWJ1Z2dlckFnZW50X2gKLQotI2luY2x1ZGUgIkRldlRvb2xzUlBDLmgiCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi0jZGVmaW5lIERFQlVHR0VSX0FHRU5UX1NUUlVDVChNRVRIT0Qw
LCBNRVRIT0QxLCBNRVRIT0QyLCBNRVRIT0QzLCBNRVRIT0Q0LCBNRVRIT0Q1KSBcCi0gICAgLyog
UmVxdWVzdHMgZ2xvYmFsIGNvbnRleHQgaWQgb2YgdGhlIGluc3BlY3RlZCB0YWIuICovIFwKLSAg
ICBNRVRIT0QwKGdldENvbnRleHRJZCkgXAotICAgIFwKLSAgICAvKiBSZXF1ZXN0IHY4IHRvIHBy
b2Nlc3MgYWxsIGRlYnVnIGNvbW1hbmRzIGluIHRoZSBxdWV1ZS4gKi8gXAotICAgIE1FVEhPRDAo
cHJvY2Vzc0RlYnVnQ29tbWFuZHMpCi0KLURFRklORV9SUENfQ0xBU1MoRGVidWdnZXJBZ2VudCwg
REVCVUdHRVJfQUdFTlRfU1RSVUNUKQotCi0jZGVmaW5lIERFQlVHR0VSX0FHRU5UX0RFTEVHQVRF
X1NUUlVDVChNRVRIT0QwLCBNRVRIT0QxLCBNRVRIT0QyLCBNRVRIT0QzLCBNRVRIT0Q0LCBNRVRI
T0Q1KSBcCi0gICAgTUVUSE9EMShkZWJ1Z2dlck91dHB1dCwgU3RyaW5nIC8qIG91dHB1dCB0ZXh0
ICovKSBcCi0gICAgXAotICAgIC8qIFB1c2hlcyBkZWJ1Z2dlciBjb250ZXh0IGlkIGludG8gdGhl
IGNsaWVudC4gKi8gXAotICAgIE1FVEhPRDEoc2V0Q29udGV4dElkLCBpbnQgLyogY29udGV4dCBp
ZCAqLykKLQotREVGSU5FX1JQQ19DTEFTUyhEZWJ1Z2dlckFnZW50RGVsZWdhdGUsIERFQlVHR0VS
X0FHRU5UX0RFTEVHQVRFX1NUUlVDVCkKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcAppbmRleCBkZGU5ZTFk
Li40ZGM0MGE4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1
Z1NlcnZlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIldlYkRldlRvb2xz
QWdlbnRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgogI2luY2x1
ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTUzLDExICs1
NCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRGVidWdnZXJBZ2VudEltcGw6OkRlYnVnZ2Vy
QWdlbnRJbXBsKAogICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwKLSAgICBEZWJ1Z2dlckFn
ZW50RGVsZWdhdGUqIGRlbGVnYXRlLAotICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiB3ZWJkZXZ0
b29sc0FnZW50KQorICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiB3ZWJkZXZ0b29sc0FnZW50LAor
ICAgIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIHdlYmRldnRvb2xzQWdlbnRDbGllbnQpCiAgICAg
OiBtX3dlYlZpZXdJbXBsKHdlYlZpZXdJbXBsKQotICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkK
ICAgICAsIG1fd2ViZGV2dG9vbHNBZ2VudCh3ZWJkZXZ0b29sc0FnZW50KQorICAgICwgbV93ZWJk
ZXZ0b29sc0FnZW50Q2xpZW50KHdlYmRldnRvb2xzQWdlbnRDbGllbnQpCiAgICAgLCBtX2F1dG9D
b250aW51ZU9uRXhjZXB0aW9uKGZhbHNlKQogewogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpk
ZWJ1Z0F0dGFjaCh0aGlzKTsKQEAgLTY4LDIwICs2OSw5IEBAIERlYnVnZ2VyQWdlbnRJbXBsOjp+
RGVidWdnZXJBZ2VudEltcGwoKQogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpkZWJ1Z0RldGFj
aCh0aGlzKTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFnZW50SW1wbDo6Z2V0Q29udGV4dElkKCkKLXsK
LSAgICBtX2RlbGVnYXRlLT5zZXRDb250ZXh0SWQobV93ZWJkZXZ0b29sc0FnZW50LT5ob3N0SWQo
KSk7Ci19Ci0KLXZvaWQgRGVidWdnZXJBZ2VudEltcGw6OnByb2Nlc3NEZWJ1Z0NvbW1hbmRzKCkK
LXsKLSAgICBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6VXRpbGl0eUNvbnRleHRTY29wZSB1dGlsaXR5
U2NvcGU7Ci0gICAgdjg6OkRlYnVnOjpQcm9jZXNzRGVidWdNZXNzYWdlcygpOwotfQotCiB2b2lk
IERlYnVnZ2VyQWdlbnRJbXBsOjpkZWJ1Z2dlck91dHB1dChjb25zdCBTdHJpbmcmIGNvbW1hbmQp
CiB7Ci0gICAgbV9kZWxlZ2F0ZS0+ZGVidWdnZXJPdXRwdXQoY29tbWFuZCk7CisgICAgbV93ZWJk
ZXZ0b29sc0FnZW50Q2xpZW50LT5zZW5kRGVidWdnZXJPdXRwdXQoY29tbWFuZCk7CiAgICAgbV93
ZWJkZXZ0b29sc0FnZW50LT5mb3JjZVJlcGFpbnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9E
ZWJ1Z2dlckFnZW50SW1wbC5oCmluZGV4IDBlNmU2YWYuLmQ4YjEzZmQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmgKQEAgLTMxLDggKzMxLDYgQEAKICNpZm5kZWYgRGVi
dWdnZXJBZ2VudEltcGxfaAogI2RlZmluZSBEZWJ1Z2dlckFnZW50SW1wbF9oCiAKLSNpbmNsdWRl
ICJEZWJ1Z2dlckFnZW50LmgiCi0KICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00NywyMCArNDUsMTcgQEAg
Y2xhc3MgU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRGV2VG9vbHNB
Z2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRJbXBsOwogY2xhc3MgV2ViVmlld0lt
cGw7CiAKLWNsYXNzIERlYnVnZ2VyQWdlbnRJbXBsIDogcHVibGljIERlYnVnZ2VyQWdlbnQgewor
Y2xhc3MgRGVidWdnZXJBZ2VudEltcGwgewogcHVibGljOgogICAgIERlYnVnZ2VyQWdlbnRJbXBs
KFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLAotICAgICAgICAgICAgICAgICAgICAg
IERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSogZGVsZWdhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
V2ViRGV2VG9vbHNBZ2VudEltcGwqIHdlYmRldnRvb2xzQWdlbnQpOworICAgICAgICAgICAgICAg
ICAgICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiB3ZWJkZXZ0b29sc0FnZW50LAorICAgICAgICAg
ICAgICAgICAgICAgIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIHdlYmRldnRvb2xzQWdlbnRDbGll
bnQpOwogICAgIHZpcnR1YWwgfkRlYnVnZ2VyQWdlbnRJbXBsKCk7CiAKLSAgICAvLyBEZWJ1Z2dl
ckFnZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRDb250ZXh0SWQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlYnVnQ29tbWFuZHMoKTsKLQogICAgIHZvaWQgZGVi
dWdnZXJPdXRwdXQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBvdXQpOwogCiAgICAgdm9pZCBzZXRB
dXRvQ29udGludWVPbkV4Y2VwdGlvbihib29sIGF1dG9Db250aW51ZSkgeyBtX2F1dG9Db250aW51
ZU9uRXhjZXB0aW9uID0gYXV0b0NvbnRpbnVlOyB9CkBAIC04Nyw4ICs4Miw4IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOwotICAg
IERlYnVnZ2VyQWdlbnREZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBXZWJEZXZUb29sc0FnZW50
SW1wbCogbV93ZWJkZXZ0b29sc0FnZW50OworICAgIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIG1f
d2ViZGV2dG9vbHNBZ2VudENsaWVudDsKICAgICBib29sIG1fYXV0b0NvbnRpbnVlT25FeGNlcHRp
b247CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRN
YW5hZ2VyLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3Bw
CmluZGV4IDFjYzY3NDAuLjIzY2JkNzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
RGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdn
ZXJBZ2VudE1hbmFnZXIuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBEZWJ1Z2dlckFnZW50
TWFuYWdlcjo6ZGVidWdEZXRhY2goRGVidWdnZXJBZ2VudEltcGwqIGRlYnVnZ2VyQWdlbnQpCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgLy8gUmVtb3ZlIGFsbCBicmVha3BvaW50cyBz
ZXQgYnkgdGhlIGFnZW50LgotICAgICAgU3RyaW5nIGNsZWFyQnJlYWtwb2ludEdyb3VwQ21kID0g
U3RyaW5nOjpmb3JtYXQoCisgICAgICBXZWJDb3JlOjpTdHJpbmcgY2xlYXJCcmVha3BvaW50R3Jv
dXBDbWQgPSBXZWJDb3JlOjpTdHJpbmc6OmZvcm1hdCgKICAgICAgICAgICAie1wic2VxXCI6MSxc
InR5cGVcIjpcInJlcXVlc3RcIixcImNvbW1hbmRcIjpcImNsZWFyYnJlYWtwb2ludGdyb3VwXCIs
IgogICAgICAgICAgICAgICAiXCJhcmd1bWVudHNcIjp7XCJncm91cElkXCI6JWR9fSIsCiAgICAg
ICAgICAgaG9zdElkKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5h
Z2VyOjpvblY4RGVidWdNZXNzYWdlKGNvbnN0IHY4OjpEZWJ1Zzo6TWVzc2FnZSYgbWVzc2FnZSkK
IHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OlN0cmluZzo6VmFsdWUgdmFs
dWUobWVzc2FnZS5HZXRKU09OKCkpOwotICAgIFN0cmluZyBvdXQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVQ2hhcio+KCp2YWx1ZSksIHZhbHVlLmxlbmd0aCgpKTsKKyAgICBXZWJDb3JlOjpTdHJp
bmcgb3V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPigqdmFsdWUpLCB2YWx1ZS5sZW5n
dGgoKSk7CiAKICAgICAvLyBJZiBjYWxsZXJEYXRhIGlzIG5vdCAwIHRoZSBtZXNzYWdlIGlzIGEg
cmVzcG9uc2UgdG8gYSBkZWJ1Z2dlciBjb21tYW5kLgogICAgIGlmICh2ODo6RGVidWc6OkNsaWVu
dERhdGEqIGNhbGxlckRhdGEgPSBtZXNzYWdlLkdldENsaWVudERhdGEoKSkgewpAQCAtMjQ4LDcg
KzI0OCw3IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnBhdXNlU2NyaXB0KCkKICAgICAg
ICAgdjg6OkRlYnVnOjpEZWJ1Z0JyZWFrKCk7CiB9CiAKLXZvaWQgRGVidWdnZXJBZ2VudE1hbmFn
ZXI6OmV4ZWN1dGVEZWJ1Z2dlckNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBpbnQgY2Fs
bGVySWQpCit2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpleGVjdXRlRGVidWdnZXJDb21tYW5k
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgY29tbWFuZCwgaW50IGNhbGxlcklkKQogewogICAgIHNl
bmRDb21tYW5kVG9WOChjb21tYW5kLCBuZXcgQ2FsbGVySWRXcmFwcGVyKGNhbGxlcklkKSk7CiB9
CkBAIC0yODYsMTQgKzI4NiwxNCBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpvbk5hdmln
YXRlKCkKICAgICAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNlbmRDb250aW51ZUNvbW1hbmRU
b1Y4KCk7CiB9CiAKLXZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNlbmRDb21tYW5kVG9WOChj
b25zdCBTdHJpbmcmIGNtZCwgdjg6OkRlYnVnOjpDbGllbnREYXRhKiBkYXRhKQordm9pZCBEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6c2VuZENvbW1hbmRUb1Y4KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
Y21kLCB2ODo6RGVidWc6OkNsaWVudERhdGEqIGRhdGEpCiB7CiAgICAgdjg6OkRlYnVnOjpTZW5k
Q29tbWFuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oY21kLmNoYXJhY3RlcnMo
KSksIGNtZC5sZW5ndGgoKSwgZGF0YSk7CiB9CiAKIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6
OnNlbmRDb250aW51ZUNvbW1hbmRUb1Y4KCkKIHsKLSAgICBTdHJpbmcgY29udGludWVDbWQoIntc
InNlcVwiOjEsXCJ0eXBlXCI6XCJyZXF1ZXN0XCIsXCJjb21tYW5kXCI6XCJjb250aW51ZVwifSIp
OworICAgIFdlYkNvcmU6OlN0cmluZyBjb250aW51ZUNtZCgie1wic2VxXCI6MSxcInR5cGVcIjpc
InJlcXVlc3RcIixcImNvbW1hbmRcIjpcImNvbnRpbnVlXCJ9Iik7CiAgICAgc2VuZENvbW1hbmRU
b1Y4KGNvbnRpbnVlQ21kLCBuZXcgQ2FsbGVySWRXcmFwcGVyKCkpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0RldlRvb2xzUlBDLmggYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RldlRvb2xzUlBDLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNzY4MjEuLjAw
MDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZUb29sc1JQQy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0vLyBEZXZUb29scyBSUEMgc3Vic3lzdGVtIGlzIGEgc2ltcGxl
IHN0cmluZyBzZXJpYWxpemF0aW9uLWJhc2VkIHJwYwotLy8gaW1wbGVtZW50YXRpb24uIFRoZSBj
bGllbnQgaXMgcmVzcG9uc2libGUgZm9yIGRlZmluaW5nIHRoZSBScGMtZW5hYmxlZAotLy8gaW50
ZXJmYWNlIGluIHRlcm1zIG9mIGl0cyBtYWNyb3M6Ci0vLwotLy8gI2RlZmluZSBNWUFQSV9TVFJV
Q1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwgTUVUSE9EMykKLS8vICAgTUVUSE9EMChNZXRo
b2QxKQotLy8gICBNRVRIT0QxKE1ldGhvZDMsIGludCkKLS8vIChzbmlwcGV0IGFib3ZlIHNob3Vs
ZCBiZSBtdWx0aWxpbmUgbWFjcm8sIGFkZCB0cmFpbGluZyBiYWNrc2xhc2hlcykKLS8vCi0vLyBE
RUZJTkVfUlBDX0NMQVNTKE15QXBpLCBNWUFQSV9TVFJVQ1QpCi0vLwotLy8gVGhlIHNuaXBwZXQg
YWJvdmUgd2lsbCBnZW5lcmF0ZSB0aHJlZSBjbGFzc2VzOiBNeUFwaSwgTXlBcGlTdHViIGFuZAot
Ly8gTXlBcGlEaXNwYXRjaC4KLS8vCi0vLyAxLiBGb3IgZWFjaCBtZXRob2QgZGVmaW5lZCBpbiB0
aGUgbWFyY28gTXlBcGkgd2lsbCBoYXZlIGEKLS8vIHB1cmUgdmlydHVhbCBmdW5jdGlvbiBnZW5l
cmF0ZWQsIHNvIHRoYXQgTXlBcGkgd291bGQgbG9vayBsaWtlOgotLy8KLS8vIGNsYXNzIE15QXBp
IHsKLS8vIHByaXZhdGU6Ci0vLyAgICAgTXlBcGkoKSB7IH0KLS8vICAgICB+TXlBcGkoKSB7IH0K
LS8vICAgICB2aXJ0dWFsIHZvaWQgbWV0aG9kMSgpID0gMDsKLS8vICAgICB2aXJ0dWFsIHZvaWQg
bWV0aG9kMigKLS8vICAgICAgICAgaW50IHBhcmFtMSwKLS8vICAgICAgICAgY29uc3QgU3RyaW5n
JiBwYXJhbTIsCi0vLyAgICAgICAgIGNvbnN0IFZhbHVlJiBwYXJhbTMpID0gMDsKLS8vICAgICB2
aXJ0dWFsIHZvaWQgbWV0aG9kMyhpbnQgcGFyYW0xKSA9IDA7Ci0vLyB9OwotLy8KLS8vIDIuIE15
QXBpU3R1YiB3aWxsIGltcGxlbWVudCBNeUFwaSBpbnRlcmZhY2UgYW5kIHdvdWxkIHNlcmlhbGl6
ZSBhbGwgY2FsbHMKLS8vIGludG8gdGhlIHN0cmluZy1iYXNlZCBjYWxscyBvZiB0aGUgdW5kZXJs
eWluZyB0cmFuc3BvcnQ6Ci0vLwotLy8gRGV2VG9vbHNSUEM6OkRlbGVnYXRlKiB0cmFuc3BvcnQ7
Ci0vLyBteUFwaSA9IG5ldyBNeUFwaVN0dWIodHJhbnNwb3J0KTsKLS8vIG15QXBpLT5tZXRob2Qx
KCk7Ci0vLyBteUFwaS0+bWV0aG9kMygyKTsKLS8vCi0vLyAzLiBNeUFwaURlbGVnYXRlIGlzIGNh
cGFibGUgb2YgZGlzcGF0Y2hpbmcgdGhlIGNhbGxzIGFuZCBjb252ZXJ0IHRoZW0gdG8gdGhlCi0v
LyBjYWxscyB0byB0aGUgdW5kZXJseWluZyBNeUFwaSBtZXRob2RzOgotLy8KLS8vIE15QXBpKiBy
ZWFsT2JqZWN0OwotLy8gTXlBcGlEaXNwYXRjaDo6ZGlzcGF0Y2gocmVhbE9iamVjdCwgcmF3U3Ry
aW5nQ2FsbEdlbmVyYXRlZEJ5U3R1Yik7Ci0vLwotLy8gd2lsbCBtYWtlIGNvcnJlc3BvbmRpbmcg
Y2FsbHMgdG8gdGhlIHJlYWwgb2JqZWN0LgotCi0jaWZuZGVmIERldlRvb2xzUlBDX2gKLSNkZWZp
bmUgRGV2VG9vbHNSUENfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRl
ICJWZWN0b3IuaCIKLSNpbmNsdWRlICJXZWJEZXZUb29sc01lc3NhZ2VEYXRhLmgiCi0KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU3Ry
aW5nOwotfQotCi11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXVEY6OlZlY3RvcjsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFJQQyBkaXNwYXRjaCBtYWNybwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotc3RydWN0IFJwY1R5cGVUcmFpdCB7Ci0gICAgdHlwZWRlZiBUIEFwaVR5cGU7
Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgUnBjVHlwZVRyYWl0PGJvb2w+IHsKLSAgICB0eXBl
ZGVmIGJvb2wgQXBpVHlwZTsKLSAgICBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIHQpCi0gICAgewotICAgICAgICByZXR1cm4gdCA9PSAidHJ1ZSI7Ci0gICAgfQotICAg
IHN0YXRpYyBXZWJDb3JlOjpTdHJpbmcgdG9TdHJpbmcoYm9vbCBiKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGIgPyAidHJ1ZSIgOiAiZmFsc2UiOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0
cnVjdCBScGNUeXBlVHJhaXQ8aW50PiB7Ci0gICAgdHlwZWRlZiBpbnQgQXBpVHlwZTsKLSAgICBz
dGF0aWMgaW50IHBhcnNlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdCkKLSAgICB7Ci0gICAgICAg
IGJvb2wgc3VjY2VzczsKLSAgICAgICAgaW50IGkgPSB0LnRvSW50U3RyaWN0KCZzdWNjZXNzKTsK
LSAgICAgICAgQVNTRVJUKHN1Y2Nlc3MpOwotICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAg
c3RhdGljIFdlYkNvcmU6OlN0cmluZyB0b1N0cmluZyhpbnQgaSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTdHJpbmc6Om51bWJlcihpKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+
Ci1zdHJ1Y3QgUnBjVHlwZVRyYWl0PFN0cmluZz4gewotICAgIHR5cGVkZWYgY29uc3QgU3RyaW5n
JiBBcGlUeXBlOwotICAgIHN0YXRpYyBTdHJpbmcgcGFyc2UoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiB0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHQ7Ci0gICAgfQotICAgIHN0YXRpYyBXZWJDb3Jl
OjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3RyaW5nJiB0KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHQ7Ci0gICAgfQotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotLy8gUlBDIEFwaSBtZXRob2QgZGVjbGFyYXRpb25zCi0KLSNkZWZp
bmUgVE9PTFNfUlBDX0FQSV9NRVRIT0QwKE1ldGhvZCkgXAotICAgIHZpcnR1YWwgdm9pZCBNZXRo
b2QoKSA9IDA7Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0FQSV9NRVRIT0QxKE1ldGhvZCwgVDEpIFwK
LSAgICB2aXJ0dWFsIHZvaWQgTWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46OkFwaVR5cGUgdDEpID0g
MDsKLQotI2RlZmluZSBUT09MU19SUENfQVBJX01FVEhPRDIoTWV0aG9kLCBUMSwgVDIpIFwKLSAg
ICB2aXJ0dWFsIHZvaWQgTWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46OkFwaVR5cGUgdDEsIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMj46OkFwaVR5cGUgdDIpID0gMDsK
LQotI2RlZmluZSBUT09MU19SUENfQVBJX01FVEhPRDMoTWV0aG9kLCBUMSwgVDIsIFQzKSBcCi0g
ICAgdmlydHVhbCB2b2lkIE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQxLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpBcGlUeXBlIHQyLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDM+OjpBcGlUeXBlIHQzKSA9IDA7
Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0FQSV9NRVRIT0Q0KE1ldGhvZCwgVDEsIFQyLCBUMywgVDQp
IFwKLSAgICB2aXJ0dWFsIHZvaWQgTWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46OkFwaVR5cGUgdDEs
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMj46OkFwaVR5cGUgdDIs
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMz46OkFwaVR5cGUgdDMs
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUND46OkFwaVR5cGUgdDQp
ID0gMDsKLQotI2RlZmluZSBUT09MU19SUENfQVBJX01FVEhPRDUoTWV0aG9kLCBUMSwgVDIsIFQz
LCBUNCwgVDUpIFwKLSAgICB2aXJ0dWFsIHZvaWQgTWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46OkFw
aVR5cGUgdDEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMj46OkFw
aVR5cGUgdDIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMz46OkFw
aVR5cGUgdDMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUND46OkFw
aVR5cGUgdDQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUNT46OkFw
aVR5cGUgdDUpID0gMDsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotLy8gUlBDIHN0dWIgbWV0aG9kIGltcGxlbWVudGF0aW9ucwotCi0j
ZGVmaW5lIFRPT0xTX1JQQ19TVFVCX01FVEhPRDAoTWV0aG9kKSBcCi0gICAgdmlydHVhbCB2b2lk
IE1ldGhvZCgpIHsgXAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBhcmdzOyBcCi0gICAgICAgIHRo
aXMtPnNlbmRScGNNZXNzYWdlKG1fY2xhc3NOYW1lLCAjTWV0aG9kLCBhcmdzKTsgXAotICAgIH0K
LQotI2RlZmluZSBUT09MU19SUENfU1RVQl9NRVRIT0QxKE1ldGhvZCwgVDEpIFwKLSAgICB2aXJ0
dWFsIHZvaWQgTWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46OkFwaVR5cGUgdDEpIHsgXAotICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBhcmdzKDEpOyBcCi0gICAgICAgIGFyZ3NbMF0gPSBScGNUeXBlVHJh
aXQ8VDE+Ojp0b1N0cmluZyh0MSk7IFwKLSAgICAgICAgdGhpcy0+c2VuZFJwY01lc3NhZ2UobV9j
bGFzc05hbWUsICNNZXRob2QsIGFyZ3MpOyBcCi0gICAgfQotCi0jZGVmaW5lIFRPT0xTX1JQQ19T
VFVCX01FVEhPRDIoTWV0aG9kLCBUMSwgVDIpIFwKLSAgICB2aXJ0dWFsIHZvaWQgTWV0aG9kKFJw
Y1R5cGVUcmFpdDxUMT46OkFwaVR5cGUgdDEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJw
Y1R5cGVUcmFpdDxUMj46OkFwaVR5cGUgdDIpIHsgXAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBh
cmdzKDIpOyBcCi0gICAgICAgIGFyZ3NbMF0gPSBScGNUeXBlVHJhaXQ8VDE+Ojp0b1N0cmluZyh0
MSk7IFwKLSAgICAgICAgYXJnc1sxXSA9IFJwY1R5cGVUcmFpdDxUMj46OnRvU3RyaW5nKHQyKTsg
XAotICAgICAgICB0aGlzLT5zZW5kUnBjTWVzc2FnZShtX2NsYXNzTmFtZSwgI01ldGhvZCwgYXJn
cyk7IFwKLSAgICB9Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX1NUVUJfTUVUSE9EMyhNZXRob2QsIFQx
LCBUMiwgVDMpIFwKLSAgICB2aXJ0dWFsIHZvaWQgTWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46OkFw
aVR5cGUgdDEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMj46OkFw
aVR5cGUgdDIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMz46OkFw
aVR5cGUgdDMpIHsgXAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBhcmdzKDMpOyBcCi0gICAgICAg
IGFyZ3NbMF0gPSBScGNUeXBlVHJhaXQ8VDE+Ojp0b1N0cmluZyh0MSk7IFwKLSAgICAgICAgYXJn
c1sxXSA9IFJwY1R5cGVUcmFpdDxUMj46OnRvU3RyaW5nKHQyKTsgXAotICAgICAgICBhcmdzWzJd
ID0gUnBjVHlwZVRyYWl0PFQzPjo6dG9TdHJpbmcodDMpOyBcCi0gICAgICAgIHRoaXMtPnNlbmRS
cGNNZXNzYWdlKG1fY2xhc3NOYW1lLCAjTWV0aG9kLCBhcmdzKTsgXAotICAgIH0KLQotI2RlZmlu
ZSBUT09MU19SUENfU1RVQl9NRVRIT0Q0KE1ldGhvZCwgVDEsIFQyLCBUMywgVDQpIFwKLSAgICB2
aXJ0dWFsIHZvaWQgTWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46OkFwaVR5cGUgdDEsIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMj46OkFwaVR5cGUgdDIsIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUMz46OkFwaVR5cGUgdDMsIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFJwY1R5cGVUcmFpdDxUND46OkFwaVR5cGUgdDQpIHsgXAotICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBhcmdzKDQpOyBcCi0gICAgICAgIGFyZ3NbMF0gPSBScGNUeXBl
VHJhaXQ8VDE+Ojp0b1N0cmluZyh0MSk7IFwKLSAgICAgICAgYXJnc1sxXSA9IFJwY1R5cGVUcmFp
dDxUMj46OnRvU3RyaW5nKHQyKTsgXAotICAgICAgICBhcmdzWzJdID0gUnBjVHlwZVRyYWl0PFQz
Pjo6dG9TdHJpbmcodDMpOyBcCi0gICAgICAgIGFyZ3NbM10gPSBScGNUeXBlVHJhaXQ8VDQ+Ojp0
b1N0cmluZyh0NCk7IFwKLSAgICAgICAgdGhpcy0+c2VuZFJwY01lc3NhZ2UobV9jbGFzc05hbWUs
ICNNZXRob2QsIGFyZ3MpOyBcCi0gICAgfQotCi0jZGVmaW5lIFRPT0xTX1JQQ19TVFVCX01FVEhP
RDUoTWV0aG9kLCBUMSwgVDIsIFQzLCBUNCwgVDUpIFwKLSAgICB2aXJ0dWFsIHZvaWQgTWV0aG9k
KFJwY1R5cGVUcmFpdDxUMT46OkFwaVR5cGUgdDEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJwY1R5cGVUcmFpdDxUMj46OkFwaVR5cGUgdDIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJwY1R5cGVUcmFpdDxUMz46OkFwaVR5cGUgdDMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJwY1R5cGVUcmFpdDxUND46OkFwaVR5cGUgdDQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJwY1R5cGVUcmFpdDxUNT46OkFwaVR5cGUgdDUpIHsgXAotICAgICAgICBWZWN0b3I8U3RyaW5n
PiBhcmdzKDUpOyBcCi0gICAgICAgIGFyZ3NbMF0gPSBScGNUeXBlVHJhaXQ8VDE+Ojp0b1N0cmlu
Zyh0MSk7IFwKLSAgICAgICAgYXJnc1sxXSA9IFJwY1R5cGVUcmFpdDxUMj46OnRvU3RyaW5nKHQy
KTsgXAotICAgICAgICBhcmdzWzJdID0gUnBjVHlwZVRyYWl0PFQzPjo6dG9TdHJpbmcodDMpOyBc
Ci0gICAgICAgIGFyZ3NbM10gPSBScGNUeXBlVHJhaXQ8VDQ+Ojp0b1N0cmluZyh0NCk7IFwKLSAg
ICAgICAgYXJnc1s0XSA9IFJwY1R5cGVUcmFpdDxUNT46OnRvU3RyaW5nKHQ1KTsgXAotICAgICAg
ICB0aGlzLT5zZW5kUnBjTWVzc2FnZShtX2NsYXNzTmFtZSwgI01ldGhvZCwgYXJncyk7IFwKLSAg
ICB9Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIFJQQyBkaXNwYXRjaCBtZXRob2QgaW1wbGVtZW50YXRpb25zCi0KLSNkZWZpbmUg
VE9PTFNfUlBDX0RJU1BBVENIMChNZXRob2QpIFwKLWlmIChtZXRob2ROYW1lID09ICNNZXRob2Qp
IHsgXAotICAgIGRlbGVnYXRlLT5NZXRob2QoKTsgXAotICAgIHJldHVybiB0cnVlOyBcCi19Ci0K
LSNkZWZpbmUgVE9PTFNfUlBDX0RJU1BBVENIMShNZXRob2QsIFQxKSBcCi1pZiAobWV0aG9kTmFt
ZSA9PSAjTWV0aG9kKSB7IFwKLSAgICBkZWxlZ2F0ZS0+TWV0aG9kKFJwY1R5cGVUcmFpdDxUMT46
OnBhcnNlKGFyZ3NbMF0pKTsgXAotICAgIHJldHVybiB0cnVlOyBcCi19Ci0KLSNkZWZpbmUgVE9P
TFNfUlBDX0RJU1BBVENIMihNZXRob2QsIFQxLCBUMikgXAotaWYgKG1ldGhvZE5hbWUgPT0gI01l
dGhvZCkgeyBcCi0gICAgZGVsZWdhdGUtPk1ldGhvZCggXAotICAgICAgICBScGNUeXBlVHJhaXQ8
VDE+OjpwYXJzZShhcmdzWzBdKSwgXAotICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpwYXJzZShh
cmdzWzFdKSBcCi0gICAgKTsgXAotICAgIHJldHVybiB0cnVlOyBcCi19Ci0KLSNkZWZpbmUgVE9P
TFNfUlBDX0RJU1BBVENIMyhNZXRob2QsIFQxLCBUMiwgVDMpIFwKLWlmIChtZXRob2ROYW1lID09
ICNNZXRob2QpIHsgXAotICAgIGRlbGVnYXRlLT5NZXRob2QoIFwKLSAgICAgICAgUnBjVHlwZVRy
YWl0PFQxPjo6cGFyc2UoYXJnc1swXSksIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQyPjo6cGFy
c2UoYXJnc1sxXSksIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQzPjo6cGFyc2UoYXJnc1syXSkg
XAotICAgICk7IFwKLSAgICByZXR1cm4gdHJ1ZTsgXAotfQotCi0jZGVmaW5lIFRPT0xTX1JQQ19E
SVNQQVRDSDQoTWV0aG9kLCBUMSwgVDIsIFQzLCBUNCkgXAotaWYgKG1ldGhvZE5hbWUgPT0gI01l
dGhvZCkgeyBcCi0gICAgZGVsZWdhdGUtPk1ldGhvZCggXAotICAgICAgICBScGNUeXBlVHJhaXQ8
VDE+OjpwYXJzZShhcmdzWzBdKSwgXAotICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpwYXJzZShh
cmdzWzFdKSwgXAotICAgICAgICBScGNUeXBlVHJhaXQ8VDM+OjpwYXJzZShhcmdzWzJdKSwgXAot
ICAgICAgICBScGNUeXBlVHJhaXQ8VDQ+OjpwYXJzZShhcmdzWzNdKSBcCi0gICAgKTsgXAotICAg
IHJldHVybiB0cnVlOyBcCi19Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0RJU1BBVENINShNZXRob2Qs
IFQxLCBUMiwgVDMsIFQ0LCBUNSkgXAotaWYgKG1ldGhvZE5hbWUgPT0gI01ldGhvZCkgeyBcCi0g
ICAgZGVsZWdhdGUtPk1ldGhvZCggXAotICAgICAgICBScGNUeXBlVHJhaXQ8VDE+OjpwYXJzZShh
cmdzWzBdKSwgXAotICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpwYXJzZShhcmdzWzFdKSwgXAot
ICAgICAgICBScGNUeXBlVHJhaXQ8VDM+OjpwYXJzZShhcmdzWzJdKSwgXAotICAgICAgICBScGNU
eXBlVHJhaXQ8VDQ+OjpwYXJzZShhcmdzWzNdKSwgXAotICAgICAgICBScGNUeXBlVHJhaXQ8VDU+
OjpwYXJzZShhcmdzWzRdKSBcCi0gICAgKTsgXAotICAgIHJldHVybiB0cnVlOyBcCi19Ci0KLSNk
ZWZpbmUgVE9PTFNfRU5EX1JQQ19ESVNQQVRDSCgpIFwKLX0KLQotLy8gVGhpcyBtYWNybyBkZWZp
bmVzIHRocmVlIGNsYXNzZXM6IENsYXNzIHdpdGggdGhlIEFwaSwgQ2xhc3NTdHViIHRoYXQgaXMK
LS8vIHNlcmlhbGl6aW5nIG1ldGhvZCBjYWxscyBhbmQgQ2xhc3NEaXNwYXRjaCB0aGF0IGlzIGNh
cGFibGUgb2YgZGlzcGF0Y2hpbmcKLS8vIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UgaW50byBpdHMg
ZGVsZWdhdGUuCi0jZGVmaW5lIERFRklORV9SUENfQ0xBU1MoQ2xhc3MsIFNUUlVDVCkgXAotY2xh
c3MgQ2xhc3MgOiBwdWJsaWMgTm9uY29weWFibGUge1wKLXB1YmxpYzogXAotICAgIENsYXNzKCkg
XAotICAgIHsgXAotICAgICAgICBtX2NsYXNzTmFtZSA9ICNDbGFzczsgXAotICAgIH0gXAotICAg
IHZpcnR1YWwgfkNsYXNzKCkgeyB9IFwKLSAgICBcCi0gICAgU1RSVUNUKCBcCi0gICAgICAgIFRP
T0xTX1JQQ19BUElfTUVUSE9EMCwgXAotICAgICAgICBUT09MU19SUENfQVBJX01FVEhPRDEsIFwK
LSAgICAgICAgVE9PTFNfUlBDX0FQSV9NRVRIT0QyLCBcCi0gICAgICAgIFRPT0xTX1JQQ19BUElf
TUVUSE9EMywgXAotICAgICAgICBUT09MU19SUENfQVBJX01FVEhPRDQsIFwKLSAgICAgICAgVE9P
TFNfUlBDX0FQSV9NRVRIT0Q1KSBcCi0gICAgV2ViQ29yZTo6U3RyaW5nIG1fY2xhc3NOYW1lOyBc
Ci19OyBcCi1cCi1jbGFzcyBDbGFzcyMjU3R1YiBcCi0gICAgOiBwdWJsaWMgQ2xhc3MgXAotICAg
ICwgcHVibGljIERldlRvb2xzUlBDIHsgXAotcHVibGljOiBcCi0gICAgZXhwbGljaXQgQ2xhc3Mj
I1N0dWIoRGVsZWdhdGUqIGRlbGVnYXRlKSA6IERldlRvb2xzUlBDKGRlbGVnYXRlKSB7IH0gXAot
ICAgIHZpcnR1YWwgfkNsYXNzIyNTdHViKCkgeyB9IFwKLSAgICB0eXBlZGVmIENsYXNzIENMQVNT
OyBcCi0gICAgU1RSVUNUKCBcCi0gICAgICAgIFRPT0xTX1JQQ19TVFVCX01FVEhPRDAsIFwKLSAg
ICAgICAgVE9PTFNfUlBDX1NUVUJfTUVUSE9EMSwgXAotICAgICAgICBUT09MU19SUENfU1RVQl9N
RVRIT0QyLCBcCi0gICAgICAgIFRPT0xTX1JQQ19TVFVCX01FVEhPRDMsIFwKLSAgICAgICAgVE9P
TFNfUlBDX1NUVUJfTUVUSE9ENCwgXAotICAgICAgICBUT09MU19SUENfU1RVQl9NRVRIT0Q1KSBc
Ci19OyBcCi1cCi1jbGFzcyBDbGFzcyMjRGlzcGF0Y2ggOiBwdWJsaWMgTm9uY29weWFibGUgeyBc
Ci1wdWJsaWM6IFwKLSAgICBDbGFzcyMjRGlzcGF0Y2goKSB7IH0gXAotICAgIHZpcnR1YWwgfkNs
YXNzIyNEaXNwYXRjaCgpIHsgfSBcCi0gICAgXAotICAgIHN0YXRpYyBib29sIGRpc3BhdGNoKENs
YXNzKiBkZWxlZ2F0ZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkgeyBcCi0gICAgICAgIFN0cmluZyBjbGFzc05h
bWUgPSBkYXRhLmNsYXNzTmFtZTsgXAotICAgICAgICBpZiAoY2xhc3NOYW1lICE9ICNDbGFzcykg
XAotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyBcCi0gICAgICAgIFN0cmluZyBtZXRob2ROYW1l
ID0gZGF0YS5tZXRob2ROYW1lOyBcCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGFyZ3M7IFwKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLmFyZ3VtZW50cy5zaXplKCk7IGkrKykg
XAotICAgICAgICAgICAgYXJncy5hcHBlbmQoZGF0YS5hcmd1bWVudHNbaV0pOyBcCi0gICAgICAg
IHR5cGVkZWYgQ2xhc3MgQ0xBU1M7IFwKLSAgICAgICAgU1RSVUNUKCBcCi0gICAgICAgICAgICBU
T09MU19SUENfRElTUEFUQ0gwLCBcCi0gICAgICAgICAgICBUT09MU19SUENfRElTUEFUQ0gxLCBc
Ci0gICAgICAgICAgICBUT09MU19SUENfRElTUEFUQ0gyLCBcCi0gICAgICAgICAgICBUT09MU19S
UENfRElTUEFUQ0gzLCBcCi0gICAgICAgICAgICBUT09MU19SUENfRElTUEFUQ0g0LCBcCi0gICAg
ICAgICAgICBUT09MU19SUENfRElTUEFUQ0g1KSBcCi0gICAgICAgIHJldHVybiBmYWxzZTsgXAot
ICAgIH0gXAotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotLy8gUlBDIGJhc2UgY2xhc3MKLWNsYXNzIERldlRvb2xzUlBDIHsKLXB1
YmxpYzoKLSAgICBjbGFzcyBEZWxlZ2F0ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBEZWxlZ2F0
ZSgpIHsgfQotICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2VuZFJwY01lc3NhZ2UoY29uc3QgV2ViS2l0OjpXZWJEZXZUb29sc01lc3NhZ2VEYXRh
JiBkYXRhKSA9IDA7Ci0gICAgfTsKLQotICAgIGV4cGxpY2l0IERldlRvb2xzUlBDKERlbGVnYXRl
KiBkZWxlZ2F0ZSkgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKSB7IH0KLSAgICB2aXJ0dWFsIH5EZXZU
b29sc1JQQygpIHsgfTsKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgc2VuZFJwY01lc3NhZ2UoY29u
c3QgU3RyaW5nJiBjbGFzc05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIG1ldGhvZE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJncykgewotICAgICAgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+
IHdlYkFyZ3MoYXJncy5zaXplKCkpOwotICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdz
LnNpemUoKTsgaSsrKQotICAgICAgICAgIHdlYkFyZ3NbaV0gPSBhcmdzW2ldOwotICAgICAgV2Vi
S2l0OjpXZWJEZXZUb29sc01lc3NhZ2VEYXRhIGRhdGE7Ci0gICAgICBkYXRhLmNsYXNzTmFtZSA9
IGNsYXNzTmFtZTsKLSAgICAgIGRhdGEubWV0aG9kTmFtZSA9IG1ldGhvZE5hbWU7Ci0gICAgICBk
YXRhLmFyZ3VtZW50cy5zd2FwKHdlYkFyZ3MpOwotICAgICAgdGhpcy0+bV9kZWxlZ2F0ZS0+c2Vu
ZFJwY01lc3NhZ2UoZGF0YSk7Ci0gICAgfQotCi0gICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0RldlRvb2xzUlBDSlMuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2VG9v
bHNSUENKUy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWUyNzlmLi4wMDAwMDAw
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2VG9vbHNSUENKUy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0vLyBBZGRpdGlvbmFsIHNldCBvZiBtYWNyb3MgZm9yIHRoZSBKUyBS
UEMuCi0KLSNpZm5kZWYgRGV2VG9vbHNSUENKU19oCi0jZGVmaW5lIERldlRvb2xzUlBDSlNfaAot
Ci0vLyBEbyBub3QgcmVtb3ZlIHRoaXMgb25lIGFsdGhvdWdoIGl0IGlzIG5vdCB1c2VkLgotI2lu
Y2x1ZGUgIkJvdW5kT2JqZWN0LmgiCi0jaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIKLSNpbmNsdWRl
ICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEpTIFJQQyBiaW5kcyBhbmQg
c3R1YnMKLQotI2RlZmluZSBUT09MU19SUENfSlNfQklORF9NRVRIT0QwKE1ldGhvZCkgXAotICAg
IGJvdW5kT2JqLmFkZFByb3RvRnVuY3Rpb24oI01ldGhvZCwgT0NMQVNTOjpqcyMjTWV0aG9kKTsK
LQotI2RlZmluZSBUT09MU19SUENfSlNfQklORF9NRVRIT0QxKE1ldGhvZCwgVDEpIFwKLSAgICBi
b3VuZE9iai5hZGRQcm90b0Z1bmN0aW9uKCNNZXRob2QsIE9DTEFTUzo6anMjI01ldGhvZCk7Ci0K
LSNkZWZpbmUgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9EMihNZXRob2QsIFQxLCBUMikgXAotICAg
IGJvdW5kT2JqLmFkZFByb3RvRnVuY3Rpb24oI01ldGhvZCwgT0NMQVNTOjpqcyMjTWV0aG9kKTsK
LQotI2RlZmluZSBUT09MU19SUENfSlNfQklORF9NRVRIT0QzKE1ldGhvZCwgVDEsIFQyLCBUMykg
XAotICAgIGJvdW5kT2JqLmFkZFByb3RvRnVuY3Rpb24oI01ldGhvZCwgT0NMQVNTOjpqcyMjTWV0
aG9kKTsKLQotI2RlZmluZSBUT09MU19SUENfSlNfQklORF9NRVRIT0Q0KE1ldGhvZCwgVDEsIFQy
LCBUMywgVDQpIFwKLSAgICBib3VuZE9iai5hZGRQcm90b0Z1bmN0aW9uKCNNZXRob2QsIE9DTEFT
Uzo6anMjI01ldGhvZCk7Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9ENShNZXRo
b2QsIFQxLCBUMiwgVDMsIFQ0LCBUNSkgXAotICAgIGJvdW5kT2JqLmFkZFByb3RvRnVuY3Rpb24o
I01ldGhvZCwgT0NMQVNTOjpqcyMjTWV0aG9kKTsKLQotI2RlZmluZSBUT09MU19SUENfSlNfU1RV
Ql9NRVRIT0QwKE1ldGhvZCkgXAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganMj
I01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7IFwKLSAgICAgICAgc2VuZFJwY01l
c3NhZ2VGcm9tSlMoI01ldGhvZCwgYXJncywgMCk7IFwKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsgXAotICAgIH0KLQotI2RlZmluZSBUT09MU19SUENfSlNfU1RVQl9NRVRIT0QxKE1l
dGhvZCwgVDEpIFwKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzIyNNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeyBcCi0gICAgICAgIHNlbmRScGNNZXNzYWdlRnJv
bUpTKCNNZXRob2QsIGFyZ3MsIDEpOyBcCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
IFwKLSAgICB9Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9EMihNZXRob2QsIFQx
LCBUMikgXAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganMjI01ldGhvZChjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7IFwKLSAgICAgICAgc2VuZFJwY01lc3NhZ2VGcm9tSlMo
I01ldGhvZCwgYXJncywgMik7IFwKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsgXAot
ICAgIH0KLQotI2RlZmluZSBUT09MU19SUENfSlNfU1RVQl9NRVRIT0QzKE1ldGhvZCwgVDEsIFQy
LCBUMykgXAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganMjI01ldGhvZChjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7IFwKLSAgICAgICAgc2VuZFJwY01lc3NhZ2VGcm9tSlMo
I01ldGhvZCwgYXJncywgMyk7IFwKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsgXAot
ICAgIH0KLQotI2RlZmluZSBUT09MU19SUENfSlNfU1RVQl9NRVRIT0Q0KE1ldGhvZCwgVDEsIFQy
LCBUMywgVDQpIFwKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzIyNNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeyBcCi0gICAgICAgIHNlbmRScGNNZXNzYWdlRnJv
bUpTKCNNZXRob2QsIGFyZ3MsIDQpOyBcCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
IFwKLSAgICB9Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9ENShNZXRob2QsIFQx
LCBUMiwgVDMsIFQ0LCBUNSkgXAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganMj
I01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7IFwKLSAgICAgICAgc2VuZFJwY01l
c3NhZ2VGcm9tSlMoI01ldGhvZCwgYXJncywgNSk7IFwKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsgXAotICAgIH0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotLy8gSlMgUlBDIG1haW4gb2JqIG1hY3JvCi0KLSNkZWZpbmUg
REVGSU5FX1JQQ19KU19CT1VORF9PQkooQ2xhc3MsIFNUUlVDVCwgRENsYXNzLCBERUxFR0FURV9T
VFJVQ1QpIFwKLWNsYXNzIEpTIyNDbGFzcyMjQm91bmRPYmogOiBwdWJsaWMgQ2xhc3MjI1N0dWIg
eyBcCi1wdWJsaWM6IFwKLSAgICBKUyMjQ2xhc3MjI0JvdW5kT2JqKERlbGVnYXRlKiBycGNEZWxl
Z2F0ZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY2xhc3NuYW1l
KSBcCi0gICAgICAgIDogQ2xhc3MjI1N0dWIocnBjRGVsZWdhdGUpIHsgXAotICAgICAgQm91bmRP
YmplY3QgYm91bmRPYmooY29udGV4dCwgdGhpcywgY2xhc3NuYW1lKTsgXAotICAgICAgU1RSVUNU
KCBcCi0gICAgICAgICAgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9EMCwgXAotICAgICAgICAgIFRP
T0xTX1JQQ19KU19CSU5EX01FVEhPRDEsIFwKLSAgICAgICAgICBUT09MU19SUENfSlNfQklORF9N
RVRIT0QyLCBcCi0gICAgICAgICAgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9EMywgXAotICAgICAg
ICAgIFRPT0xTX1JQQ19KU19CSU5EX01FVEhPRDQsIFwKLSAgICAgICAgICBUT09MU19SUENfSlNf
QklORF9NRVRIT0Q1KSBcCi0gICAgICBib3VuZE9iai5idWlsZCgpOyBcCi0gICAgfSBcCi0gICAg
dmlydHVhbCB+SlMjI0NsYXNzIyNCb3VuZE9iaigpIHsgfSBcCi0gICAgdHlwZWRlZiBKUyMjQ2xh
c3MjI0JvdW5kT2JqIE9DTEFTUzsgXAotICAgIFNUUlVDVCggXAotICAgICAgICBUT09MU19SUENf
SlNfU1RVQl9NRVRIT0QwLCBcCi0gICAgICAgIFRPT0xTX1JQQ19KU19TVFVCX01FVEhPRDEsIFwK
LSAgICAgICAgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9EMiwgXAotICAgICAgICBUT09MU19SUENf
SlNfU1RVQl9NRVRIT0QzLCBcCi0gICAgICAgIFRPT0xTX1JQQ19KU19TVFVCX01FVEhPRDQsIFwK
LSAgICAgICAgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9ENSkgXAotcHJpdmF0ZTogXAotICAgIHN0
YXRpYyB2b2lkIHNlbmRScGNNZXNzYWdlRnJvbUpTKGNvbnN0IGNoYXIqIG1ldGhvZCwgXAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY4OjpBcmd1bWVudHMmIGpz
QXJndW1lbnRzLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGFyZ3NDb3VudCkgXAotICAgIHsgXAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBhcmdzKGFyZ3ND
b3VudCk7IFwKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzQ291bnQ7IGkrKykg
XAotICAgICAgICAgICAgYXJnc1tpXSA9IFdlYkNvcmU6OnRvV2ViQ29yZVN0cmluZ1dpdGhOdWxs
Q2hlY2soanNBcmd1bWVudHNbaV0pOyBcCi0gICAgICAgIHZvaWQqIHNlbGZQdHIgPSB2ODo6RXh0
ZXJuYWw6OkNhc3QoKmpzQXJndW1lbnRzLkRhdGEoKSktPlZhbHVlKCk7IFwKLSAgICAgICAgSlMj
I0NsYXNzIyNCb3VuZE9iaiogc2VsZiA9IHN0YXRpY19jYXN0PEpTIyNDbGFzcyMjQm91bmRPYmoq
PihzZWxmUHRyKTsgXAotICAgICAgICBzZWxmLT5zZW5kUnBjTWVzc2FnZSgjQ2xhc3MsIG1ldGhv
ZCwgYXJncyk7IFwKLSAgICB9IFwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCmluZGV4IGNm
NDkxZjcuLmE3NDdkYmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCi0jaW5j
bHVkZSAiV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKICNp
bmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAKaW5kZXgg
ODcwYmRlZS4uNDZmMmNiNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JGcm9udGVuZENsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlY4
UHJveHkuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEyNiwxMyArMTI3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudEltcGw6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
JiB1cmwpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgV2ViRGV2VG9vbHNNZXNzYWdl
RGF0YSBtZXNzYWdlRGF0YTsKLSAgICBtZXNzYWdlRGF0YS5jbGFzc05hbWUgPSAiVG9vbHNBZ2Vu
dCI7Ci0gICAgbWVzc2FnZURhdGEubWV0aG9kTmFtZSA9ICJkaXNwYXRjaE9uSW5zcGVjdG9yQ29u
dHJvbGxlciI7Ci0gICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJncyhzdGF0aWNfY2FzdDxzaXpl
X3Q+KDEpKTsKLSAgICBhcmdzWzBdID0gbWVzc2FnZTsKLSAgICBtZXNzYWdlRGF0YS5hcmd1bWVu
dHMuc3dhcChhcmdzKTsKLSAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0FnZW50KG1lc3NhZ2VE
YXRhKTsKKyAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
cm9maWxlckFnZW50LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Byb2ZpbGVyQWdlbnQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIzMzdiOC4uMDAwMDAwMAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1Byb2ZpbGVyQWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFByb2ZpbGVyQWdlbnRfaAotI2RlZmluZSBQcm9maWxlckFnZW50X2gKLQotI2lu
Y2x1ZGUgIkRldlRvb2xzUlBDLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBQcm9maWxl
ciBhZ2VudCBwcm92aWRlcyBBUEkgZm9yIHJldHJpZXZpbmcgcHJvZmlsZXIgZGF0YS4KLS8vIFRo
ZXNlIG1ldGhvZHMgYXJlIGhhbmRsZWQgb24gdGhlIElPIHRocmVhZCwgc28gcHJvZmlsZXIgY2Fu
Ci0vLyBvcGVyYXRlIHdoaWxlIGEgc2NyaXB0IG9uIGEgcGFnZSBwZXJmb3JtcyBoZWF2eSB3b3Jr
LgotI2RlZmluZSBQUk9GSUxFUl9BR0VOVF9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9E
MiwgTUVUSE9EMywgTUVUSE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFJlcXVlc3RzIGN1cnJlbnQg
cHJvZmlsZXIgc3RhdGUuICovIFwKLSAgICBNRVRIT0QwKGdldEFjdGl2ZVByb2ZpbGVyTW9kdWxl
cykgXAotICAgIFwKLSAgICAvKiBSZXRyaWV2ZXMgcG9ydGlvbiBvZiBwcm9maWxlciBsb2cuICov
IFwKLSAgICBNRVRIT0QxKGdldExvZ0xpbmVzLCBpbnQgLyogcG9zaXRpb24gKi8pCi0KLURFRklO
RV9SUENfQ0xBU1MoUHJvZmlsZXJBZ2VudCwgUFJPRklMRVJfQUdFTlRfU1RSVUNUKQotCi0jZGVm
aW5lIFBST0ZJTEVSX0FHRU5UX0RFTEVHQVRFX1NUUlVDVChNRVRIT0QwLCBNRVRIT0QxLCBNRVRI
T0QyLCBNRVRIT0QzLCBNRVRIT0Q0LCBNRVRIT0Q1KSBcCi0gICAgLyogUmVzcG9uc2UgdG8gZ2V0
QWN0aXZlUHJvZmlsZXJNb2R1bGVzLiAqLyBcCi0gICAgTUVUSE9EMShkaWRHZXRBY3RpdmVQcm9m
aWxlck1vZHVsZXMsIGludCAvKiBmbGFncyAqLykgXAotICAgIFwKLSAgICAvKiBSZXNwb25zZSB0
byBnZXRMb2dMaW5lcy4gKi8gXAotICAgIE1FVEhPRDIoZGlkR2V0TG9nTGluZXMsIGludCAvKiBw
b3NpdGlvbiAqLywgU3RyaW5nIC8qIGxvZyAqLykKLQotREVGSU5FX1JQQ19DTEFTUyhQcm9maWxl
ckFnZW50RGVsZWdhdGUsIFBST0ZJTEVSX0FHRU5UX0RFTEVHQVRFX1NUUlVDVCkKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Qcm9maWxlckFnZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Byb2ZpbGVyQWdl
bnRJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc1NzBkZi4uMDAwMDAw
MAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Byb2ZpbGVyQWdlbnRJbXBsLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJv
ZmlsZXJBZ2VudEltcGwuaCIKLQotI2luY2x1ZGUgPHY4Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi12b2lkIFByb2ZpbGVyQWdlbnRJbXBsOjpnZXRBY3RpdmVQcm9maWxlck1vZHVsZXMoKQot
ewotICAgIG1fZGVsZWdhdGUtPmRpZEdldEFjdGl2ZVByb2ZpbGVyTW9kdWxlcyh2ODo6Vjg6Okdl
dEFjdGl2ZVByb2ZpbGVyTW9kdWxlcygpKTsKLX0KLQotdm9pZCBQcm9maWxlckFnZW50SW1wbDo6
Z2V0TG9nTGluZXMoaW50IHBvc2l0aW9uKQotewotICAgIHN0YXRpYyBjaGFyIGJ1ZmZlcls2NTUz
Nl07Ci0gICAgY29uc3QgaW50IHJlYWRTaXplID0gdjg6OlY4OjpHZXRMb2dMaW5lcyhwb3NpdGlv
biwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSAtIDEpOwotICAgIGJ1ZmZlcltyZWFkU2l6ZV0gPSAn
XDAnOwotICAgIHBvc2l0aW9uICs9IHJlYWRTaXplOwotICAgIG1fZGVsZWdhdGUtPmRpZEdldExv
Z0xpbmVzKHBvc2l0aW9uLCBidWZmZXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvUHJvZmlsZXJBZ2VudEltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvUHJvZmlsZXJBZ2VudEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDM4ZjU3Yy4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Byb2Zp
bGVyQWdlbnRJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm9m
aWxlckFnZW50SW1wbF9oCi0jZGVmaW5lIFByb2ZpbGVyQWdlbnRJbXBsX2gKLQotI2luY2x1ZGUg
IlByb2ZpbGVyQWdlbnQuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFByb2ZpbGVy
QWdlbnRJbXBsIDogcHVibGljIFByb2ZpbGVyQWdlbnQgewotcHVibGljOgotICAgIFByb2ZpbGVy
QWdlbnRJbXBsKFByb2ZpbGVyQWdlbnREZWxlZ2F0ZSogZGVsZWdhdGUpIDogbV9kZWxlZ2F0ZShk
ZWxlZ2F0ZSkgeyB9Ci0gICAgdmlydHVhbCB+UHJvZmlsZXJBZ2VudEltcGwoKSB7IH0KLQotICAg
IC8vIFByb2ZpbGVyQWdlbnQgaW1wbGVtZW50YXRpb24uCi0KLSAgICAvLyBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgb24gSU8gdGhyZWFkLgotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVQcm9maWxl
ck1vZHVsZXMoKTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBJTyB0aHJlYWQu
Ci0gICAgdmlydHVhbCB2b2lkIGdldExvZ0xpbmVzKGludCBwb3NpdGlvbik7Ci0KLXByaXZhdGU6
Ci0gICAgUHJvZmlsZXJBZ2VudERlbGVnYXRlKiBtX2RlbGVnYXRlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9U
b29sc0FnZW50LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTM3ZmNmMC4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1Rvb2xzQWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFRvb2xzQWdlbnRfaAotI2RlZmluZSBUb29sc0FnZW50X2gKLQotI2luY2x1ZGUgIkRldlRvb2xz
UlBDLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUb29scyBhZ2VudCBwcm92aWRlcyBB
UEkgZm9yIGVuYWJsaW5nIC8gZGlzYWJsaW5nIG90aGVyIGFnZW50cyBhcyB3ZWxsIGFzCi0vLyBB
UEkgZm9yIGF1eGlsaWFyeSBVSSBmdW5jdGlvbnMgc3VjaCBhcyBkb20gZWxlbWVudHMgaGlnaGxp
Z2h0aW5nLgotI2RlZmluZSBUT09MU19BR0VOVF9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVU
SE9EMiwgTUVUSE9EMywgTUVUSE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIERpc3BhdGNoZXMgZ2l2
ZW4gZnVuY3Rpb24gb24gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIgb2JqZWN0ICovIFwKLSAgICBN
RVRIT0QxKGRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyLCBTdHJpbmcgLyogbWVzc2FnZSAq
LykgXAotCi1ERUZJTkVfUlBDX0NMQVNTKFRvb2xzQWdlbnQsIFRPT0xTX0FHRU5UX1NUUlVDVCkK
LQotI2RlZmluZSBUT09MU19BR0VOVF9ERUxFR0FURV9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwg
TUVUSE9EMiwgTUVUSE9EMywgTUVUSE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFJlc3BvbnNlIHRv
IHRoZSBEaXNwYXRjaE9uKi4gKi8gXAotICAgIE1FVEhPRDMoZGlkRGlzcGF0Y2hPbiwgaW50IC8q
IGNhbGxfaWQgKi8sIFN0cmluZyAvKiByZXN1bHQgKi8sIFN0cmluZyAvKiBleGNlcHRpb24gKi8p
IFwKLSAgICBcCi0gICAgLyogU2VuZHMgSW5zcGVjdG9yRnJvbnRlbmQgbWVzc2FnZSB0byBiZSBk
aXNwYXRjaGVkIG9uIGNsaWVudC4gKi8gXAotICAgIE1FVEhPRDEoZGlzcGF0Y2hPbkNsaWVudCwg
U3RyaW5nIC8qIGRhdGEgKi8pCi0KLURFRklORV9SUENfQ0xBU1MoVG9vbHNBZ2VudERlbGVnYXRl
LCBUT09MU19BR0VOVF9ERUxFR0FURV9TVFJVQ1QpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAK
aW5kZXggMWE2NWJmZS4uOTMxNzBmZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZU
b29sc0FnZW50SW1wbC5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNs
dWRlICJQcm9maWxlckFnZW50SW1wbC5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CkBAIC01OSw4ICs1OCw2IEBACiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJX
ZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oIgotI2lu
Y2x1ZGUgIldlYkRldlRvb2xzTWVzc2FnZURhdGEuaCIKLSNpbmNsdWRlICJXZWJEZXZUb29sc01l
c3NhZ2VUcmFuc3BvcnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJX
ZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC0xMDksMjEgKzEwNiw2IEBAIHN0
YXRpYyBjb25zdCBjaGFyIGtSZXNvdXJjZVRyYWNraW5nRmVhdHVyZU5hbWVbXSA9ICJyZXNvdXJj
ZS10cmFja2luZyI7CiBzdGF0aWMgY29uc3QgY2hhciBrVGltZWxpbmVGZWF0dXJlTmFtZVtdID0g
InRpbWVsaW5lLXByb2ZpbGVyIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBcHVBZ2VudEZlYXR1cmVO
YW1lW10gPSAiYXB1LWFnZW50IjsKIAotY2xhc3MgSU9SUENEZWxlZ2F0ZSA6IHB1YmxpYyBEZXZU
b29sc1JQQzo6RGVsZWdhdGUsIHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgSU9S
UENEZWxlZ2F0ZSgpIDogbV90cmFuc3BvcnQoMCkgeyB9Ci0gICAgZXhwbGljaXQgSU9SUENEZWxl
Z2F0ZShXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIHRyYW5zcG9ydCkgOiBtX3RyYW5zcG9y
dCh0cmFuc3BvcnQpIHsgfQotICAgIHZpcnR1YWwgfklPUlBDRGVsZWdhdGUoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2VuZFJwY01lc3NhZ2UoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYg
ZGF0YSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3RyYW5zcG9ydCkKLSAgICAgICAgICAgIG1fdHJh
bnNwb3J0LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkKGRhdGEpOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIG1fdHJhbnNwb3J0Owot
fTsKLQogY2xhc3MgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyIDogcHVibGljIFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpDbGllbnRNZXNzYWdlTG9vcCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKFdlYkRldlRvb2xzQWdlbnRDbGll
bnQqIGNsaWVudCkKQEAgLTIyMiw5ICsyMDQsNiBAQCBXZWJEZXZUb29sc0FnZW50SW1wbDo6V2Vi
RGV2VG9vbHNBZ2VudEltcGwoCiB7CiAgICAgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNldEV4cG9z
ZVY4RGVidWdnZXJQcm90b2NvbCgKICAgICAgICAgY2xpZW50LT5leHBvc2VWOERlYnVnZ2VyUHJv
dG9jb2woKSk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLnNldChuZXcgRGVidWdn
ZXJBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7Ci0gICAgbV90b29sc0FnZW50RGVsZWdhdGVTdHVi
LnNldChuZXcgVG9vbHNBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7Ci0gICAgbV9hcHVBZ2VudERl
bGVnYXRlU3R1Yi5zZXQobmV3IEFwdUFnZW50RGVsZWdhdGVTdHViKHRoaXMpKTsKIH0KIAogV2Vi
RGV2VG9vbHNBZ2VudEltcGw6On5XZWJEZXZUb29sc0FnZW50SW1wbCgpCkBAIC0yNTEsOSArMjMw
LDcgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6YXR0YWNoKCkKICAgICAgICAgQ2xpZW50
TWVzc2FnZUxvb3BBZGFwdGVyOjplbnN1cmVDbGllbnRNZXNzYWdlTG9vcENyZWF0ZWQobV9jbGll
bnQpOwogCiAgICAgbV9kZWJ1Z2dlckFnZW50SW1wbC5zZXQoCi0gICAgICAgIG5ldyBEZWJ1Z2dl
ckFnZW50SW1wbChtX3dlYlZpZXdJbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcykpOworICAgICAgICBuZXcgRGVidWdnZXJBZ2VudEltcGwobV93ZWJWaWV3
SW1wbCwgdGhpcywgbV9jbGllbnQpKTsKICAgICBjcmVhdGVJbnNwZWN0b3JGcm9udGVuZFByb3h5
KCk7CiAKICAgICAvLyBBbGxvdyBjb250cm9sbGVyIHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIGZy
b250ZW5kLgpAQCAtMjk2LDEwICsyNzMsNiBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWROYXZpZ2F0ZSgpCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRDbGVhcldpbmRvd09i
amVjdChXZWJGcmFtZUltcGwqIHdlYmZyYW1lKQogewogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2Vy
OjpzZXRIb3N0SWQod2ViZnJhbWUsIG1faG9zdElkKTsKLSAgICBpZiAobV9hdHRhY2hlZCkgewot
ICAgICAgICAvLyBQdXNoIGNvbnRleHQgaWQgaW50byB0aGUgY2xpZW50IGlmIGl0IGlzIGFscmVh
ZHkgYXR0YWNoZWQuCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yi0+c2V0Q29u
dGV4dElkKG1faG9zdElkKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6
OmZvcmNlUmVwYWludCgpCkBAIC0zMDcsMjMgKzI4MCwxMSBAQCB2b2lkIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpmb3JjZVJlcGFpbnQoKQogICAgIG1fY2xpZW50LT5mb3JjZVJlcGFpbnQoKTsKIH0K
IAotdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xs
ZXIoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlz
cGF0Y2hPbkluc3BlY3RvckJhY2tlbmQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogewogICAg
IGluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoKS0+ZGlz
cGF0Y2gobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQot
ewotICAgIGlmIChUb29sc0FnZW50RGlzcGF0Y2g6OmRpc3BhdGNoKHRoaXMsIGRhdGEpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fYXR0YWNoZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2RlYnVnZ2VyQWdlbnRJbXBsLmdldCgpICYmIERlYnVnZ2VyQWdlbnREaXNwYXRj
aDo6ZGlzcGF0Y2gobV9kZWJ1Z2dlckFnZW50SW1wbC5nZXQoKSwgZGF0YSkpCi0gICAgICAgIHJl
dHVybjsKLX0KLQogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aW5zcGVjdEVsZW1lbnRBdChj
b25zdCBXZWJQb2ludCYgcG9pbnQpCiB7CiAgICAgbV93ZWJWaWV3SW1wbC0+aW5zcGVjdEVsZW1l
bnRBdChwb2ludCk7CkBAIC0zNDQsMTEgKzMwNSw2IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6OnNldFJ1bnRpbWVGZWF0dXJlRW5hYmxlZChjb25zdCBXZWJTdHJpbmcmIGZlYXR1cmUsIGJv
CiAgICAgfQogfQogCi12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZW5kUnBjTWVzc2FnZShj
b25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQotewotICAgIG1fY2xpZW50LT5zZW5k
TWVzc2FnZVRvRnJvbnRlbmQoZGF0YSk7Ci19Ci0KIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6
OmNvbXBpbGVVdGlsaXR5U2NyaXB0cygpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwpAQCAtNDI4LDcgKzM4NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJEZXZUb29s
c0FnZW50SW1wbDo6anNEaXNwYXRjaE9uQ2xpZW50KGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgV2Vi
RGV2VG9vbHNBZ2VudEltcGwqIGFnZW50ID0gc3RhdGljX2Nhc3Q8V2ViRGV2VG9vbHNBZ2VudElt
cGwqPih2ODo6RXh0ZXJuYWw6OkNhc3QoKmFyZ3MuRGF0YSgpKS0+VmFsdWUoKSk7CiAKICAgICBp
ZiAoIWFnZW50LT5tX2FwdUFnZW50RW5hYmxlZCkgewotICAgICAgICBhZ2VudC0+bV90b29sc0Fn
ZW50RGVsZWdhdGVTdHViLT5kaXNwYXRjaE9uQ2xpZW50KG1lc3NhZ2UpOworICAgICAgICBhZ2Vu
dC0+bV9jbGllbnQtPnNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChtZXNzYWdlKTsKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CiAKQEAgLTQzNiwxMCArMzkyLDEw
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJEZXZUb29sc0FnZW50SW1wbDo6anNEaXNwYXRj
aE9uQ2xpZW50KGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgaWYgKG1ldGhvZC5pc0VtcHR5KCkgfHwg
ZXhjZXB0aW9uQ2F0Y2hlci5IYXNDYXVnaHQoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIAotICAgIGlmIChtZXRob2QgIT0gImFkZFJlY29yZFRvVGltZWxpbmUiICYmIG1ldGhv
ZCAhPSAidXBkYXRlUmVzb3VyY2UiICYmIG1ldGhvZCAhPSAiYWRkUmVzb3VyY2UiKQorICAgIGlm
IChtZXRob2QgIT0gInVwZGF0ZVJlc291cmNlIiAmJiBtZXRob2QgIT0gImFkZFJlc291cmNlIikK
ICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIGFnZW50LT5tX2FwdUFnZW50
RGVsZWdhdGVTdHViLT5kaXNwYXRjaFRvQXB1KG1lc3NhZ2UpOworICAgIGFnZW50LT5tX2NsaWVu
dC0+c2VuZERpc3BhdGNoVG9BUFUobWVzc2FnZSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIH0KIApAQCAtNTQzLDE4ICs0OTksMTIgQEAgYm9vbCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSkKICAg
ICBpZiAoIWRldlRvb2xzQWdlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChk
ZXZUb29sc0FnZW50LT5tX2FwdUFnZW50RW5hYmxlZCAmJiBkZXZUb29sc0FnZW50LT5tX2FwdUFn
ZW50RGVsZWdhdGVTdHViKSB7Ci0gICAgICAgIGRldlRvb2xzQWdlbnQtPm1fYXB1QWdlbnREZWxl
Z2F0ZVN0dWItPmRpc3BhdGNoVG9BcHUobWVzc2FnZSk7CisgICAgaWYgKGRldlRvb2xzQWdlbnQt
Pm1fYXB1QWdlbnRFbmFibGVkKSB7CisgICAgICAgIG1fY2xpZW50LT5zZW5kRGlzcGF0Y2hUb0FQ
VShtZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgV2ViVmVjdG9y
PFdlYlN0cmluZz4gYXJndW1lbnRzKHNpemVfdCgxKSk7Ci0gICAgYXJndW1lbnRzWzBdID0gbWVz
c2FnZTsKLSAgICBXZWJEZXZUb29sc01lc3NhZ2VEYXRhIGRhdGE7Ci0gICAgZGF0YS5jbGFzc05h
bWUgPSAiVG9vbHNBZ2VudERlbGVnYXRlIjsKLSAgICBkYXRhLm1ldGhvZE5hbWUgPSAiZGlzcGF0
Y2hPbkNsaWVudCI7Ci0gICAgZGF0YS5hcmd1bWVudHMuc3dhcChhcmd1bWVudHMpOwotICAgIGRl
dlRvb2xzQWdlbnQtPnNlbmRScGNNZXNzYWdlKGRhdGEpOworICAgIG1fY2xpZW50LT5zZW5kTWVz
c2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQobWVzc2FnZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTYwOCwxMiArNTU4LDQgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50OjpzZXRNZXNzYWdlTG9v
cERpc3BhdGNoSGFuZGxlcihNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcgogICAgIERlYnVnZ2Vy
QWdlbnRNYW5hZ2VyOjpzZXRNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcihoYW5kbGVyKTsKIH0K
IAotYm9vbCBXZWJEZXZUb29sc0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklP
VGhyZWFkKFdlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogdHJhbnNwb3J0LCBjb25zdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQotewotICAgIElPUlBDRGVsZWdhdGUgZGVsZWdhdGUo
dHJhbnNwb3J0KTsKLSAgICBQcm9maWxlckFnZW50RGVsZWdhdGVTdHViIHN0dWIoJmRlbGVnYXRl
KTsKLSAgICBQcm9maWxlckFnZW50SW1wbCBhZ2VudCgmc3R1Yik7Ci0gICAgcmV0dXJuIFByb2Zp
bGVyQWdlbnREaXNwYXRjaDo6ZGlzcGF0Y2goJmFnZW50LCBkYXRhKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgK
aW5kZXggYzhlMjJiMC4uOTY1OWRlYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaApAQCAtMzMsOSArMzMsNiBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xp
ZW50LmgiCiAKLSNpbmNsdWRlICJBUFVBZ2VudERlbGVnYXRlLmgiCi0jaW5jbHVkZSAiRGV2VG9v
bHNSUEMuaCIKLSNpbmNsdWRlICJUb29sc0FnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNB
Z2VudFByaXZhdGUuaCIKIAogI2luY2x1ZGUgPHY4Lmg+CkBAIC01MSw3ICs0OCw2IEBAIGNsYXNz
IFN0cmluZzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERlYnVnZ2VyQWdlbnREZWxl
Z2F0ZVN0dWI7CiBjbGFzcyBEZWJ1Z2dlckFnZW50SW1wbDsKIGNsYXNzIFdlYkRldlRvb2xzQWdl
bnRDbGllbnQ7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTY0LDE2ICs2MCwxMSBAQCBzdHJ1Y3QgV2Vi
VVJMRXJyb3I7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2ViRGV2
VG9vbHNBZ2VudEltcGwgOiBwdWJsaWMgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBUb29sc0FnZW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgRGV2VG9vbHNSUEM6OkRlbGVnYXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBXZWJEZXZUb29sc0FnZW50SW1wbChXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwsIFdl
YkRldlRvb2xzQWdlbnRDbGllbnQqIGNsaWVudCk7CiAgICAgdmlydHVhbCB+V2ViRGV2VG9vbHNB
Z2VudEltcGwoKTsKIAotICAgIC8vIFRvb2xzQWdlbnQgaW1wbGVtZW50YXRpb24uCi0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYgbWVzc2FnZSk7Ci0KICAgICAvLyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZSBpbXBsZW1l
bnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3QoV2ViRnJhbWVJ
bXBsKiBmcmFtZSk7CiAKQEAgLTgxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZE5hdmlnYXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9u
dGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hPbkluc3BlY3RvckJhY2tlbmQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdEVsZW1lbnRBdChjb25zdCBXZWJQb2ludCYgcG9pbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBj
b25zdCBXZWJTdHJpbmcmIHNjcmlwdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFJ1bnRpbWVGZWF0
dXJlRW5hYmxlZChjb25zdCBXZWJTdHJpbmcmIGZlYXR1cmUsIGJvb2wgZW5hYmxlZCk7CkBAIC0x
MDcsOSArOTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRpbWVsaW5lUHJvZmlsZXJX
YXNTdG9wcGVkKCk7CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBXZWJDb3JlOjpTdHJpbmcmKTsKIAotICAgIC8vIERldlRvb2xzUlBDOjpEZWxlZ2F0ZSBpbXBs
ZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgc2VuZFJwY01lc3NhZ2UoY29uc3QgV2ViRGV2
VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSk7Ci0KICAgICB2b2lkIGZvcmNlUmVwYWludCgpOwogCiAg
ICAgaW50IGhvc3RJZCgpIHsgcmV0dXJuIG1faG9zdElkOyB9CkBAIC0xMzAsMTAgKzExOCw3IEBA
IHByaXZhdGU6CiAgICAgaW50IG1faG9zdElkOwogICAgIFdlYkRldlRvb2xzQWdlbnRDbGllbnQq
IG1fY2xpZW50OwogICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOwotICAgIE93blB0cjxE
ZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViPiBtX2RlYnVnZ2VyQWdlbnREZWxlZ2F0ZVN0dWI7Ci0g
ICAgT3duUHRyPFRvb2xzQWdlbnREZWxlZ2F0ZVN0dWI+IG1fdG9vbHNBZ2VudERlbGVnYXRlU3R1
YjsKICAgICBPd25QdHI8RGVidWdnZXJBZ2VudEltcGw+IG1fZGVidWdnZXJBZ2VudEltcGw7Ci0g
ICAgT3duUHRyPEFwdUFnZW50RGVsZWdhdGVTdHViPiBtX2FwdUFnZW50RGVsZWdhdGVTdHViOwog
ICAgIGJvb2wgbV9hcHVBZ2VudEVuYWJsZWQ7CiAgICAgYm9vbCBtX3Jlc291cmNlVHJhY2tpbmdX
YXNFbmFibGVkOwogICAgIGJvb2wgbV9hdHRhY2hlZDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKaW5kZXggNTkyYTUzMi4uYTBjOGViYSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKQEAg
LTM1LDggKzM1LDYgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRl
ICJEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiRGV2VG9vbHNSUENKUy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAt
NDgsMTAgKzQ2LDggQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiUHJvZmlsZXJBZ2VudC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNp
bmNsdWRlICJUb29sc0FnZW50LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCIKQEAg
LTc4LDEwICs3NCw2IEBAIHN0YXRpYyB2ODo6TG9jYWw8djg6OlN0cmluZz4gVG9WOFN0cmluZyhj
b25zdCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ldyhyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQxNl90Kj4ocy5jaGFyYWN0ZXJzKCkpLCBzLmxlbmd0aCgpKTsKIH0KIAot
REVGSU5FX1JQQ19KU19CT1VORF9PQkooRGVidWdnZXJBZ2VudCwgREVCVUdHRVJfQUdFTlRfU1RS
VUNULCBEZWJ1Z2dlckFnZW50RGVsZWdhdGUsIERFQlVHR0VSX0FHRU5UX0RFTEVHQVRFX1NUUlVD
VCkKLURFRklORV9SUENfSlNfQk9VTkRfT0JKKFByb2ZpbGVyQWdlbnQsIFBST0ZJTEVSX0FHRU5U
X1NUUlVDVCwgUHJvZmlsZXJBZ2VudERlbGVnYXRlLCBQUk9GSUxFUl9BR0VOVF9ERUxFR0FURV9T
VFJVQ1QpCi1ERUZJTkVfUlBDX0pTX0JPVU5EX09CSihUb29sc0FnZW50LCBUT09MU19BR0VOVF9T
VFJVQ1QsIFRvb2xzQWdlbnREZWxlZ2F0ZSwgVE9PTFNfQUdFTlRfREVMRUdBVEVfU1RSVUNUKQot
CiBXZWJEZXZUb29sc0Zyb250ZW5kKiBXZWJEZXZUb29sc0Zyb250ZW5kOjpjcmVhdGUoCiAgICAg
V2ViVmlldyogdmlldywKICAgICBXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KiBjbGllbnQsCkBA
IC0xMTMsMTYgKzEwNSw5IEBAIFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpXZWJEZXZUb29sc0Zy
b250ZW5kSW1wbCgKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gZnJhbWVDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZS0+ZnJhbWUo
KSk7CiAKLSAgICBtX2RlYnVnZ2VyQWdlbnRPYmouc2V0KG5ldyBKU0RlYnVnZ2VyQWdlbnRCb3Vu
ZE9iaih0aGlzLCBmcmFtZUNvbnRleHQsICJSZW1vdGVEZWJ1Z2dlckFnZW50IikpOwotICAgIG1f
cHJvZmlsZXJBZ2VudE9iai5zZXQobmV3IEpTUHJvZmlsZXJBZ2VudEJvdW5kT2JqKHRoaXMsIGZy
YW1lQ29udGV4dCwgIlJlbW90ZVByb2ZpbGVyQWdlbnQiKSk7Ci0gICAgbV90b29sc0FnZW50T2Jq
LnNldChuZXcgSlNUb29sc0FnZW50Qm91bmRPYmoodGhpcywgZnJhbWVDb250ZXh0LCAiUmVtb3Rl
VG9vbHNBZ2VudCIpKTsKLQogICAgIC8vIERlYnVnZ2VyIGNvbW1hbmRzIHNob3VsZCBiZSBzZW50
IHVzaW5nIHNwZWNpYWwgbWV0aG9kLgogICAgIEJvdW5kT2JqZWN0IGRlYnVnZ2VyQ29tbWFuZEV4
ZWN1dG9yT2JqKGZyYW1lQ29udGV4dCwgdGhpcywgIlJlbW90ZURlYnVnZ2VyQ29tbWFuZEV4ZWN1
dG9yIik7CiAgICAgZGVidWdnZXJDb21tYW5kRXhlY3V0b3JPYmouYWRkUHJvdG9GdW5jdGlvbigK
LSAgICAgICAgIkRlYnVnZ2VyQ29tbWFuZCIsCi0gICAgICAgIFdlYkRldlRvb2xzRnJvbnRlbmRJ
bXBsOjpqc0RlYnVnZ2VyQ29tbWFuZCk7Ci0gICAgZGVidWdnZXJDb21tYW5kRXhlY3V0b3JPYmou
YWRkUHJvdG9GdW5jdGlvbigKICAgICAgICAgIkRlYnVnZ2VyUGF1c2VTY3JpcHQiLAogICAgICAg
ICBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6anNEZWJ1Z2dlclBhdXNlU2NyaXB0KTsKICAgICBk
ZWJ1Z2dlckNvbW1hbmRFeGVjdXRvck9iai5idWlsZCgpOwpAQCAtMTMyLDI1ICsxMTcsMjAgQEAg
V2ViRGV2VG9vbHNGcm9udGVuZEltcGw6On5XZWJEZXZUb29sc0Zyb250ZW5kSW1wbCgpCiB7CiB9
CiAKLXZvaWQgV2ViRGV2VG9vbHNGcm9udGVuZEltcGw6OmRpc3BhdGNoTWVzc2FnZUZyb21BZ2Vu
dChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQordm9pZCBXZWJEZXZUb29sc0Zy
b250ZW5kSW1wbDo6ZGlzcGF0Y2hPbkluc3BlY3RvckZyb250ZW5kKGNvbnN0IFdlYlN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiB2OwotICAgIHYuYXBwZW5kKGRhdGEuY2xh
c3NOYW1lKTsKLSAgICB2LmFwcGVuZChkYXRhLm1ldGhvZE5hbWUpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZGF0YS5hcmd1bWVudHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIHYuYXBwZW5k
KGRhdGEuYXJndW1lbnRzW2ldKTsKICAgICBpZiAoIW1fbG9hZGVkKSB7Ci0gICAgICAgIG1fcGVu
ZGluZ0luY29taW5nTWVzc2FnZXMuYXBwZW5kKHYpOworICAgICAgICBtX3BlbmRpbmdJbmNvbWlu
Z01lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBl
eGVjdXRlU2NyaXB0KHYpOworICAgIGV4ZWN1dGVTY3JpcHQobWVzc2FnZSk7CiB9CiAKIHZvaWQg
V2ViRGV2VG9vbHNGcm9udGVuZEltcGw6OmZyb250ZW5kTG9hZGVkKCkKIHsKICAgICBtX2xvYWRl
ZCA9IHRydWU7CiAKLSAgICBmb3IgKFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+OjppdGVyYXRvciBp
dCA9IG1fcGVuZGluZ0luY29taW5nTWVzc2FnZXMuYmVnaW4oKTsKKyAgICBmb3IgKFZlY3RvcjxX
ZWJTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0luY29taW5nTWVzc2FnZXMuYmVnaW4o
KTsKICAgICAgICAgIGl0ICE9IG1fcGVuZGluZ0luY29taW5nTWVzc2FnZXMuZW5kKCk7CiAgICAg
ICAgICArK2l0KSB7CiAgICAgICAgIGV4ZWN1dGVTY3JpcHQoKml0KTsKQEAgLTE1OCw3ICsxMzgs
NyBAQCB2b2lkIFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpmcm9udGVuZExvYWRlZCgpCiAgICAg
bV9wZW5kaW5nSW5jb21pbmdNZXNzYWdlcy5jbGVhcigpOwogfQogCi12b2lkIFdlYkRldlRvb2xz
RnJvbnRlbmRJbXBsOjpleGVjdXRlU2NyaXB0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2KQordm9p
ZCBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBXZWJTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgV2ViRnJhbWVJbXBsKiBmcmFtZSA9IG1fd2ViVmlld0ltcGwtPm1h
aW5GcmFtZUltcGwoKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CkBAIC0xNjgsMjYgKzE0
OCwxMiBAQCB2b2lkIFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpleGVjdXRlU2NyaXB0KGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB2KQogICAgIEFTU0VSVChkaXNwYXRjaEZ1bmN0aW9uLT5Jc0Z1bmN0
aW9uKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChkaXNwYXRjaEZ1bmN0aW9uKTsKICAgICBWZWN0b3I8IHY4
OjpIYW5kbGU8djg6OlZhbHVlPiA+IGFyZ3M7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
LnNpemUoKTsgaSsrKQotICAgICAgICBhcmdzLmFwcGVuZChUb1Y4U3RyaW5nKHYuYXQoaSkpKTsK
KyAgICBhcmdzLmFwcGVuZChUb1Y4U3RyaW5nKG1lc3NhZ2UpKTsKICAgICB2ODo6VHJ5Q2F0Y2gg
dHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKICAgICBmdW5jdGlvbi0+
Q2FsbChmcmFtZUNvbnRleHQtPkdsb2JhbCgpLCBhcmdzLnNpemUoKSwgYXJncy5kYXRhKCkpOwog
fQogCi12b2lkIFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpzZW5kUnBjTWVzc2FnZShjb25zdCBX
ZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQotewotICAgIG1fY2xpZW50LT5zZW5kTWVzc2Fn
ZVRvQWdlbnQoZGF0YSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJEZXZUb29sc0Zy
b250ZW5kSW1wbDo6anNEZWJ1Z2dlckNvbW1hbmQoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
LXsKLSAgICBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbCogZnJvbnRlbmQgPSBzdGF0aWNfY2FzdDxX
ZWJEZXZUb29sc0Zyb250ZW5kSW1wbCo+KHY4OjpFeHRlcm5hbDo6Q2FzdCgqYXJncy5EYXRhKCkp
LT5WYWx1ZSgpKTsKLSAgICBXZWJTdHJpbmcgY29tbWFuZCA9IFdlYkNvcmU6OnRvV2ViQ29yZVN0
cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1swXSk7Ci0gICAgZnJvbnRlbmQtPm1fY2xpZW50LT5zZW5k
RGVidWdnZXJDb21tYW5kVG9BZ2VudChjb21tYW5kKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRGV2VG9vbHNGcm9udGVuZEltcGw6
OmpzRGVidWdnZXJQYXVzZVNjcmlwdChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsKiBmcm9udGVuZCA9IHN0YXRpY19jYXN0PFdlYkRldlRv
b2xzRnJvbnRlbmRJbXBsKj4odjg6OkV4dGVybmFsOjpDYXN0KCphcmdzLkRhdGEoKSktPlZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5k
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5oCmlu
ZGV4IGZhNDcwN2QuLmMxYzQ3ODYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzRnJvbnRlbmRJbXBsLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgV2ViRGV2VG9vbHNG
cm9udGVuZEltcGxfaAogI2RlZmluZSBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbF9oCiAKLSNpbmNs
dWRlICJEZXZUb29sc1JQQy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViRGV2VG9vbHNGcm9udGVuZC5oIgogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTQ5LDE1ICs0OSwxMyBAQCBjbGFzcyBTdHJpbmc7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBKU0RlYnVnZ2VyQWdlbnRCb3VuZE9iajsKLWNsYXNzIEpTUHJv
ZmlsZXJBZ2VudEJvdW5kT2JqOwotY2xhc3MgSlNUb29sc0FnZW50Qm91bmRPYmo7CiBjbGFzcyBX
ZWJEZXZUb29sc0NsaWVudERlbGVnYXRlOwogY2xhc3MgV2ViVmlld0ltcGw7CiBzdHJ1Y3QgV2Vi
RGV2VG9vbHNNZXNzYWdlRGF0YTsKIAordXNpbmcgV2ViQ29yZTo6U3RyaW5nOworCiBjbGFzcyBX
ZWJEZXZUb29sc0Zyb250ZW5kSW1wbCA6IHB1YmxpYyBXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRl
bmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIERldlRvb2xzUlBDOjpE
ZWxlZ2F0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgTm9uY29weWFi
bGUgewogcHVibGljOgogICAgIFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsKApAQCAtNjYsMjggKzY0
LDIxIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxvY2FsZSk7
CiAgICAgdmlydHVhbCB+V2ViRGV2VG9vbHNGcm9udGVuZEltcGwoKTsKIAotICAgIC8vIERldlRv
b2xzUlBDOjpEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgc2VuZFJw
Y01lc3NhZ2UoY29uc3QgV2ViS2l0OjpXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKTsKLQog
ICAgIC8vIFdlYkRldlRvb2xzRnJvbnRlbmQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21BZ2VudChjb25zdCBXZWJLaXQ6OldlYkRldlRvb2xzTWVz
c2FnZURhdGEmIGRhdGEpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uSW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIHZvaWQgZnJvbnRlbmRMb2Fk
ZWQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGV4ZWN1dGVTY3JpcHQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHYpOworICAgIHZvaWQgZXhlY3V0ZVNjcmlwdChjb25zdCBXZWJTdHJpbmcmIG1lc3Nh
Z2UpOwogCi0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0RlYnVnZ2VyQ29tbWFu
ZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGpzRGVidWdnZXJQYXVzZVNjcmlwdChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsK
IAogICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7CiAgICAgV2ViS2l0OjpX
ZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9hcHBsaWNh
dGlvbkxvY2FsZTsKLSAgICBPd25QdHI8SlNEZWJ1Z2dlckFnZW50Qm91bmRPYmo+IG1fZGVidWdn
ZXJBZ2VudE9iajsKLSAgICBPd25QdHI8SlNQcm9maWxlckFnZW50Qm91bmRPYmo+IG1fcHJvZmls
ZXJBZ2VudE9iajsKLSAgICBPd25QdHI8SlNUb29sc0FnZW50Qm91bmRPYmo+IG1fdG9vbHNBZ2Vu
dE9iajsKICAgICBib29sIG1fbG9hZGVkOwotICAgIFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+IG1f
cGVuZGluZ0luY29taW5nTWVzc2FnZXM7CisgICAgVmVjdG9yPFdlYlN0cmluZz4gbV9wZW5kaW5n
SW5jb21pbmdNZXNzYWdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvanMvRGV2VG9vbHMuanMKaW5kZXggNjc0ZjFkNy4uOGUwN2E2YSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L2pzL0RldlRvb2xzLmpzCkBAIC00MSw0NCArNDEsMjIgQEAKICAqIEBwcmFtYSB7c3RyaW5nfSBt
ZXRob2ROYW1lCiAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW0xLCBwYXJhbTIsIHBhcmFtMyBBcmd1
bWVudHMgdG8gZGlzcGF0Y2guCiAgKi8KLWRldnRvb2xzJCRkaXNwYXRjaCA9IGZ1bmN0aW9uKHJl
bW90ZU5hbWUsIG1ldGhvZE5hbWUsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpCitkZXZ0b29scyQk
ZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXNzYWdlKQogewotICAgIHJlbW90ZU5hbWUgPSAiUmVtb3Rl
IiArIHJlbW90ZU5hbWUuc3Vic3RyaW5nKDAsIHJlbW90ZU5hbWUubGVuZ3RoIC0gOCk7Ci0gICAg
dmFyIGFnZW50ID0gd2luZG93W3JlbW90ZU5hbWVdOwotICAgIGlmICghYWdlbnQpIHsKLSAgICAg
ICAgZGVidWdQcmludCgiTm8gcmVtb3RlIGFnZW50ICciICsgcmVtb3RlTmFtZSArICInIGZvdW5k
LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHZhciBtZXRob2QgPSBhZ2VudFttZXRo
b2ROYW1lXTsKLSAgICBpZiAoIW1ldGhvZCkgewotICAgICAgICBkZWJ1Z1ByaW50KCJObyBtZXRo
b2QgJyIgKyByZW1vdGVOYW1lICsgIi4iICsgbWV0aG9kTmFtZSArICInIGZvdW5kLiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIG1ldGhvZC5jYWxsKHRoaXMsIHBhcmFtMSwgcGFyYW0y
LCBwYXJhbTMpOworICAgIHZhciBhcmdzID0gdHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciID8g
SlNPTi5wYXJzZShtZXNzYWdlKSA6IG1lc3NhZ2U7CisgICAgdmFyIG1ldGhvZE5hbWUgPSBhcmdz
WzBdOworICAgIHZhciBwYXJhbWV0ZXJzID0gYXJncy5zbGljZSgxKTsKKyAgICBXZWJJbnNwZWN0
b3JbbWV0aG9kTmFtZV0uYXBwbHkoV2ViSW5zcGVjdG9yLCBwYXJhbWV0ZXJzKTsKIH07CiAKIAog
ZGV2dG9vbHMuVG9vbHNBZ2VudCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBSZW1vdGVUb29sc0FnZW50
LmRpZERpc3BhdGNoT24gPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOwot
ICAgIFJlbW90ZVRvb2xzQWdlbnQuZGlzcGF0Y2hPbkNsaWVudCA9IHRoaXMuZGlzcGF0Y2hPbkNs
aWVudF8uYmluZCh0aGlzKTsKICAgICB0aGlzLnByb2ZpbGVyQWdlbnRfID0gbmV3IGRldnRvb2xz
LlByb2ZpbGVyQWdlbnQoKTsKIH07CiAKIAogLyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gc2NyaXB0
IFNjcmlwdCBleHJlc3Npb24gdG8gYmUgZXZhbHVhdGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZQot
ICogICAgIGluc3BlY3RlZCBwYWdlLgotICogQHBhcmFtIHtmdW5jdGlvbihPYmplY3R8c3RyaW5n
LCBib29sZWFuKTp1bmRlZmluZWR9IG9wdF9jYWxsYmFjayBGdW5jdGlvbiB0bwotICogICAgIGNh
bGwgd2l0aCB0aGUgcmVzdWx0LgotICovCi1kZXZ0b29scy5Ub29sc0FnZW50LnByb3RvdHlwZS5l
dmFsdWF0ZUphdmFTY3JpcHQgPSBmdW5jdGlvbihzY3JpcHQsIG9wdF9jYWxsYmFjaykKLXsKLSAg
ICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlKHNjcmlwdCwgb3B0X2NhbGxiYWNrIHx8IGZ1bmN0
aW9uKCkge30pOwotfTsKLQotCi0vKioKICAqIEByZXR1cm4ge2RldnRvb2xzLlByb2ZpbGVyQWdl
bnR9IFByb2ZpbGVyIGFnZW50IGluc3RhbmNlLgogICovCiBkZXZ0b29scy5Ub29sc0FnZW50LnBy
b3RvdHlwZS5nZXRQcm9maWxlckFnZW50ID0gZnVuY3Rpb24oKQpAQCAtODcsMzggKzY1LDYgQEAg
ZGV2dG9vbHMuVG9vbHNBZ2VudC5wcm90b3R5cGUuZ2V0UHJvZmlsZXJBZ2VudCA9IGZ1bmN0aW9u
KCkKIH07CiAKIAotLyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBTZXJpYWxpemVkIGNh
bGwgdG8gYmUgZGlzcGF0Y2hlZCBvbiBXZWJJbnNwZWN0b3IuCi0gKiBAcHJpdmF0ZQotICovCi1k
ZXZ0b29scy5Ub29sc0FnZW50LnByb3RvdHlwZS5kaXNwYXRjaE9uQ2xpZW50XyA9IGZ1bmN0aW9u
KG1lc3NhZ2UpCi17Ci0gICAgdmFyIGFyZ3MgPSB0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIg
PyBKU09OLnBhcnNlKG1lc3NhZ2UpIDogbWVzc2FnZTsKLSAgICB2YXIgbWV0aG9kTmFtZSA9IGFy
Z3NbMF07Ci0gICAgdmFyIHBhcmFtZXRlcnMgPSBhcmdzLnNsaWNlKDEpOwotICAgIFdlYkluc3Bl
Y3RvclttZXRob2ROYW1lXS5hcHBseShXZWJJbnNwZWN0b3IsIHBhcmFtZXRlcnMpOwotfTsKLQot
Ci0vKioKLSAqIEV2YWx1YXRlcyBqcyBleHByZXNzaW9uLgotICogQHBhcmFtIHtzdHJpbmd9IGV4
cHIKLSAqLwotZGV2dG9vbHMuVG9vbHNBZ2VudC5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlv
bihleHByKQotewotICAgIFJlbW90ZVRvb2xzQWdlbnQuZXZhbHVhdGUoZXhwcik7Ci19OwotCi0K
LS8qKgotICogUHJpbnRzIHN0cmluZyAgdG8gdGhlIGluc3BlY3RvciBjb25zb2xlIG9yIHNob3dz
IGFsZXJ0IGlmIHRoZSBjb25zb2xlIGRvZXNuJ3QKLSAqIGV4aXN0LgotICogQHBhcmFtIHtzdHJp
bmd9IHRleHQKLSAqLwotZnVuY3Rpb24gZGVidWdQcmludCh0ZXh0KSB7Ci0gICAgV2ViSW5zcGVj
dG9yLmxvZyh0ZXh0KTsKLX0KLQogCiAvKioKICAqIEdsb2JhbCBpbnN0YW5jZSBvZiB0aGUgdG9v
bHMgYWdlbnQuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzSG9z
dFN0dWIuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzSG9zdFN0dWIuanMKaW5k
ZXggNTJiMjhiYi4uZDMzMzNlMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9E
ZXZUb29sc0hvc3RTdHViLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHNI
b3N0U3R1Yi5qcwpAQCAtMzUsOCArMzUsNCBAQAogCiBpZiAoIXdpbmRvd1siUmVtb3RlRGVidWdn
ZXJDb21tYW5kRXhlY3V0b3IiXSkgewogICAgIHdpbmRvd1siUmVtb3RlRGVidWdnZXJDb21tYW5k
RXhlY3V0b3IiXSA9IHt9OwotICAgIHdpbmRvd1siUmVtb3RlUHJvZmlsZXJBZ2VudCJdID0ge307
Ci0gICAgd2luZG93WyJSZW1vdGVUb29sc0FnZW50Il0gPSB7Ci0gICAgICAgIGRpc3BhdGNoT25J
bnNwZWN0b3JDb250cm9sbGVyOiBmdW5jdGlvbigpIHt9Ci0gICAgfTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvanMvUHJvZmlsZXJBZ2VudC5qcyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvanMvUHJvZmlsZXJBZ2VudC5qcwppbmRleCAwYjY1YWNlLi43Zjc0NTk1IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL1Byb2ZpbGVyQWdlbnQuanMKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9qcy9Qcm9maWxlckFnZW50LmpzCkBAIC0zNyw4ICszNyw2IEBACiAgKi8K
IGRldnRvb2xzLlByb2ZpbGVyQWdlbnQgPSBmdW5jdGlvbigpCiB7Ci0gICAgUmVtb3RlUHJvZmls
ZXJBZ2VudC5kaWRHZXRBY3RpdmVQcm9maWxlck1vZHVsZXMgPSB0aGlzLl9kaWRHZXRBY3RpdmVQ
cm9maWxlck1vZHVsZXMuYmluZCh0aGlzKTsKLSAgICBSZW1vdGVQcm9maWxlckFnZW50LmRpZEdl
dExvZ0xpbmVzID0gdGhpcy5fZGlkR2V0TG9nTGluZXMuYmluZCh0aGlzKTsKIAogICAgIC8qKgog
ICAgICAqIFByb2ZpbGVyIGxvZyBwb3NpdGlvbi4KQEAgLTkyLDEwICs5MCwxNyBAQCBkZXZ0b29s
cy5Qcm9maWxlckFnZW50LnByb3RvdHlwZS5fZ2V0TmV4dExvZ0xpbmVzID0gZnVuY3Rpb24oaW1t
ZWRpYXRlbHkpCiAgICAgaWYgKHRoaXMuX2xhc3RSZXF1ZXN0ZWRMb2dQb3NpdGlvbiA9PSB0aGlz
Ll9sb2dQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIHZhciBwb3MgPSB0aGlzLl9sYXN0
UmVxdWVzdGVkTG9nUG9zaXRpb24gPSB0aGlzLl9sb2dQb3NpdGlvbjsKKworICAgIHZhciBjYWxs
SWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcCh0aGlzLl9kaWRHZXRQcm9maWxlckxvZ0xp
bmVzLmJpbmQodGhpcykpOwogICAgIGlmIChpbW1lZGlhdGVseSkKLSAgICAgICAgUmVtb3RlUHJv
ZmlsZXJBZ2VudC5nZXRMb2dMaW5lcyhwb3MpOwotICAgIGVsc2UKLSAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgUmVtb3RlUHJvZmlsZXJBZ2VudC5nZXRMb2dMaW5lcyhwb3MpOyB9LCA1
MDApOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFByb2ZpbGVyTG9nTGluZXMoY2FsbElk
LCBwb3MpOworICAgIGVsc2UgeworICAgICAgICBmdW5jdGlvbiBkZWxheWVkUmVxdWVzdCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0UHJvZmlsZXJMb2dMaW5l
cyhjYWxsSWQsIHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgc2V0VGltZW91dChkZWxheWVkUmVx
dWVzdCwgNTAwKTsKKyAgICB9CiB9OwogCiAKQEAgLTExNCwyMCArMTE5LDExIEBAIGRldnRvb2xz
LlByb2ZpbGVyQWdlbnQucHJvdG90eXBlLnN0YXJ0UHJvZmlsaW5nID0gZnVuY3Rpb24obW9kdWxl
cykKIAogCiAvKioKLSAqIEhhbmRsZXMgY3VycmVudCBwcm9maWxlciBzdGF0dXMuCi0gKiBAcGFy
YW0ge251bWJlcn0gbW9kdWxlcyBMaXN0IG9mIGFjdGl2ZSAoc3RhcnRlZCkgbW9kdWxlcy4KLSAq
LwotZGV2dG9vbHMuUHJvZmlsZXJBZ2VudC5wcm90b3R5cGUuX2RpZEdldEFjdGl2ZVByb2ZpbGVy
TW9kdWxlcyA9IGZ1bmN0aW9uKG1vZHVsZXMpCi17Ci19OwotCi0KLS8qKgogICogSGFuZGxlcyBh
IHBvcnRpb24gb2YgYSBwcm9maWxlciBsb2cgcmV0cmlldmVkIGJ5IGdldExvZ0xpbmVzIGNhbGwu
CiAgKiBAcGFyYW0ge251bWJlcn0gcG9zIEN1cnJlbnQgcG9zaXRpb24gaW4gbG9nLgogICogQHBh
cmFtIHtzdHJpbmd9IGxvZyBBIHBvcnRpb24gb2YgcHJvZmlsZXIgbG9nLgogICovCi1kZXZ0b29s
cy5Qcm9maWxlckFnZW50LnByb3RvdHlwZS5fZGlkR2V0TG9nTGluZXMgPSBmdW5jdGlvbihwb3Ms
IGxvZykKK2RldnRvb2xzLlByb2ZpbGVyQWdlbnQucHJvdG90eXBlLl9kaWRHZXRQcm9maWxlckxv
Z0xpbmVzID0gZnVuY3Rpb24ocG9zLCBsb2cpCiB7CiAgICAgdGhpcy5fbG9nUG9zaXRpb24gPSBw
b3M7CiAgICAgaWYgKGxvZy5sZW5ndGggPiAwKSB7CkBAIC0xMzgsMyArMTM0LDUgQEAgZGV2dG9v
bHMuUHJvZmlsZXJBZ2VudC5wcm90b3R5cGUuX2RpZEdldExvZ0xpbmVzID0gZnVuY3Rpb24ocG9z
LCBsb2cpCiAgICAgICAgIHRoaXMuX2xhc3RSZXF1ZXN0ZWRMb2dQb3NpdGlvbiA9IHRoaXMuX2xv
Z1Bvc2l0aW9uIC0gMTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuZGlkR2V0UHJvZmlsZXJM
b2dMaW5lcyA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL1Byb2ZpbGVyUHJvY2Vzc29yLmpzIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9qcy9Qcm9maWxlclByb2Nlc3Nvci5qcwppbmRleCBmNjc4ZDJjLi42MTcx
NGU4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL1Byb2ZpbGVyUHJvY2Vzc29y
LmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvUHJvZmlsZXJQcm9jZXNzb3IuanMKQEAg
LTI4MSw3ICsyODEsNyBAQCBkZXZ0b29scy5wcm9maWxlci5Qcm9jZXNzb3IucHJvdG90eXBlLl9f
cHJvdG9fXyA9IGRldnRvb2xzLnByb2ZpbGVyLkxvZ1JlYWRlci5wcgogICovCiBkZXZ0b29scy5w
cm9maWxlci5Qcm9jZXNzb3IucHJvdG90eXBlLnByaW50RXJyb3IgPSBmdW5jdGlvbihzdHIpCiB7
Ci0gICAgZGVidWdQcmludChzdHIpOworICAgIFdlYkluc3BlY3Rvci5sb2coc3RyKTsKIH07CiAK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGQ2ODQzNTUuLmYwYWQ2ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0w
OC0wMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBEZXZUb29sczog
R2V0IHJpZCBvZiBEZXZUb29scyBSUEMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzMzM1CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0FnZW50LmNwcDoKKyAgICAgICAgKERSVERldlRvb2xzQWdlbnQ6OnNl
bmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChEUlREZXZUb29sc0FnZW50
OjpjYWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0Fn
ZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDYWxs
QXJncy5oOgorICAgICAgICAoRFJURGV2VG9vbHNDYWxsQXJnczo6RFJURGV2VG9vbHNDYWxsQXJn
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQu
Y3BwOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToK
KyAgICAgICAgKERSVERldlRvb2xzQ2xpZW50OjpjYWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oOgorCiAyMDEwLTA4LTAyICBGdW1pdG9z
aGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQg
VGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJURGV2VG9vbHNBZ2VudC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlREZXZUb29sc0FnZW50LmNwcAppbmRleCAwZmY3N2EwLi45ZGJiYTQ5IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0Fn
ZW50LmNwcApAQCAtMzYsNyArMzYsNiBAQAogCiAjaW5jbHVkZSAicHVibGljL1dlYkNTdHJpbmcu
aCIKICNpbmNsdWRlICJwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oIgotI2luY2x1ZGUgInB1Ymxp
Yy9XZWJEZXZUb29sc01lc3NhZ2VEYXRhLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlN0cmluZy5o
IgogI2luY2x1ZGUgInB1YmxpYy9XZWJWaWV3LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuaCIKQEAgLTYwLDcgKzU5LDcgQEAgdm9pZCBEUlREZXZUb29sc0FnZW50
OjpzZXRXZWJWaWV3KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgbV93ZWJWaWV3ID0gd2ViVmlldzsK
IH0KIAotdm9pZCBEUlREZXZUb29sc0FnZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkKK3ZvaWQgRFJURGV2VG9vbHNBZ2VudDo6c2Vu
ZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkYXRh
KQogewogICAgIGlmIChtX2RydERldlRvb2xzQ2xpZW50KQogICAgICAgICAgbV9kcnREZXZUb29s
c0NsaWVudC0+YXN5bmNDYWxsKERSVERldlRvb2xzQ2FsbEFyZ3MoZGF0YSkpOwpAQCAtMTAwLDcg
Kzk5LDcgQEAgdm9pZCBEUlREZXZUb29sc0FnZW50OjpjYWxsKGNvbnN0IERSVERldlRvb2xzQ2Fs
bEFyZ3MgJmFyZ3MpCiB7CiAgICAgV2ViRGV2VG9vbHNBZ2VudCogYWdlbnQgPSB3ZWJEZXZUb29s
c0FnZW50KCk7CiAgICAgaWYgKGFnZW50KQotICAgICAgICBhZ2VudC0+ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKGFyZ3MubV9kYXRhKTsKKyAgICAgICAgYWdlbnQtPmRpc3BhdGNoT25JbnNw
ZWN0b3JCYWNrZW5kKGFyZ3MubV9kYXRhKTsKICAgICBpZiAoRFJURGV2VG9vbHNDYWxsQXJnczo6
Y2FsbHNDb3VudCgpID09IDEgJiYgbV9kcnREZXZUb29sc0NsaWVudCkKICAgICAgICAgbV9kcnRE
ZXZUb29sc0NsaWVudC0+YWxsTWVzc2FnZXNQcm9jZXNzZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaAppbmRl
eCAzN2ZjMTE5Li5iZjY5YzE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpXZWJWaWV3Kik7CiAKICAgICAvLyBXZWJE
ZXZUb29sc0FnZW50Q2xpZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViS2l0OjpXZWJEZXZUb29sc01lc3NhZ2VEYXRhJik7
CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgaW50IGhvc3RJZGVudGlmaWVyKCkgeyBy
ZXR1cm4gbV9yb3V0aW5nSUQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHJ1bnRpbWVGZWF0dXJlU3RhdGVDaGFuZ2VkKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBmZWF0dXJlLCBib29sIGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDYWxsQXJncy5oIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDYWxsQXJncy5oCmluZGV4
IGU0YTNkNDguLmIxYWMyZWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmgKQEAgLTMxLDIyICszMSwxNSBA
QAogI2lmbmRlZiBEUlREZXZUb29sc0NhbGxBcmdzX2gKICNkZWZpbmUgRFJURGV2VG9vbHNDYWxs
QXJnc19oCiAKLSNpbmNsdWRlICJwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgInB1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
CiBjbGFzcyBEUlREZXZUb29sc0NhbGxBcmdzIHsKIHB1YmxpYzoKLSAgICBEUlREZXZUb29sc0Nh
bGxBcmdzKGNvbnN0IFdlYktpdDo6V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkKKyAgICBE
UlREZXZUb29sc0NhbGxBcmdzKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkYXRhKQogICAgICAg
ICA6IG1fZGF0YShkYXRhKQogICAgIHsKICAgICAgICAgKyttX2NhbGxzQ291bnQ7Ci0KLSAgICAg
ICAgLy8gVGhlIHNhbWUgYmVoYXZpb3VyIGFzIHdlIGhhdmUgaW4gY2FzZSBvZiBJUEMuCi0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kYXRhLmFyZ3VtZW50cy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKG1fZGF0YS5hcmd1bWVudHNbaV0uaXNOdWxsKCkpCi0gICAgICAg
ICAgICAgICAgbV9kYXRhLmFyZ3VtZW50c1tpXSA9IFdlYktpdDo6V2ViU3RyaW5nOjpmcm9tVVRG
OCgiIik7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBEUlREZXZUb29sc0NhbGxBcmdzKGNvbnN0
IERSVERldlRvb2xzQ2FsbEFyZ3MmIGFyZ3MpCkBAIC02Myw3ICs1Niw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBpbnQgY2FsbHNDb3VudCgpIHsgcmV0dXJuIG1fY2FsbHNDb3VudDsgfQogCi0g
ICAgV2ViS2l0OjpXZWJEZXZUb29sc01lc3NhZ2VEYXRhIG1fZGF0YTsKKyAgICBXZWJLaXQ6Oldl
YlN0cmluZyBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGludCBtX2NhbGxzQ291bnQ7
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZU
b29sc0NsaWVudC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NsaWVudC5jcHAKaW5kZXggZTE0ZjAwOC4uZTViNTU2MiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBEUlREZXZUb29sc0NsaWVudDo6fkRSVERldlRvb2xzQ2xp
ZW50KCkKICAgICAgICAgbV9kcnREZXZUb29sc0FnZW50LT5kZXRhY2godGhpcyk7CiB9CiAKLXZv
aWQgRFJURGV2VG9vbHNDbGllbnQ6OnNlbmRNZXNzYWdlVG9BZ2VudChjb25zdCBXZWJEZXZUb29s
c01lc3NhZ2VEYXRhJiBkYXRhKQordm9pZCBEUlREZXZUb29sc0NsaWVudDo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQoY29uc3QgV2ViU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChtX2RydERldlRvb2xz
QWdlbnQpCiAgICAgICAgIG1fZHJ0RGV2VG9vbHNBZ2VudC0+YXN5bmNDYWxsKERSVERldlRvb2xz
Q2FsbEFyZ3MoZGF0YSkpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgRFJURGV2VG9vbHNDbGll
bnQ6OmFzeW5jQ2FsbChjb25zdCBEUlREZXZUb29sc0NhbGxBcmdzJiBhcmdzKQogCiB2b2lkIERS
VERldlRvb2xzQ2xpZW50OjpjYWxsKGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmIGFyZ3MpCiB7
Ci0gICAgbV93ZWJEZXZUb29sc0Zyb250ZW5kLT5kaXNwYXRjaE1lc3NhZ2VGcm9tQWdlbnQoYXJn
cy5tX2RhdGEpOworICAgIG1fd2ViRGV2VG9vbHNGcm9udGVuZC0+ZGlzcGF0Y2hPbkluc3BlY3Rv
ckZyb250ZW5kKGFyZ3MubV9kYXRhKTsKICAgICBpZiAoRFJURGV2VG9vbHNDYWxsQXJnczo6Y2Fs
bHNDb3VudCgpID09IDEpCiAgICAgICAgIGFsbE1lc3NhZ2VzUHJvY2Vzc2VkKCk7CiB9CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0Ns
aWVudC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHND
bGllbnQuaAppbmRleCBmMDg2NDRiLi42OTFlMWQ1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkRSVERldlRvb2xzQ2xpZW50KCk7CiAKICAg
ICAvLyBXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVh
bCB2b2lkIHNlbmRNZXNzYWdlVG9BZ2VudChjb25zdCBXZWJLaXQ6OldlYkRldlRvb2xzTWVzc2Fn
ZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgV2Vi
S2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZERlYnVnZ2VyQ29tbWFuZFRv
QWdlbnQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGNvbW1hbmQpOwogCiAgICAgdmlydHVhbCB2
b2lkIGFjdGl2YXRlV2luZG93KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63248</attachid>
            <date>2010-08-02 13:27:58 -0700</date>
            <delta_ts>2010-08-03 00:31:26 -0700</delta_ts>
            <desc>[PATCH] Now I removed all agents + RPC itself (bot fixed).</desc>
            <filename>fixed_mac</filename>
            <type>text/plain</type>
            <size>89954</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGI2ZDlmMS4uYmEyODI4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wOC0wMiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBEZXZUb29sczogR2V0IHJpZCBvZiBEZXZUb29s
cyBSUEMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzMzM1CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OmdldFByb2ZpbGVyTG9nTGluZXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFByb2ZpbGVyOjpnZXRQcm9maWxlckxvZ0xpbmVzKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY3JpcHRQcm9maWxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckJhY2tlbmQ6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZXJMb2dMaW5lcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNhYmxlUHJvZmlsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yik6CisKIDIwMTAtMDgtMDIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKaW5kZXggMTYxOTVhMy4uNGZhMzMx
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaApAQCAtNDAsNiArNDAsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBzdG9w
KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZv
aWQgdGFrZUhlYXBTbmFwc2hvdCgpIHsgfQorICAgIHN0YXRpYyBsb25nIGdldFByb2ZpbGVyTG9n
TGluZXMobG9uZywgU3RyaW5nKikgeyByZXR1cm4gMDsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCA0ODkxODky
Li45MjEzNzc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVy
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtNTks
NCArNTksMTQgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdCgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdjg6OlBST0ZJTEVSX01PRFVMRV9KU19DT05TVFJV
Q1RPUlMpOwogfQogCitsb25nIFNjcmlwdFByb2ZpbGVyOjpnZXRQcm9maWxlckxvZ0xpbmVzKGxv
bmcgcG9zaXRpb24sIFN0cmluZyogZGF0YSkKK3sKKyAgICBzdGF0aWMgY2hhciBidWZmZXJbNjU1
MzZdOworICAgIGNvbnN0IGludCByZWFkU2l6ZSA9IHY4OjpWODo6R2V0TG9nTGluZXMocG9zaXRp
b24sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxKTsKKyAgICBidWZmZXJbcmVhZFNpemVdID0g
J1wwJzsKKyAgICBwb3NpdGlvbiArPSByZWFkU2l6ZTsKKyAgICAqZGF0YSA9IGJ1ZmZlcjsKKyAg
ICByZXR1cm4gcG9zaXRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZXIuaAppbmRleCBhZmYzY2U3Li41YzEwNTRiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUq
IHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCB0YWtlSGVhcFNu
YXBzaG90KCk7CisgICAgc3RhdGljIGxvbmcgZ2V0UHJvZmlsZXJMb2dMaW5lcyhsb25nIHBvc2l0
aW9uLCBTdHJpbmcqIGRhdGEpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKaW5kZXggMTU1YmZjZC4uY2YzZjY4NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsCkBAIC05OCw2ICs5OCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBjbGVh
clByb2ZpbGVzKCk7CiAKICAgICAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KCk7CisgICAgICAg
IHZvaWQgZ2V0UHJvZmlsZXJMb2dMaW5lcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBpblBvc2l0
aW9uLCBvdXQgbG9uZyBvdXRQb3NpdGlvbiwgb3V0IFN0cmluZyBsb2cpOwogI2VuZGlmCiAgICAg
ICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNjcmlwdFNvdXJjZSk7
CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBp
biBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIFN0cmluZyBtZXRob2ROYW1lLCBpbiBTdHJpbmcg
YXJndW1lbnRzLCBpbiBib29sZWFuIGFzeW5jKTsKQEAgLTE1Nyw1ICsxNTgsNiBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGlu
IGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBpbiBTdHJpbmcgdmFsdWUpOwogICAgICAg
ICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3Jh
Z2VJZCwgaW4gU3RyaW5nIGtleSk7CiAjZW5kaWYKKwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuY3BwCmluZGV4IGYyN2I4MTIuLjNiZGNjZGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAi
UmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgog
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQpAQCAtMjkyLDggKzI5MywxOCBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmNsZWFyUHJv
ZmlsZXMoKQogCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnRha2VIZWFwU25hcHNob3QoKQogewot
ICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+dGFrZUhlYXBTbmFwc2hvdCgpOworICAgIFNjcmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNu
YXBzaG90KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZXJMb2dMaW5l
cyhsb25nIGNhbGxJZCwgbG9uZyBwb3NpdGlvbikKK3sKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxk
IG1ha2UgaW5zcGVjdG9yIGRpc3BhdGNoZXIgcGx1Z2dhYmxlLCBzbyB0aGF0IGVtYmVkZGVycyBj
b3VsZCBjb250cmlidXRlIEFQSXMgaW5zdGVhZCBvZiBwb2xsdXRpbmcgdGhlIGNvcmUgb25lCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzU3CisgICAg
aWYgKFJlbW90ZUluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCA9IHJlbW90ZUZyb250ZW5kKCkp
IHsKKyAgICAgICAgU3RyaW5nIGRhdGE7CisgICAgICAgIGludCBvdXRQb3NpdGlvbiA9IFNjcmlw
dFByb2ZpbGVyOjpnZXRQcm9maWxlckxvZ0xpbmVzKHBvc2l0aW9uLCAmZGF0YSk7CisgICAgICAg
IGZyb250ZW5kLT5kaWRHZXRQcm9maWxlckxvZ0xpbmVzKGNhbGxJZCwgb3V0UG9zaXRpb24sIGRh
dGEpOworICAgIH0KIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgK
aW5kZXggMTZkNTNjMC4uM2EyMTU5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJvZmlsZXMoKTsK
IAogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdCgpOworICAgIHZvaWQgZ2V0UHJvZmlsZXJMb2dM
aW5lcyhsb25nIGNhbGxJZCwgbG9uZyBwb3NpdGlvbik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0
SW5qZWN0ZWRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzNjliNDBiLi5jMjBjOTZhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY4OCwxNCArMTY4
OCw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVByb2ZpbGVyKGJvb2wgYWx3
YXlzKQogICAgIGlmIChtX2Zyb250ZW5kKQogICAgICAgICBtX2Zyb250ZW5kLT5wcm9maWxlcldh
c0Rpc2FibGVkKCk7CiB9Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6dGFrZUhlYXBTbmFw
c2hvdCgpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNj
cmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90KCk7Ci19CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IDE3NmRkMTEuLjAxNTNkOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTI2MCw4ICsyNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxl
UHJvZmlsZXIoYm9vbCBhbHdheXMgPSBmYWxzZSk7CiAgICAgYm9vbCBwcm9maWxlckVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBlbmFibGVkKCkgJiYgbV9wcm9maWxlckVuYWJsZWQ7IH0KIAotICAg
IHZvaWQgdGFrZUhlYXBTbmFwc2hvdCgpOwotCiAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcigpOwog
ICAgIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzID0gZmFsc2UpOwogICAgIGJvb2wg
ZGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckVuYWJsZWQ7IH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IGU2NTY3YmUuLjM4NDJkODUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGlkRGVzdHJveVdvcmtlcihjb25zdCBJ
bnNwZWN0b3JXb3JrZXJSZXNvdXJjZSYpOwogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVIpCiAKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUiAmJiAhVVNFKEpTQykKKyAgICAgICAgdm9pZCBkaWRHZXRBY3RpdmVQcm9maWxl
ck1vZHVsZXMoaW50IGZsYWdzKTsKKyAgICAgICAgdm9pZCBkaWRHZXRQcm9maWxlckxvZ0xpbmVz
KGludCBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyNlbmRpZgorCiAgICAgICAgIHZv
aWQgZGlkR2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0QXJyYXkmIGNvb2tpZXMs
IGNvbnN0IFN0cmluZyYgY29va2llc1N0cmluZyk7CiAgICAgICAgIHZvaWQgZGlkRGlzcGF0Y2hP
bkluamVjdGVkU2NyaXB0KGxvbmcgY2FsbElkLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJlc3Vs
dCwgYm9vbCBpc0V4Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcwppbmRleCA3Y2ZjOGExLi5mY2IwYjJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHVi
LmpzCkBAIC04MSw2ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1YiA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzdG9wVGltZWxpbmVQcm9m
aWxlciIpOwogICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0b3JlTGFzdEFjdGl2ZVBhbmVs
Iik7CiAgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgidGFrZUhlYXBTbmFwc2hvdCIpOworICAg
IHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldFByb2ZpbGVyTG9nTGluZXMiKTsKIAogICAgIHRo
aXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldEFsbFN0eWxlcyIpOwogICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoImdldFN0eWxlcyIpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjQxNzk5Yy4uZjFlNzJkYSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTAtMDgtMDIgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hyb21pdW0gRGV2VG9vbHM6IEdldCByaWQgb2YgRGV2VG9vbHMg
UlBDLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MzMzNQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9v
bHNBZ2VudC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmRNZXNzYWdlVG9JbnNw
ZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6
OnNlbmREZWJ1Z2dlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRD
bGllbnQ6OnNlbmREaXNwYXRjaFRvQVBVKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNG
cm9udGVuZC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQ6OnNlbmRNZXNzYWdl
VG9CYWNrZW5kKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvQVBVQWdlbnREZWxlZ2F0ZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9EZWJ1Z2dlckFnZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0RlYnVn
Z2VyQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGVidWdnZXJBZ2VudEltcGw6OkRl
YnVnZ2VyQWdlbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6RGVidWdnZXJBZ2VudEltcGw6OmRl
YnVnZ2VyT3V0cHV0KToKKyAgICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudEltcGwuaDoKKyAgICAg
ICAgKiBzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZWJ1
Z2dlckFnZW50TWFuYWdlcjo6ZGVidWdEZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpEZWJ1Z2dl
ckFnZW50TWFuYWdlcjo6b25WOERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkRlYnVn
Z2VyQWdlbnRNYW5hZ2VyOjpleGVjdXRlRGVidWdnZXJDb21tYW5kKToKKyAgICAgICAgKFdlYktp
dDo6RGVidWdnZXJBZ2VudE1hbmFnZXI6OnNlbmRDb21tYW5kVG9WOCk6CisgICAgICAgIChXZWJL
aXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29udGludWVDb21tYW5kVG9WOCk6CisgICAg
ICAgICogc3JjL0RldlRvb2xzUlBDLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0RldlRvb2xz
UlBDSlMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgICogc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0JhY2tl
bmQpOgorICAgICAgICAqIHNyYy9Qcm9maWxlckFnZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
c3JjL1Byb2ZpbGVyQWdlbnRJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvUHJvZmls
ZXJBZ2VudEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvVG9vbHNBZ2VudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpXZWJEZXZU
b29sc0FnZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjph
dHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkQ2xlYXJX
aW5kb3dPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlz
cGF0Y2hPbkluc3BlY3RvckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Fn
ZW50SW1wbDo6anNEaXNwYXRjaE9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9v
bHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZEltcGw6OldlYkRldlRv
b2xzRnJvbnRlbmRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZElt
cGw6OmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
dlRvb2xzRnJvbnRlbmRJbXBsOjpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzRnJvbnRlbmRJbXBsOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBzcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuaDoKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6Cisg
ICAgICAgIChkZXZ0b29scy5kaXNwYXRjaCk6CisgICAgICAgIChkZXZ0b29scy5Ub29sc0FnZW50
KToKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHNIb3N0U3R1Yi5qczoKKyAgICAgICAgKiBzcmMv
anMvUHJvZmlsZXJBZ2VudC5qczoKKyAgICAgICAgKGRldnRvb2xzLlByb2ZpbGVyQWdlbnQpOgor
ICAgICAgICAoZGV2dG9vbHMuUHJvZmlsZXJBZ2VudC5wcm90b3R5cGUuX2dldE5leHRMb2dMaW5l
cy5lbHNlLmRlbGF5ZWRSZXF1ZXN0KToKKyAgICAgICAgKGRldnRvb2xzLlByb2ZpbGVyQWdlbnQu
cHJvdG90eXBlLl9nZXROZXh0TG9nTGluZXMpOgorICAgICAgICAoZGV2dG9vbHMuUHJvZmlsZXJB
Z2VudC5wcm90b3R5cGUuX2RpZEdldFByb2ZpbGVyTG9nTGluZXMpOgorICAgICAgICAqIHNyYy9q
cy9Qcm9maWxlclByb2Nlc3Nvci5qczoKKyAgICAgICAgKGRldnRvb2xzLnByb2ZpbGVyLlByb2Nl
c3Nvci5wcm90b3R5cGUucHJpbnRFcnJvcik6CisKIDIwMTAtMDgtMDIgIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtv
di4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggMTBmMDFlNS4uOWRhODVjZCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTE0Miw4ICsxNDIsNiBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmQu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50Lmgn
LAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oJywKLSAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRHJh
Z0RhdGEuaCcsCkBAIC0yNzEsNyArMjY5LDYgQEAKICAgICAgICAgICAgICAgICAncHVibGljL3dp
bi9XZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3dpbi9XZWJT
Y3JlZW5JbmZvRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3dpbi9XZWJTY3Jl
ZW5JbmZvRmFjdG9yeS5oJywKLSAgICAgICAgICAgICAgICAnc3JjL0FQVUFnZW50RGVsZWdhdGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwJywKQEAgLTI5MiwxMyArMjg5
LDEwIEBACiAgICAgICAgICAgICAgICAgJ3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwJywKLSAgICAgICAgICAgICAgICAnc3Jj
L0RlYnVnZ2VyQWdlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50SW1w
bC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudEltcGwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9E
ZXZUb29sc1JQQy5oJywKLSAgICAgICAgICAgICAgICAnc3JjL0RldlRvb2xzUlBDSlMuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
RHJhZ0NsaWVudEltcGwuY3BwJywKQEAgLTM0Myw5ICszMzcsNiBAQAogICAgICAgICAgICAgICAg
ICdzcmMvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvUHJv
ZmlsZXJBZ2VudC5oJywKLSAgICAgICAgICAgICAgICAnc3JjL1Byb2ZpbGVyQWdlbnRJbXBsLmNw
cCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9Qcm9maWxlckFnZW50SW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1Jlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9T
aGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Tb2NrZXRT
dHJlYW1IYW5kbGUuY3BwJywKQEAgLTM1OSw3ICszNTAsNiBAQAogICAgICAgICAgICAgICAgICdz
cmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9y
YWdlTmFtZXNwYWNlUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9UZW1wb3JhcnlHbHVl
LmgnLAotICAgICAgICAgICAgICAgICdzcmMvVG9vbHNBZ2VudC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
QWNjZXNzaWJpbGl0eUNhY2hlSW1wbC5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZU
b29sc0FnZW50LmgKaW5kZXggMGUyNmNjOS4uZDlmOWNjYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGRpZE5hdmlnYXRlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uSW5zcGVjdG9yQmFja2VuZChjb25zdCBXZWJT
dHJpbmcmIG1lc3NhZ2UpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0RWxlbWVudEF0
KGNvbnN0IFdlYlBvaW50JikgPSAwOwogCkBAIC03Miw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICAv
LyBBc3luY2hyb25vdXNseSByZXF1ZXN0IGRlYnVnZ2VyIHRvIHBhdXNlIGltbWVkaWF0ZWx5Lgog
ICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgZGVidWdnZXJQYXVzZVNjcmlwdCgpOwogCi0gICAg
V0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhy
ZWFkKFdlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydCosIGNvbnN0IFdlYkRldlRvb2xzTWVzc2Fn
ZURhdGEmKTsKLQogICAgIHR5cGVkZWYgdm9pZCAoKk1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVy
KSgpOwogCiAgICAgLy8gSW5zdGFsbHMgZGlzcGF0Y2ggaGFuZGxlIHRoYXQgaXMgZ29pbmcgdG8g
YmUgY2FsbGVkIHBlcmlvZGljYWxseQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZUb29sc0FnZW50Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dlRvb2xzQWdlbnRDbGllbnQuaAppbmRleCA5MWZkM2U4Li4wOGJkZDU4IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNDAsNyArNDAs
OSBAQCBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2ViRGV2VG9vbHNB
Z2VudENsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBXZWJTdHJpbmcmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2VuZERlYnVnZ2VyT3V0cHV0KGNvbnN0IFdlYlN0cmluZyYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZW5kRGlzcGF0Y2hUb0FQVShjb25zdCBXZWJTdHJpbmcmKSB7IH0K
IAogICAgIC8vIEludmFsaWRhdGVzIHdpZGdldCB3aGljaCBsZWFkcyB0byB0aGUgcmVwYWludC4K
ICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmQuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZC5oCmluZGV4IGQ5NWYzNWEuLjAzMjVmOTIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZC5oCkBAIC0zOCw3ICsz
OCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVu
dDsKIGNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlZpZXc7Ci1zdHJ1Y3QgV2ViRGV2VG9vbHNN
ZXNzYWdlRGF0YTsKIAogLy8gV2ViRGV2VG9vbHNGcm9udGVuZCByZXByZXNlbnRzIERldlRvb2xz
IGNsaWVudCBzaXR0aW5nIGluIHRoZSBHbHVlLiBJdCBwcm92aWRlcwogLy8gZGlyZWN0IGFuZCBk
ZWxlZ2F0ZSBBcGlzIHRvIHRoZSBob3N0LgpAQCAtNTAsNyArNDksNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIH5XZWJEZXZUb29sc0Zyb250ZW5kKCkge30KIAotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaE1lc3NhZ2VGcm9tQWdlbnQoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hPbkluc3BlY3RvckZyb250ZW5kKGNvbnN0IFdl
YlN0cmluZyYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaAppbmRleCAxNTlh
M2NkLi5iODc2YzMzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRv
b2xzRnJvbnRlbmRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRv
b2xzRnJvbnRlbmRDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBXZWJEZXZUb29sc0Zy
b250ZW5kQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KCkg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0FnZW50KGNvbnN0IFdlYkRldlRv
b2xzTWVzc2FnZURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tl
bmQoY29uc3QgV2ViU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbmREZWJ1Z2dlckNv
bW1hbmRUb0FnZW50KGNvbnN0IFdlYlN0cmluZyYgY29tbWFuZCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNlbmREZWJ1Z2dlclBhdXNlU2NyaXB0KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VEYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDliZjlhY2QuLjAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZUb29sc01lc3NhZ2VEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJEZXZUb29sc01lc3NhZ2VEYXRhX2gKLSNkZWZpbmUgV2ViRGV2VG9vbHNNZXNzYWdlRGF0
YV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhIHsKLSAgICBXZWJTdHJpbmcgY2xhc3NOYW1lOwotICAgIFdlYlN0
cmluZyBtZXRob2ROYW1lOwotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFyZ3VtZW50czsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0LmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1NGMwN2YxLi4wMDAwMDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnRfaAotI2RlZmluZSBX
ZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnRfaAotCi0jaW5jbHVkZSAiV2ViQ1N0cmluZy5oIgot
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVjdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhOwotCi1jbGFzcyBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQg
ewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkKGNvbnN0
IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0FQVUFnZW50RGVs
ZWdhdGUuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQVBVQWdlbnREZWxlZ2F0ZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGJlNzAyLi4wMDAwMDAwCi0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvQVBVQWdlbnREZWxlZ2F0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgQVBVQWdlbnREZWxlZ2F0ZV9oCi0jZGVmaW5lIEFQVUFnZW50RGVsZWdhdGVfaAot
Ci0jaW5jbHVkZSAiRGV2VG9vbHNSUEMuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNkZWZp
bmUgQVBVX0FHRU5UX0RFTEVHQVRFX1NUUlVDVChNRVRIT0QwLCBNRVRIT0QxLCBNRVRIT0QyLCBN
RVRIT0QzLCBNRUhUT0Q0LCBNRVRIT0Q1KSBcCi0gICAgLyogU2VuZHMgYSBqc29uIG9iamVjdCB0
byBhcHUuICovIFwKLSAgICBNRVRIT0QxKGRpc3BhdGNoVG9BcHUsIFN0cmluZyAvKiBkYXRhICov
KQotCi1ERUZJTkVfUlBDX0NMQVNTKEFwdUFnZW50RGVsZWdhdGUsIEFQVV9BR0VOVF9ERUxFR0FU
RV9TVFJVQ1QpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EZWJ1Z2dlckFnZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3Y2RlMTEu
LjAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEZWJ1Z2dlckFnZW50X2gKLSNkZWZpbmUg
RGVidWdnZXJBZ2VudF9oCi0KLSNpbmNsdWRlICJEZXZUb29sc1JQQy5oIgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotI2RlZmluZSBERUJVR0dFUl9BR0VOVF9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9E
MSwgTUVUSE9EMiwgTUVUSE9EMywgTUVUSE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFJlcXVlc3Rz
IGdsb2JhbCBjb250ZXh0IGlkIG9mIHRoZSBpbnNwZWN0ZWQgdGFiLiAqLyBcCi0gICAgTUVUSE9E
MChnZXRDb250ZXh0SWQpIFwKLSAgICBcCi0gICAgLyogUmVxdWVzdCB2OCB0byBwcm9jZXNzIGFs
bCBkZWJ1ZyBjb21tYW5kcyBpbiB0aGUgcXVldWUuICovIFwKLSAgICBNRVRIT0QwKHByb2Nlc3NE
ZWJ1Z0NvbW1hbmRzKQotCi1ERUZJTkVfUlBDX0NMQVNTKERlYnVnZ2VyQWdlbnQsIERFQlVHR0VS
X0FHRU5UX1NUUlVDVCkKLQotI2RlZmluZSBERUJVR0dFUl9BR0VOVF9ERUxFR0FURV9TVFJVQ1Qo
TUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwgTUVUSE9EMywgTUVUSE9ENCwgTUVUSE9ENSkgXAot
ICAgIE1FVEhPRDEoZGVidWdnZXJPdXRwdXQsIFN0cmluZyAvKiBvdXRwdXQgdGV4dCAqLykgXAot
ICAgIFwKLSAgICAvKiBQdXNoZXMgZGVidWdnZXIgY29udGV4dCBpZCBpbnRvIHRoZSBjbGllbnQu
ICovIFwKLSAgICBNRVRIT0QxKHNldENvbnRleHRJZCwgaW50IC8qIGNvbnRleHQgaWQgKi8pCi0K
LURFRklORV9SUENfQ0xBU1MoRGVidWdnZXJBZ2VudERlbGVnYXRlLCBERUJVR0dFUl9BR0VOVF9E
RUxFR0FURV9TVFJVQ1QpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5jcHAKaW5kZXggZGRlOWUxZC4uNGRjNDBh
OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5jcHAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKICNpbmNsdWRlICJXZWJW
aWV3SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01MywxMSArNTQsMTEgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIERlYnVnZ2VyQWdlbnRJbXBsOjpEZWJ1Z2dlckFnZW50SW1w
bCgKICAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwsCi0gICAgRGVidWdnZXJBZ2VudERlbGVn
YXRlKiBkZWxlZ2F0ZSwKLSAgICBXZWJEZXZUb29sc0FnZW50SW1wbCogd2ViZGV2dG9vbHNBZ2Vu
dCkKKyAgICBXZWJEZXZUb29sc0FnZW50SW1wbCogd2ViZGV2dG9vbHNBZ2VudCwKKyAgICBXZWJE
ZXZUb29sc0FnZW50Q2xpZW50KiB3ZWJkZXZ0b29sc0FnZW50Q2xpZW50KQogICAgIDogbV93ZWJW
aWV3SW1wbCh3ZWJWaWV3SW1wbCkKLSAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgLCBt
X3dlYmRldnRvb2xzQWdlbnQod2ViZGV2dG9vbHNBZ2VudCkKKyAgICAsIG1fd2ViZGV2dG9vbHNB
Z2VudENsaWVudCh3ZWJkZXZ0b29sc0FnZW50Q2xpZW50KQogICAgICwgbV9hdXRvQ29udGludWVP
bkV4Y2VwdGlvbihmYWxzZSkKIHsKICAgICBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6ZGVidWdBdHRh
Y2godGhpcyk7CkBAIC02OCwyMCArNjksOSBAQCBEZWJ1Z2dlckFnZW50SW1wbDo6fkRlYnVnZ2Vy
QWdlbnRJbXBsKCkKICAgICBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6ZGVidWdEZXRhY2godGhpcyk7
CiB9CiAKLXZvaWQgRGVidWdnZXJBZ2VudEltcGw6OmdldENvbnRleHRJZCgpCi17Ci0gICAgbV9k
ZWxlZ2F0ZS0+c2V0Q29udGV4dElkKG1fd2ViZGV2dG9vbHNBZ2VudC0+aG9zdElkKCkpOwotfQot
Ci12b2lkIERlYnVnZ2VyQWdlbnRJbXBsOjpwcm9jZXNzRGVidWdDb21tYW5kcygpCi17Ci0gICAg
RGVidWdnZXJBZ2VudE1hbmFnZXI6OlV0aWxpdHlDb250ZXh0U2NvcGUgdXRpbGl0eVNjb3BlOwot
ICAgIHY4OjpEZWJ1Zzo6UHJvY2Vzc0RlYnVnTWVzc2FnZXMoKTsKLX0KLQogdm9pZCBEZWJ1Z2dl
ckFnZW50SW1wbDo6ZGVidWdnZXJPdXRwdXQoY29uc3QgU3RyaW5nJiBjb21tYW5kKQogewotICAg
IG1fZGVsZWdhdGUtPmRlYnVnZ2VyT3V0cHV0KGNvbW1hbmQpOworICAgIG1fd2ViZGV2dG9vbHNB
Z2VudENsaWVudC0+c2VuZERlYnVnZ2VyT3V0cHV0KGNvbW1hbmQpOwogICAgIG1fd2ViZGV2dG9v
bHNBZ2VudC0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJB
Z2VudEltcGwuaAppbmRleCAwZTZlNmFmLi5kOGIxM2ZkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9E
ZWJ1Z2dlckFnZW50SW1wbC5oCkBAIC0zMSw4ICszMSw2IEBACiAjaWZuZGVmIERlYnVnZ2VyQWdl
bnRJbXBsX2gKICNkZWZpbmUgRGVidWdnZXJBZ2VudEltcGxfaAogCi0jaW5jbHVkZSAiRGVidWdn
ZXJBZ2VudC5oIgotCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDcsMjAgKzQ1LDE3IEBAIGNsYXNzIFN0
cmluZzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGll
bnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50SW1wbDsKIGNsYXNzIFdlYlZpZXdJbXBsOwogCi1j
bGFzcyBEZWJ1Z2dlckFnZW50SW1wbCA6IHB1YmxpYyBEZWJ1Z2dlckFnZW50IHsKK2NsYXNzIERl
YnVnZ2VyQWdlbnRJbXBsIHsKIHB1YmxpYzoKICAgICBEZWJ1Z2dlckFnZW50SW1wbChXZWJLaXQ6
OldlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICBEZWJ1Z2dl
ckFnZW50RGVsZWdhdGUqIGRlbGVnYXRlLAotICAgICAgICAgICAgICAgICAgICAgIFdlYkRldlRv
b2xzQWdlbnRJbXBsKiB3ZWJkZXZ0b29sc0FnZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICBX
ZWJEZXZUb29sc0FnZW50SW1wbCogd2ViZGV2dG9vbHNBZ2VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiB3ZWJkZXZ0b29sc0FnZW50Q2xpZW50KTsKICAg
ICB2aXJ0dWFsIH5EZWJ1Z2dlckFnZW50SW1wbCgpOwogCi0gICAgLy8gRGVidWdnZXJBZ2VudCBp
bXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29udGV4dElkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEZWJ1Z0NvbW1hbmRzKCk7Ci0KICAgICB2b2lkIGRlYnVnZ2VyT3V0
cHV0KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgb3V0KTsKIAogICAgIHZvaWQgc2V0QXV0b0NvbnRp
bnVlT25FeGNlcHRpb24oYm9vbCBhdXRvQ29udGludWUpIHsgbV9hdXRvQ29udGludWVPbkV4Y2Vw
dGlvbiA9IGF1dG9Db250aW51ZTsgfQpAQCAtODcsOCArODIsOCBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKLSAgICBEZWJ1Z2dl
ckFnZW50RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAgICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIG1f
d2ViZGV2dG9vbHNBZ2VudDsKKyAgICBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBtX3dlYmRldnRv
b2xzQWdlbnRDbGllbnQ7CiAgICAgYm9vbCBtX2F1dG9Db250aW51ZU9uRXhjZXB0aW9uOwogfTsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcAppbmRleCAx
Y2M2NzQwLi4yM2NiZDczIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2Vy
QWdlbnRNYW5hZ2VyLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRN
YW5hZ2VyLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6
OmRlYnVnRGV0YWNoKERlYnVnZ2VyQWdlbnRJbXBsKiBkZWJ1Z2dlckFnZW50KQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgIC8vIFJlbW92ZSBhbGwgYnJlYWtwb2ludHMgc2V0IGJ5IHRo
ZSBhZ2VudC4KLSAgICAgIFN0cmluZyBjbGVhckJyZWFrcG9pbnRHcm91cENtZCA9IFN0cmluZzo6
Zm9ybWF0KAorICAgICAgV2ViQ29yZTo6U3RyaW5nIGNsZWFyQnJlYWtwb2ludEdyb3VwQ21kID0g
V2ViQ29yZTo6U3RyaW5nOjpmb3JtYXQoCiAgICAgICAgICAgIntcInNlcVwiOjEsXCJ0eXBlXCI6
XCJyZXF1ZXN0XCIsXCJjb21tYW5kXCI6XCJjbGVhcmJyZWFrcG9pbnRncm91cFwiLCIKICAgICAg
ICAgICAgICAgIlwiYXJndW1lbnRzXCI6e1wiZ3JvdXBJZFwiOiVkfX0iLAogICAgICAgICAgIGhv
c3RJZCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6b25W
OERlYnVnTWVzc2FnZShjb25zdCB2ODo6RGVidWc6Ok1lc3NhZ2UmIG1lc3NhZ2UpCiB7CiAgICAg
djg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIHY4OjpTdHJpbmc6OlZhbHVlIHZhbHVlKG1lc3Nh
Z2UuR2V0SlNPTigpKTsKLSAgICBTdHJpbmcgb3V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPigqdmFsdWUpLCB2YWx1ZS5sZW5ndGgoKSk7CisgICAgV2ViQ29yZTo6U3RyaW5nIG91dChy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oKnZhbHVlKSwgdmFsdWUubGVuZ3RoKCkpOwog
CiAgICAgLy8gSWYgY2FsbGVyRGF0YSBpcyBub3QgMCB0aGUgbWVzc2FnZSBpcyBhIHJlc3BvbnNl
IHRvIGEgZGVidWdnZXIgY29tbWFuZC4KICAgICBpZiAodjg6OkRlYnVnOjpDbGllbnREYXRhKiBj
YWxsZXJEYXRhID0gbWVzc2FnZS5HZXRDbGllbnREYXRhKCkpIHsKQEAgLTI0OCw3ICsyNDgsNyBA
QCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpwYXVzZVNjcmlwdCgpCiAgICAgICAgIHY4OjpE
ZWJ1Zzo6RGVidWdCcmVhaygpOwogfQogCi12b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpleGVj
dXRlRGVidWdnZXJDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgaW50IGNhbGxlcklkKQor
dm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6ZXhlY3V0ZURlYnVnZ2VyQ29tbWFuZChjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmIGNvbW1hbmQsIGludCBjYWxsZXJJZCkKIHsKICAgICBzZW5kQ29tbWFu
ZFRvVjgoY29tbWFuZCwgbmV3IENhbGxlcklkV3JhcHBlcihjYWxsZXJJZCkpOwogfQpAQCAtMjg2
LDE0ICsyODYsMTQgQEAgdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6b25OYXZpZ2F0ZSgpCiAg
ICAgICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29udGludWVDb21tYW5kVG9WOCgpOwog
fQogCi12b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29tbWFuZFRvVjgoY29uc3QgU3Ry
aW5nJiBjbWQsIHY4OjpEZWJ1Zzo6Q2xpZW50RGF0YSogZGF0YSkKK3ZvaWQgRGVidWdnZXJBZ2Vu
dE1hbmFnZXI6OnNlbmRDb21tYW5kVG9WOChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGNtZCwgdjg6
OkRlYnVnOjpDbGllbnREYXRhKiBkYXRhKQogewogICAgIHY4OjpEZWJ1Zzo6U2VuZENvbW1hbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGNtZC5jaGFyYWN0ZXJzKCkpLCBjbWQu
bGVuZ3RoKCksIGRhdGEpOwogfQogCiB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZW5kQ29u
dGludWVDb21tYW5kVG9WOCgpCiB7Ci0gICAgU3RyaW5nIGNvbnRpbnVlQ21kKCJ7XCJzZXFcIjox
LFwidHlwZVwiOlwicmVxdWVzdFwiLFwiY29tbWFuZFwiOlwiY29udGludWVcIn0iKTsKKyAgICBX
ZWJDb3JlOjpTdHJpbmcgY29udGludWVDbWQoIntcInNlcVwiOjEsXCJ0eXBlXCI6XCJyZXF1ZXN0
XCIsXCJjb21tYW5kXCI6XCJjb250aW51ZVwifSIpOwogICAgIHNlbmRDb21tYW5kVG9WOChjb250
aW51ZUNtZCwgbmV3IENhbGxlcklkV3JhcHBlcigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9EZXZUb29sc1JQQy5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZUb29s
c1JQQy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTc2ODIxLi4wMDAwMDAwCi0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2VG9vbHNSUEMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotLy8gRGV2VG9vbHMgUlBDIHN1YnN5c3RlbSBpcyBhIHNpbXBsZSBzdHJpbmcg
c2VyaWFsaXphdGlvbi1iYXNlZCBycGMKLS8vIGltcGxlbWVudGF0aW9uLiBUaGUgY2xpZW50IGlz
IHJlc3BvbnNpYmxlIGZvciBkZWZpbmluZyB0aGUgUnBjLWVuYWJsZWQKLS8vIGludGVyZmFjZSBp
biB0ZXJtcyBvZiBpdHMgbWFjcm9zOgotLy8KLS8vICNkZWZpbmUgTVlBUElfU1RSVUNUKE1FVEhP
RDAsIE1FVEhPRDEsIE1FVEhPRDIsIE1FVEhPRDMpCi0vLyAgIE1FVEhPRDAoTWV0aG9kMSkKLS8v
ICAgTUVUSE9EMShNZXRob2QzLCBpbnQpCi0vLyAoc25pcHBldCBhYm92ZSBzaG91bGQgYmUgbXVs
dGlsaW5lIG1hY3JvLCBhZGQgdHJhaWxpbmcgYmFja3NsYXNoZXMpCi0vLwotLy8gREVGSU5FX1JQ
Q19DTEFTUyhNeUFwaSwgTVlBUElfU1RSVUNUKQotLy8KLS8vIFRoZSBzbmlwcGV0IGFib3ZlIHdp
bGwgZ2VuZXJhdGUgdGhyZWUgY2xhc3NlczogTXlBcGksIE15QXBpU3R1YiBhbmQKLS8vIE15QXBp
RGlzcGF0Y2guCi0vLwotLy8gMS4gRm9yIGVhY2ggbWV0aG9kIGRlZmluZWQgaW4gdGhlIG1hcmNv
IE15QXBpIHdpbGwgaGF2ZSBhCi0vLyBwdXJlIHZpcnR1YWwgZnVuY3Rpb24gZ2VuZXJhdGVkLCBz
byB0aGF0IE15QXBpIHdvdWxkIGxvb2sgbGlrZToKLS8vCi0vLyBjbGFzcyBNeUFwaSB7Ci0vLyBw
cml2YXRlOgotLy8gICAgIE15QXBpKCkgeyB9Ci0vLyAgICAgfk15QXBpKCkgeyB9Ci0vLyAgICAg
dmlydHVhbCB2b2lkIG1ldGhvZDEoKSA9IDA7Ci0vLyAgICAgdmlydHVhbCB2b2lkIG1ldGhvZDIo
Ci0vLyAgICAgICAgIGludCBwYXJhbTEsCi0vLyAgICAgICAgIGNvbnN0IFN0cmluZyYgcGFyYW0y
LAotLy8gICAgICAgICBjb25zdCBWYWx1ZSYgcGFyYW0zKSA9IDA7Ci0vLyAgICAgdmlydHVhbCB2
b2lkIG1ldGhvZDMoaW50IHBhcmFtMSkgPSAwOwotLy8gfTsKLS8vCi0vLyAyLiBNeUFwaVN0dWIg
d2lsbCBpbXBsZW1lbnQgTXlBcGkgaW50ZXJmYWNlIGFuZCB3b3VsZCBzZXJpYWxpemUgYWxsIGNh
bGxzCi0vLyBpbnRvIHRoZSBzdHJpbmctYmFzZWQgY2FsbHMgb2YgdGhlIHVuZGVybHlpbmcgdHJh
bnNwb3J0OgotLy8KLS8vIERldlRvb2xzUlBDOjpEZWxlZ2F0ZSogdHJhbnNwb3J0OwotLy8gbXlB
cGkgPSBuZXcgTXlBcGlTdHViKHRyYW5zcG9ydCk7Ci0vLyBteUFwaS0+bWV0aG9kMSgpOwotLy8g
bXlBcGktPm1ldGhvZDMoMik7Ci0vLwotLy8gMy4gTXlBcGlEZWxlZ2F0ZSBpcyBjYXBhYmxlIG9m
IGRpc3BhdGNoaW5nIHRoZSBjYWxscyBhbmQgY29udmVydCB0aGVtIHRvIHRoZQotLy8gY2FsbHMg
dG8gdGhlIHVuZGVybHlpbmcgTXlBcGkgbWV0aG9kczoKLS8vCi0vLyBNeUFwaSogcmVhbE9iamVj
dDsKLS8vIE15QXBpRGlzcGF0Y2g6OmRpc3BhdGNoKHJlYWxPYmplY3QsIHJhd1N0cmluZ0NhbGxH
ZW5lcmF0ZWRCeVN0dWIpOwotLy8KLS8vIHdpbGwgbWFrZSBjb3JyZXNwb25kaW5nIGNhbGxzIHRv
IHRoZSByZWFsIG9iamVjdC4KLQotI2lmbmRlZiBEZXZUb29sc1JQQ19oCi0jZGVmaW5lIERldlRv
b2xzUlBDX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiVmVjdG9y
LmgiCi0jaW5jbHVkZSAiV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oIgotCi0jaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFN0cmluZzsKLX0K
LQotdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwotdXNpbmcgV1RGOjpWZWN0b3I7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0vLyBSUEMgZGlzcGF0Y2ggbWFjcm8KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLXN0cnVjdCBScGNUeXBlVHJhaXQgewotICAgIHR5cGVkZWYgVCBBcGlUeXBlOwotfTsKLQot
dGVtcGxhdGU8Pgotc3RydWN0IFJwY1R5cGVUcmFpdDxib29sPiB7Ci0gICAgdHlwZWRlZiBib29s
IEFwaVR5cGU7Ci0gICAgc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHQgPT0gInRydWUiOwotICAgIH0KLSAgICBzdGF0aWMg
V2ViQ29yZTo6U3RyaW5nIHRvU3RyaW5nKGJvb2wgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBi
ID8gInRydWUiIDogImZhbHNlIjsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgUnBj
VHlwZVRyYWl0PGludD4gewotICAgIHR5cGVkZWYgaW50IEFwaVR5cGU7Ci0gICAgc3RhdGljIGlu
dCBwYXJzZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHQpCi0gICAgewotICAgICAgICBib29sIHN1
Y2Nlc3M7Ci0gICAgICAgIGludCBpID0gdC50b0ludFN0cmljdCgmc3VjY2Vzcyk7Ci0gICAgICAg
IEFTU0VSVChzdWNjZXNzKTsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQotICAgIHN0YXRpYyBX
ZWJDb3JlOjpTdHJpbmcgdG9TdHJpbmcoaW50IGkpCi0gICAgewotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6U3RyaW5nOjpudW1iZXIoaSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0
IFJwY1R5cGVUcmFpdDxTdHJpbmc+IHsKLSAgICB0eXBlZGVmIGNvbnN0IFN0cmluZyYgQXBpVHlw
ZTsKLSAgICBzdGF0aWMgU3RyaW5nIHBhcnNlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0OwotICAgIH0KLSAgICBzdGF0aWMgV2ViQ29yZTo6U3RyaW5n
IHRvU3RyaW5nKGNvbnN0IFN0cmluZyYgdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0OwotICAg
IH0KLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLS8vIFJQQyBBcGkgbWV0aG9kIGRlY2xhcmF0aW9ucwotCi0jZGVmaW5lIFRPT0xT
X1JQQ19BUElfTUVUSE9EMChNZXRob2QpIFwKLSAgICB2aXJ0dWFsIHZvaWQgTWV0aG9kKCkgPSAw
OwotCi0jZGVmaW5lIFRPT0xTX1JQQ19BUElfTUVUSE9EMShNZXRob2QsIFQxKSBcCi0gICAgdmly
dHVhbCB2b2lkIE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQxKSA9IDA7Ci0KLSNk
ZWZpbmUgVE9PTFNfUlBDX0FQSV9NRVRIT0QyKE1ldGhvZCwgVDEsIFQyKSBcCi0gICAgdmlydHVh
bCB2b2lkIE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQxLCBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpBcGlUeXBlIHQyKSA9IDA7Ci0KLSNkZWZp
bmUgVE9PTFNfUlBDX0FQSV9NRVRIT0QzKE1ldGhvZCwgVDEsIFQyLCBUMykgXAotICAgIHZpcnR1
YWwgdm9pZCBNZXRob2QoUnBjVHlwZVRyYWl0PFQxPjo6QXBpVHlwZSB0MSwgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgUnBjVHlwZVRyYWl0PFQyPjo6QXBpVHlwZSB0MiwgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgUnBjVHlwZVRyYWl0PFQzPjo6QXBpVHlwZSB0MykgPSAwOwotCi0jZGVm
aW5lIFRPT0xTX1JQQ19BUElfTUVUSE9ENChNZXRob2QsIFQxLCBUMiwgVDMsIFQ0KSBcCi0gICAg
dmlydHVhbCB2b2lkIE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQxLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpBcGlUeXBlIHQyLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDM+OjpBcGlUeXBlIHQzLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDQ+OjpBcGlUeXBlIHQ0KSA9IDA7Ci0K
LSNkZWZpbmUgVE9PTFNfUlBDX0FQSV9NRVRIT0Q1KE1ldGhvZCwgVDEsIFQyLCBUMywgVDQsIFQ1
KSBcCi0gICAgdmlydHVhbCB2b2lkIE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQx
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpBcGlUeXBlIHQy
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDM+OjpBcGlUeXBlIHQz
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDQ+OjpBcGlUeXBlIHQ0
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDU+OjpBcGlUeXBlIHQ1
KSA9IDA7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLS8vIFJQQyBzdHViIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMKLQotI2RlZmluZSBU
T09MU19SUENfU1RVQl9NRVRIT0QwKE1ldGhvZCkgXAotICAgIHZpcnR1YWwgdm9pZCBNZXRob2Qo
KSB7IFwKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJnczsgXAotICAgICAgICB0aGlzLT5zZW5k
UnBjTWVzc2FnZShtX2NsYXNzTmFtZSwgI01ldGhvZCwgYXJncyk7IFwKLSAgICB9Ci0KLSNkZWZp
bmUgVE9PTFNfUlBDX1NUVUJfTUVUSE9EMShNZXRob2QsIFQxKSBcCi0gICAgdmlydHVhbCB2b2lk
IE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQxKSB7IFwKLSAgICAgICAgVmVjdG9y
PFN0cmluZz4gYXJncygxKTsgXAotICAgICAgICBhcmdzWzBdID0gUnBjVHlwZVRyYWl0PFQxPjo6
dG9TdHJpbmcodDEpOyBcCi0gICAgICAgIHRoaXMtPnNlbmRScGNNZXNzYWdlKG1fY2xhc3NOYW1l
LCAjTWV0aG9kLCBhcmdzKTsgXAotICAgIH0KLQotI2RlZmluZSBUT09MU19SUENfU1RVQl9NRVRI
T0QyKE1ldGhvZCwgVDEsIFQyKSBcCi0gICAgdmlydHVhbCB2b2lkIE1ldGhvZChScGNUeXBlVHJh
aXQ8VDE+OjpBcGlUeXBlIHQxLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJh
aXQ8VDI+OjpBcGlUeXBlIHQyKSB7IFwKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJncygyKTsg
XAotICAgICAgICBhcmdzWzBdID0gUnBjVHlwZVRyYWl0PFQxPjo6dG9TdHJpbmcodDEpOyBcCi0g
ICAgICAgIGFyZ3NbMV0gPSBScGNUeXBlVHJhaXQ8VDI+Ojp0b1N0cmluZyh0Mik7IFwKLSAgICAg
ICAgdGhpcy0+c2VuZFJwY01lc3NhZ2UobV9jbGFzc05hbWUsICNNZXRob2QsIGFyZ3MpOyBcCi0g
ICAgfQotCi0jZGVmaW5lIFRPT0xTX1JQQ19TVFVCX01FVEhPRDMoTWV0aG9kLCBUMSwgVDIsIFQz
KSBcCi0gICAgdmlydHVhbCB2b2lkIE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQx
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpBcGlUeXBlIHQy
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDM+OjpBcGlUeXBlIHQz
KSB7IFwKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJncygzKTsgXAotICAgICAgICBhcmdzWzBd
ID0gUnBjVHlwZVRyYWl0PFQxPjo6dG9TdHJpbmcodDEpOyBcCi0gICAgICAgIGFyZ3NbMV0gPSBS
cGNUeXBlVHJhaXQ8VDI+Ojp0b1N0cmluZyh0Mik7IFwKLSAgICAgICAgYXJnc1syXSA9IFJwY1R5
cGVUcmFpdDxUMz46OnRvU3RyaW5nKHQzKTsgXAotICAgICAgICB0aGlzLT5zZW5kUnBjTWVzc2Fn
ZShtX2NsYXNzTmFtZSwgI01ldGhvZCwgYXJncyk7IFwKLSAgICB9Ci0KLSNkZWZpbmUgVE9PTFNf
UlBDX1NUVUJfTUVUSE9ENChNZXRob2QsIFQxLCBUMiwgVDMsIFQ0KSBcCi0gICAgdmlydHVhbCB2
b2lkIE1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpBcGlUeXBlIHQxLCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDI+OjpBcGlUeXBlIHQyLCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDM+OjpBcGlUeXBlIHQzLCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICBScGNUeXBlVHJhaXQ8VDQ+OjpBcGlUeXBlIHQ0KSB7IFwKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gYXJncyg0KTsgXAotICAgICAgICBhcmdzWzBdID0gUnBjVHlwZVRyYWl0PFQx
Pjo6dG9TdHJpbmcodDEpOyBcCi0gICAgICAgIGFyZ3NbMV0gPSBScGNUeXBlVHJhaXQ8VDI+Ojp0
b1N0cmluZyh0Mik7IFwKLSAgICAgICAgYXJnc1syXSA9IFJwY1R5cGVUcmFpdDxUMz46OnRvU3Ry
aW5nKHQzKTsgXAotICAgICAgICBhcmdzWzNdID0gUnBjVHlwZVRyYWl0PFQ0Pjo6dG9TdHJpbmco
dDQpOyBcCi0gICAgICAgIHRoaXMtPnNlbmRScGNNZXNzYWdlKG1fY2xhc3NOYW1lLCAjTWV0aG9k
LCBhcmdzKTsgXAotICAgIH0KLQotI2RlZmluZSBUT09MU19SUENfU1RVQl9NRVRIT0Q1KE1ldGhv
ZCwgVDEsIFQyLCBUMywgVDQsIFQ1KSBcCi0gICAgdmlydHVhbCB2b2lkIE1ldGhvZChScGNUeXBl
VHJhaXQ8VDE+OjpBcGlUeXBlIHQxLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBl
VHJhaXQ8VDI+OjpBcGlUeXBlIHQyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBl
VHJhaXQ8VDM+OjpBcGlUeXBlIHQzLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBl
VHJhaXQ8VDQ+OjpBcGlUeXBlIHQ0LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBScGNUeXBl
VHJhaXQ8VDU+OjpBcGlUeXBlIHQ1KSB7IFwKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJncyg1
KTsgXAotICAgICAgICBhcmdzWzBdID0gUnBjVHlwZVRyYWl0PFQxPjo6dG9TdHJpbmcodDEpOyBc
Ci0gICAgICAgIGFyZ3NbMV0gPSBScGNUeXBlVHJhaXQ8VDI+Ojp0b1N0cmluZyh0Mik7IFwKLSAg
ICAgICAgYXJnc1syXSA9IFJwY1R5cGVUcmFpdDxUMz46OnRvU3RyaW5nKHQzKTsgXAotICAgICAg
ICBhcmdzWzNdID0gUnBjVHlwZVRyYWl0PFQ0Pjo6dG9TdHJpbmcodDQpOyBcCi0gICAgICAgIGFy
Z3NbNF0gPSBScGNUeXBlVHJhaXQ8VDU+Ojp0b1N0cmluZyh0NSk7IFwKLSAgICAgICAgdGhpcy0+
c2VuZFJwY01lc3NhZ2UobV9jbGFzc05hbWUsICNNZXRob2QsIGFyZ3MpOyBcCi0gICAgfQotCi0v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LyBSUEMgZGlzcGF0Y2ggbWV0aG9kIGltcGxlbWVudGF0aW9ucwotCi0jZGVmaW5lIFRPT0xTX1JQ
Q19ESVNQQVRDSDAoTWV0aG9kKSBcCi1pZiAobWV0aG9kTmFtZSA9PSAjTWV0aG9kKSB7IFwKLSAg
ICBkZWxlZ2F0ZS0+TWV0aG9kKCk7IFwKLSAgICByZXR1cm4gdHJ1ZTsgXAotfQotCi0jZGVmaW5l
IFRPT0xTX1JQQ19ESVNQQVRDSDEoTWV0aG9kLCBUMSkgXAotaWYgKG1ldGhvZE5hbWUgPT0gI01l
dGhvZCkgeyBcCi0gICAgZGVsZWdhdGUtPk1ldGhvZChScGNUeXBlVHJhaXQ8VDE+OjpwYXJzZShh
cmdzWzBdKSk7IFwKLSAgICByZXR1cm4gdHJ1ZTsgXAotfQotCi0jZGVmaW5lIFRPT0xTX1JQQ19E
SVNQQVRDSDIoTWV0aG9kLCBUMSwgVDIpIFwKLWlmIChtZXRob2ROYW1lID09ICNNZXRob2QpIHsg
XAotICAgIGRlbGVnYXRlLT5NZXRob2QoIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQxPjo6cGFy
c2UoYXJnc1swXSksIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQyPjo6cGFyc2UoYXJnc1sxXSkg
XAotICAgICk7IFwKLSAgICByZXR1cm4gdHJ1ZTsgXAotfQotCi0jZGVmaW5lIFRPT0xTX1JQQ19E
SVNQQVRDSDMoTWV0aG9kLCBUMSwgVDIsIFQzKSBcCi1pZiAobWV0aG9kTmFtZSA9PSAjTWV0aG9k
KSB7IFwKLSAgICBkZWxlZ2F0ZS0+TWV0aG9kKCBcCi0gICAgICAgIFJwY1R5cGVUcmFpdDxUMT46
OnBhcnNlKGFyZ3NbMF0pLCBcCi0gICAgICAgIFJwY1R5cGVUcmFpdDxUMj46OnBhcnNlKGFyZ3Nb
MV0pLCBcCi0gICAgICAgIFJwY1R5cGVUcmFpdDxUMz46OnBhcnNlKGFyZ3NbMl0pIFwKLSAgICAp
OyBcCi0gICAgcmV0dXJuIHRydWU7IFwKLX0KLQotI2RlZmluZSBUT09MU19SUENfRElTUEFUQ0g0
KE1ldGhvZCwgVDEsIFQyLCBUMywgVDQpIFwKLWlmIChtZXRob2ROYW1lID09ICNNZXRob2QpIHsg
XAotICAgIGRlbGVnYXRlLT5NZXRob2QoIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQxPjo6cGFy
c2UoYXJnc1swXSksIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQyPjo6cGFyc2UoYXJnc1sxXSks
IFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQzPjo6cGFyc2UoYXJnc1syXSksIFwKLSAgICAgICAg
UnBjVHlwZVRyYWl0PFQ0Pjo6cGFyc2UoYXJnc1szXSkgXAotICAgICk7IFwKLSAgICByZXR1cm4g
dHJ1ZTsgXAotfQotCi0jZGVmaW5lIFRPT0xTX1JQQ19ESVNQQVRDSDUoTWV0aG9kLCBUMSwgVDIs
IFQzLCBUNCwgVDUpIFwKLWlmIChtZXRob2ROYW1lID09ICNNZXRob2QpIHsgXAotICAgIGRlbGVn
YXRlLT5NZXRob2QoIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQxPjo6cGFyc2UoYXJnc1swXSks
IFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQyPjo6cGFyc2UoYXJnc1sxXSksIFwKLSAgICAgICAg
UnBjVHlwZVRyYWl0PFQzPjo6cGFyc2UoYXJnc1syXSksIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0
PFQ0Pjo6cGFyc2UoYXJnc1szXSksIFwKLSAgICAgICAgUnBjVHlwZVRyYWl0PFQ1Pjo6cGFyc2Uo
YXJnc1s0XSkgXAotICAgICk7IFwKLSAgICByZXR1cm4gdHJ1ZTsgXAotfQotCi0jZGVmaW5lIFRP
T0xTX0VORF9SUENfRElTUEFUQ0goKSBcCi19Ci0KLS8vIFRoaXMgbWFjcm8gZGVmaW5lcyB0aHJl
ZSBjbGFzc2VzOiBDbGFzcyB3aXRoIHRoZSBBcGksIENsYXNzU3R1YiB0aGF0IGlzCi0vLyBzZXJp
YWxpemluZyBtZXRob2QgY2FsbHMgYW5kIENsYXNzRGlzcGF0Y2ggdGhhdCBpcyBjYXBhYmxlIG9m
IGRpc3BhdGNoaW5nCi0vLyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlIGludG8gaXRzIGRlbGVnYXRl
LgotI2RlZmluZSBERUZJTkVfUlBDX0NMQVNTKENsYXNzLCBTVFJVQ1QpIFwKLWNsYXNzIENsYXNz
IDogcHVibGljIE5vbmNvcHlhYmxlIHtcCi1wdWJsaWM6IFwKLSAgICBDbGFzcygpIFwKLSAgICB7
IFwKLSAgICAgICAgbV9jbGFzc05hbWUgPSAjQ2xhc3M7IFwKLSAgICB9IFwKLSAgICB2aXJ0dWFs
IH5DbGFzcygpIHsgfSBcCi0gICAgXAotICAgIFNUUlVDVCggXAotICAgICAgICBUT09MU19SUENf
QVBJX01FVEhPRDAsIFwKLSAgICAgICAgVE9PTFNfUlBDX0FQSV9NRVRIT0QxLCBcCi0gICAgICAg
IFRPT0xTX1JQQ19BUElfTUVUSE9EMiwgXAotICAgICAgICBUT09MU19SUENfQVBJX01FVEhPRDMs
IFwKLSAgICAgICAgVE9PTFNfUlBDX0FQSV9NRVRIT0Q0LCBcCi0gICAgICAgIFRPT0xTX1JQQ19B
UElfTUVUSE9ENSkgXAotICAgIFdlYkNvcmU6OlN0cmluZyBtX2NsYXNzTmFtZTsgXAotfTsgXAot
XAotY2xhc3MgQ2xhc3MjI1N0dWIgXAotICAgIDogcHVibGljIENsYXNzIFwKLSAgICAsIHB1Ymxp
YyBEZXZUb29sc1JQQyB7IFwKLXB1YmxpYzogXAotICAgIGV4cGxpY2l0IENsYXNzIyNTdHViKERl
bGVnYXRlKiBkZWxlZ2F0ZSkgOiBEZXZUb29sc1JQQyhkZWxlZ2F0ZSkgeyB9IFwKLSAgICB2aXJ0
dWFsIH5DbGFzcyMjU3R1YigpIHsgfSBcCi0gICAgdHlwZWRlZiBDbGFzcyBDTEFTUzsgXAotICAg
IFNUUlVDVCggXAotICAgICAgICBUT09MU19SUENfU1RVQl9NRVRIT0QwLCBcCi0gICAgICAgIFRP
T0xTX1JQQ19TVFVCX01FVEhPRDEsIFwKLSAgICAgICAgVE9PTFNfUlBDX1NUVUJfTUVUSE9EMiwg
XAotICAgICAgICBUT09MU19SUENfU1RVQl9NRVRIT0QzLCBcCi0gICAgICAgIFRPT0xTX1JQQ19T
VFVCX01FVEhPRDQsIFwKLSAgICAgICAgVE9PTFNfUlBDX1NUVUJfTUVUSE9ENSkgXAotfTsgXAot
XAotY2xhc3MgQ2xhc3MjI0Rpc3BhdGNoIDogcHVibGljIE5vbmNvcHlhYmxlIHsgXAotcHVibGlj
OiBcCi0gICAgQ2xhc3MjI0Rpc3BhdGNoKCkgeyB9IFwKLSAgICB2aXJ0dWFsIH5DbGFzcyMjRGlz
cGF0Y2goKSB7IH0gXAotICAgIFwKLSAgICBzdGF0aWMgYm9vbCBkaXNwYXRjaChDbGFzcyogZGVs
ZWdhdGUsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkRldlRv
b2xzTWVzc2FnZURhdGEmIGRhdGEpIHsgXAotICAgICAgICBTdHJpbmcgY2xhc3NOYW1lID0gZGF0
YS5jbGFzc05hbWU7IFwKLSAgICAgICAgaWYgKGNsYXNzTmFtZSAhPSAjQ2xhc3MpIFwKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgXAotICAgICAgICBTdHJpbmcgbWV0aG9kTmFtZSA9IGRhdGEu
bWV0aG9kTmFtZTsgXAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBhcmdzOyBcCi0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5hcmd1bWVudHMuc2l6ZSgpOyBpKyspIFwKLSAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKGRhdGEuYXJndW1lbnRzW2ldKTsgXAotICAgICAgICB0eXBlZGVm
IENsYXNzIENMQVNTOyBcCi0gICAgICAgIFNUUlVDVCggXAotICAgICAgICAgICAgVE9PTFNfUlBD
X0RJU1BBVENIMCwgXAotICAgICAgICAgICAgVE9PTFNfUlBDX0RJU1BBVENIMSwgXAotICAgICAg
ICAgICAgVE9PTFNfUlBDX0RJU1BBVENIMiwgXAotICAgICAgICAgICAgVE9PTFNfUlBDX0RJU1BB
VENIMywgXAotICAgICAgICAgICAgVE9PTFNfUlBDX0RJU1BBVENINCwgXAotICAgICAgICAgICAg
VE9PTFNfUlBDX0RJU1BBVENINSkgXAotICAgICAgICByZXR1cm4gZmFsc2U7IFwKLSAgICB9IFwK
LX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIFJQQyBiYXNlIGNsYXNzCi1jbGFzcyBEZXZUb29sc1JQQyB7Ci1wdWJsaWM6Ci0g
ICAgY2xhc3MgRGVsZWdhdGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZWdhdGUoKSB7IH0K
LSAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNl
bmRScGNNZXNzYWdlKGNvbnN0IFdlYktpdDo6V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkg
PSAwOwotICAgIH07Ci0KLSAgICBleHBsaWNpdCBEZXZUb29sc1JQQyhEZWxlZ2F0ZSogZGVsZWdh
dGUpIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkgeyB9Ci0gICAgdmlydHVhbCB+RGV2VG9vbHNSUEMo
KSB7IH07Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIHNlbmRScGNNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgY2xhc3NOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXRo
b2ROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFy
Z3MpIHsKLSAgICAgIFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3RyaW5nPiB3ZWJBcmdz
KGFyZ3Muc2l6ZSgpKTsKLSAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7
IGkrKykKLSAgICAgICAgICB3ZWJBcmdzW2ldID0gYXJnc1tpXTsKLSAgICAgIFdlYktpdDo6V2Vi
RGV2VG9vbHNNZXNzYWdlRGF0YSBkYXRhOwotICAgICAgZGF0YS5jbGFzc05hbWUgPSBjbGFzc05h
bWU7Ci0gICAgICBkYXRhLm1ldGhvZE5hbWUgPSBtZXRob2ROYW1lOwotICAgICAgZGF0YS5hcmd1
bWVudHMuc3dhcCh3ZWJBcmdzKTsKLSAgICAgIHRoaXMtPm1fZGVsZWdhdGUtPnNlbmRScGNNZXNz
YWdlKGRhdGEpOwotICAgIH0KLQotICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9EZXZUb29sc1JQQ0pTLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldlRvb2xzUlBDSlMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFlMjc5Zi4uMDAwMDAwMAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0RldlRvb2xzUlBDSlMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotLy8gQWRkaXRpb25hbCBzZXQgb2YgbWFjcm9zIGZvciB0aGUgSlMgUlBDLgotCi0j
aWZuZGVmIERldlRvb2xzUlBDSlNfaAotI2RlZmluZSBEZXZUb29sc1JQQ0pTX2gKLQotLy8gRG8g
bm90IHJlbW92ZSB0aGlzIG9uZSBhbHRob3VnaCBpdCBpcyBub3QgdXNlZC4KLSNpbmNsdWRlICJC
b3VuZE9iamVjdC5oIgotI2luY2x1ZGUgIkRldlRvb2xzUlBDLmgiCi0jaW5jbHVkZSAiV2ViRnJh
bWUuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBKUyBSUEMgYmluZHMgYW5kIHN0dWJzCi0K
LSNkZWZpbmUgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9EMChNZXRob2QpIFwKLSAgICBib3VuZE9i
ai5hZGRQcm90b0Z1bmN0aW9uKCNNZXRob2QsIE9DTEFTUzo6anMjI01ldGhvZCk7Ci0KLSNkZWZp
bmUgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9EMShNZXRob2QsIFQxKSBcCi0gICAgYm91bmRPYmou
YWRkUHJvdG9GdW5jdGlvbigjTWV0aG9kLCBPQ0xBU1M6OmpzIyNNZXRob2QpOwotCi0jZGVmaW5l
IFRPT0xTX1JQQ19KU19CSU5EX01FVEhPRDIoTWV0aG9kLCBUMSwgVDIpIFwKLSAgICBib3VuZE9i
ai5hZGRQcm90b0Z1bmN0aW9uKCNNZXRob2QsIE9DTEFTUzo6anMjI01ldGhvZCk7Ci0KLSNkZWZp
bmUgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9EMyhNZXRob2QsIFQxLCBUMiwgVDMpIFwKLSAgICBi
b3VuZE9iai5hZGRQcm90b0Z1bmN0aW9uKCNNZXRob2QsIE9DTEFTUzo6anMjI01ldGhvZCk7Ci0K
LSNkZWZpbmUgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9ENChNZXRob2QsIFQxLCBUMiwgVDMsIFQ0
KSBcCi0gICAgYm91bmRPYmouYWRkUHJvdG9GdW5jdGlvbigjTWV0aG9kLCBPQ0xBU1M6OmpzIyNN
ZXRob2QpOwotCi0jZGVmaW5lIFRPT0xTX1JQQ19KU19CSU5EX01FVEhPRDUoTWV0aG9kLCBUMSwg
VDIsIFQzLCBUNCwgVDUpIFwKLSAgICBib3VuZE9iai5hZGRQcm90b0Z1bmN0aW9uKCNNZXRob2Qs
IE9DTEFTUzo6anMjI01ldGhvZCk7Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9E
MChNZXRob2QpIFwKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzIyNNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeyBcCi0gICAgICAgIHNlbmRScGNNZXNzYWdlRnJv
bUpTKCNNZXRob2QsIGFyZ3MsIDApOyBcCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
IFwKLSAgICB9Ci0KLSNkZWZpbmUgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9EMShNZXRob2QsIFQx
KSBcCi0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqcyMjTWV0aG9kKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpIHsgXAotICAgICAgICBzZW5kUnBjTWVzc2FnZUZyb21KUygjTWV0
aG9kLCBhcmdzLCAxKTsgXAotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOyBcCi0gICAg
fQotCi0jZGVmaW5lIFRPT0xTX1JQQ19KU19TVFVCX01FVEhPRDIoTWV0aG9kLCBUMSwgVDIpIFwK
LSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzIyNNZXRob2QoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykgeyBcCi0gICAgICAgIHNlbmRScGNNZXNzYWdlRnJvbUpTKCNNZXRob2Qs
IGFyZ3MsIDIpOyBcCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7IFwKLSAgICB9Ci0K
LSNkZWZpbmUgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9EMyhNZXRob2QsIFQxLCBUMiwgVDMpIFwK
LSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzIyNNZXRob2QoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykgeyBcCi0gICAgICAgIHNlbmRScGNNZXNzYWdlRnJvbUpTKCNNZXRob2Qs
IGFyZ3MsIDMpOyBcCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7IFwKLSAgICB9Ci0K
LSNkZWZpbmUgVE9PTFNfUlBDX0pTX1NUVUJfTUVUSE9ENChNZXRob2QsIFQxLCBUMiwgVDMsIFQ0
KSBcCi0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqcyMjTWV0aG9kKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpIHsgXAotICAgICAgICBzZW5kUnBjTWVzc2FnZUZyb21KUygjTWV0
aG9kLCBhcmdzLCA0KTsgXAotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOyBcCi0gICAg
fQotCi0jZGVmaW5lIFRPT0xTX1JQQ19KU19TVFVCX01FVEhPRDUoTWV0aG9kLCBUMSwgVDIsIFQz
LCBUNCwgVDUpIFwKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzIyNNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeyBcCi0gICAgICAgIHNlbmRScGNNZXNzYWdlRnJv
bUpTKCNNZXRob2QsIGFyZ3MsIDUpOyBcCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
IFwKLSAgICB9Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLS8vIEpTIFJQQyBtYWluIG9iaiBtYWNybwotCi0jZGVmaW5lIERFRklORV9S
UENfSlNfQk9VTkRfT0JKKENsYXNzLCBTVFJVQ1QsIERDbGFzcywgREVMRUdBVEVfU1RSVUNUKSBc
Ci1jbGFzcyBKUyMjQ2xhc3MjI0JvdW5kT2JqIDogcHVibGljIENsYXNzIyNTdHViIHsgXAotcHVi
bGljOiBcCi0gICAgSlMjI0NsYXNzIyNCb3VuZE9iaihEZWxlZ2F0ZSogcnBjRGVsZWdhdGUsIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQs
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNsYXNzbmFtZSkgXAotICAg
ICAgICA6IENsYXNzIyNTdHViKHJwY0RlbGVnYXRlKSB7IFwKLSAgICAgIEJvdW5kT2JqZWN0IGJv
dW5kT2JqKGNvbnRleHQsIHRoaXMsIGNsYXNzbmFtZSk7IFwKLSAgICAgIFNUUlVDVCggXAotICAg
ICAgICAgIFRPT0xTX1JQQ19KU19CSU5EX01FVEhPRDAsIFwKLSAgICAgICAgICBUT09MU19SUENf
SlNfQklORF9NRVRIT0QxLCBcCi0gICAgICAgICAgVE9PTFNfUlBDX0pTX0JJTkRfTUVUSE9EMiwg
XAotICAgICAgICAgIFRPT0xTX1JQQ19KU19CSU5EX01FVEhPRDMsIFwKLSAgICAgICAgICBUT09M
U19SUENfSlNfQklORF9NRVRIT0Q0LCBcCi0gICAgICAgICAgVE9PTFNfUlBDX0pTX0JJTkRfTUVU
SE9ENSkgXAotICAgICAgYm91bmRPYmouYnVpbGQoKTsgXAotICAgIH0gXAotICAgIHZpcnR1YWwg
fkpTIyNDbGFzcyMjQm91bmRPYmooKSB7IH0gXAotICAgIHR5cGVkZWYgSlMjI0NsYXNzIyNCb3Vu
ZE9iaiBPQ0xBU1M7IFwKLSAgICBTVFJVQ1QoIFwKLSAgICAgICAgVE9PTFNfUlBDX0pTX1NUVUJf
TUVUSE9EMCwgXAotICAgICAgICBUT09MU19SUENfSlNfU1RVQl9NRVRIT0QxLCBcCi0gICAgICAg
IFRPT0xTX1JQQ19KU19TVFVCX01FVEhPRDIsIFwKLSAgICAgICAgVE9PTFNfUlBDX0pTX1NUVUJf
TUVUSE9EMywgXAotICAgICAgICBUT09MU19SUENfSlNfU1RVQl9NRVRIT0Q0LCBcCi0gICAgICAg
IFRPT0xTX1JQQ19KU19TVFVCX01FVEhPRDUpIFwKLXByaXZhdGU6IFwKLSAgICBzdGF0aWMgdm9p
ZCBzZW5kUnBjTWVzc2FnZUZyb21KUyhjb25zdCBjaGFyKiBtZXRob2QsIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ODo6QXJndW1lbnRzJiBqc0FyZ3VtZW50
cywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhcmdzQ291
bnQpIFwKLSAgICB7IFwKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJncyhhcmdzQ291bnQpOyBc
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnc0NvdW50OyBpKyspIFwKLSAgICAg
ICAgICAgIGFyZ3NbaV0gPSBXZWJDb3JlOjp0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGpz
QXJndW1lbnRzW2ldKTsgXAotICAgICAgICB2b2lkKiBzZWxmUHRyID0gdjg6OkV4dGVybmFsOjpD
YXN0KCpqc0FyZ3VtZW50cy5EYXRhKCkpLT5WYWx1ZSgpOyBcCi0gICAgICAgIEpTIyNDbGFzcyMj
Qm91bmRPYmoqIHNlbGYgPSBzdGF0aWNfY2FzdDxKUyMjQ2xhc3MjI0JvdW5kT2JqKj4oc2VsZlB0
cik7IFwKLSAgICAgICAgc2VsZi0+c2VuZFJwY01lc3NhZ2UoI0NsYXNzLCBtZXRob2QsIGFyZ3Mp
OyBcCi0gICAgfSBcCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRleCBjZjQ5MWY3Li5h
NzQ3ZGJkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgotI2luY2x1ZGUgIldl
YkRldlRvb2xzTWVzc2FnZURhdGEuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAi
V2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwCmluZGV4IDg3MGJkZWUu
LjQ2ZjJjYjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50SW1wbC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJWOFByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIldlYkRl
dlRvb2xzRnJvbnRlbmRJbXBsLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMjYsMTMgKzEyNyw3IEBAIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRJbXBsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKQog
CiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFdlYkRldlRvb2xzTWVzc2FnZURhdGEgbWVz
c2FnZURhdGE7Ci0gICAgbWVzc2FnZURhdGEuY2xhc3NOYW1lID0gIlRvb2xzQWdlbnQiOwotICAg
IG1lc3NhZ2VEYXRhLm1ldGhvZE5hbWUgPSAiZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIi
OwotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFyZ3Moc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7
Ci0gICAgYXJnc1swXSA9IG1lc3NhZ2U7Ci0gICAgbWVzc2FnZURhdGEuYXJndW1lbnRzLnN3YXAo
YXJncyk7Ci0gICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlVG9BZ2VudChtZXNzYWdlRGF0YSk7Cisg
ICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvUHJvZmlsZXJB
Z2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Qcm9maWxlckFnZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUyMzM3YjguLjAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9Qcm9maWxlckFnZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBQcm9maWxlckFnZW50X2gKLSNkZWZpbmUgUHJvZmlsZXJBZ2VudF9oCi0KLSNpbmNsdWRlICJE
ZXZUb29sc1JQQy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gUHJvZmlsZXIgYWdlbnQg
cHJvdmlkZXMgQVBJIGZvciByZXRyaWV2aW5nIHByb2ZpbGVyIGRhdGEuCi0vLyBUaGVzZSBtZXRo
b2RzIGFyZSBoYW5kbGVkIG9uIHRoZSBJTyB0aHJlYWQsIHNvIHByb2ZpbGVyIGNhbgotLy8gb3Bl
cmF0ZSB3aGlsZSBhIHNjcmlwdCBvbiBhIHBhZ2UgcGVyZm9ybXMgaGVhdnkgd29yay4KLSNkZWZp
bmUgUFJPRklMRVJfQUdFTlRfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1FVEhPRDIsIE1FVEhP
RDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBSZXF1ZXN0cyBjdXJyZW50IHByb2ZpbGVy
IHN0YXRlLiAqLyBcCi0gICAgTUVUSE9EMChnZXRBY3RpdmVQcm9maWxlck1vZHVsZXMpIFwKLSAg
ICBcCi0gICAgLyogUmV0cmlldmVzIHBvcnRpb24gb2YgcHJvZmlsZXIgbG9nLiAqLyBcCi0gICAg
TUVUSE9EMShnZXRMb2dMaW5lcywgaW50IC8qIHBvc2l0aW9uICovKQotCi1ERUZJTkVfUlBDX0NM
QVNTKFByb2ZpbGVyQWdlbnQsIFBST0ZJTEVSX0FHRU5UX1NUUlVDVCkKLQotI2RlZmluZSBQUk9G
SUxFUl9BR0VOVF9ERUxFR0FURV9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwgTUVU
SE9EMywgTUVUSE9ENCwgTUVUSE9ENSkgXAotICAgIC8qIFJlc3BvbnNlIHRvIGdldEFjdGl2ZVBy
b2ZpbGVyTW9kdWxlcy4gKi8gXAotICAgIE1FVEhPRDEoZGlkR2V0QWN0aXZlUHJvZmlsZXJNb2R1
bGVzLCBpbnQgLyogZmxhZ3MgKi8pIFwKLSAgICBcCi0gICAgLyogUmVzcG9uc2UgdG8gZ2V0TG9n
TGluZXMuICovIFwKLSAgICBNRVRIT0QyKGRpZEdldExvZ0xpbmVzLCBpbnQgLyogcG9zaXRpb24g
Ki8sIFN0cmluZyAvKiBsb2cgKi8pCi0KLURFRklORV9SUENfQ0xBU1MoUHJvZmlsZXJBZ2VudERl
bGVnYXRlLCBQUk9GSUxFUl9BR0VOVF9ERUxFR0FURV9TVFJVQ1QpCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvUHJvZmls
ZXJBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Qcm9maWxlckFnZW50SW1wbC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NTcwZGYuLjAwMDAwMDAKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9Qcm9maWxlckFnZW50SW1wbC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlByb2ZpbGVyQWdl
bnRJbXBsLmgiCi0KLSNpbmNsdWRlIDx2OC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9p
ZCBQcm9maWxlckFnZW50SW1wbDo6Z2V0QWN0aXZlUHJvZmlsZXJNb2R1bGVzKCkKLXsKLSAgICBt
X2RlbGVnYXRlLT5kaWRHZXRBY3RpdmVQcm9maWxlck1vZHVsZXModjg6OlY4OjpHZXRBY3RpdmVQ
cm9maWxlck1vZHVsZXMoKSk7Ci19Ci0KLXZvaWQgUHJvZmlsZXJBZ2VudEltcGw6OmdldExvZ0xp
bmVzKGludCBwb3NpdGlvbikKLXsKLSAgICBzdGF0aWMgY2hhciBidWZmZXJbNjU1MzZdOwotICAg
IGNvbnN0IGludCByZWFkU2l6ZSA9IHY4OjpWODo6R2V0TG9nTGluZXMocG9zaXRpb24sIGJ1ZmZl
ciwgc2l6ZW9mKGJ1ZmZlcikgLSAxKTsKLSAgICBidWZmZXJbcmVhZFNpemVdID0gJ1wwJzsKLSAg
ICBwb3NpdGlvbiArPSByZWFkU2l6ZTsKLSAgICBtX2RlbGVnYXRlLT5kaWRHZXRMb2dMaW5lcyhw
b3NpdGlvbiwgYnVmZmVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1Byb2ZpbGVyQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1Byb2ZpbGVyQWdlbnRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQzOGY1N2MuLjAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Qcm9maWxlckFnZW50
SW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUHJvZmlsZXJBZ2Vu
dEltcGxfaAotI2RlZmluZSBQcm9maWxlckFnZW50SW1wbF9oCi0KLSNpbmNsdWRlICJQcm9maWxl
ckFnZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBQcm9maWxlckFnZW50SW1w
bCA6IHB1YmxpYyBQcm9maWxlckFnZW50IHsKLXB1YmxpYzoKLSAgICBQcm9maWxlckFnZW50SW1w
bChQcm9maWxlckFnZW50RGVsZWdhdGUqIGRlbGVnYXRlKSA6IG1fZGVsZWdhdGUoZGVsZWdhdGUp
IHsgfQotICAgIHZpcnR1YWwgflByb2ZpbGVyQWdlbnRJbXBsKCkgeyB9Ci0KLSAgICAvLyBQcm9m
aWxlckFnZW50IGltcGxlbWVudGF0aW9uLgotCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVk
IG9uIElPIHRocmVhZC4KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlUHJvZmlsZXJNb2R1bGVz
KCk7Ci0KLSAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gSU8gdGhyZWFkLgotICAgIHZp
cnR1YWwgdm9pZCBnZXRMb2dMaW5lcyhpbnQgcG9zaXRpb24pOwotCi1wcml2YXRlOgotICAgIFBy
b2ZpbGVyQWdlbnREZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVG9vbHNBZ2Vu
dC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Ub29sc0FnZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDkzN2ZjZjAuLjAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9U
b29sc0FnZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBUb29sc0Fn
ZW50X2gKLSNkZWZpbmUgVG9vbHNBZ2VudF9oCi0KLSNpbmNsdWRlICJEZXZUb29sc1JQQy5oIgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gVG9vbHMgYWdlbnQgcHJvdmlkZXMgQVBJIGZvciBl
bmFibGluZyAvIGRpc2FibGluZyBvdGhlciBhZ2VudHMgYXMgd2VsbCBhcwotLy8gQVBJIGZvciBh
dXhpbGlhcnkgVUkgZnVuY3Rpb25zIHN1Y2ggYXMgZG9tIGVsZW1lbnRzIGhpZ2hsaWdodGluZy4K
LSNkZWZpbmUgVE9PTFNfQUdFTlRfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1FVEhPRDIsIE1F
VEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBEaXNwYXRjaGVzIGdpdmVuIGZ1bmN0
aW9uIG9uIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyIG9iamVjdCAqLyBcCi0gICAgTUVUSE9EMShk
aXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlciwgU3RyaW5nIC8qIG1lc3NhZ2UgKi8pIFwKLQot
REVGSU5FX1JQQ19DTEFTUyhUb29sc0FnZW50LCBUT09MU19BR0VOVF9TVFJVQ1QpCi0KLSNkZWZp
bmUgVE9PTFNfQUdFTlRfREVMRUdBVEVfU1RSVUNUKE1FVEhPRDAsIE1FVEhPRDEsIE1FVEhPRDIs
IE1FVEhPRDMsIE1FVEhPRDQsIE1FVEhPRDUpIFwKLSAgICAvKiBSZXNwb25zZSB0byB0aGUgRGlz
cGF0Y2hPbiouICovIFwKLSAgICBNRVRIT0QzKGRpZERpc3BhdGNoT24sIGludCAvKiBjYWxsX2lk
ICovLCBTdHJpbmcgLyogcmVzdWx0ICovLCBTdHJpbmcgLyogZXhjZXB0aW9uICovKSBcCi0gICAg
XAotICAgIC8qIFNlbmRzIEluc3BlY3RvckZyb250ZW5kIG1lc3NhZ2UgdG8gYmUgZGlzcGF0Y2hl
ZCBvbiBjbGllbnQuICovIFwKLSAgICBNRVRIT0QxKGRpc3BhdGNoT25DbGllbnQsIFN0cmluZyAv
KiBkYXRhICovKQotCi1ERUZJTkVfUlBDX0NMQVNTKFRvb2xzQWdlbnREZWxlZ2F0ZSwgVE9PTFNf
QUdFTlRfREVMRUdBVEVfU1RSVUNUKQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDFh
NjViZmUuLjkzMTcwZmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiUHJv
ZmlsZXJBZ2VudEltcGwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNTks
OCArNTgsNiBAQAogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNv
dXJjZS5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRDbGllbnQuaCIKLSNpbmNsdWRlICJX
ZWJEZXZUb29sc01lc3NhZ2VEYXRhLmgiCi0jaW5jbHVkZSAiV2ViRGV2VG9vbHNNZXNzYWdlVHJh
bnNwb3J0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5o
IgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgpAQCAtMTA5LDIxICsxMDYsNiBAQCBzdGF0aWMgY29u
c3QgY2hhciBrUmVzb3VyY2VUcmFja2luZ0ZlYXR1cmVOYW1lW10gPSAicmVzb3VyY2UtdHJhY2tp
bmciOwogc3RhdGljIGNvbnN0IGNoYXIga1RpbWVsaW5lRmVhdHVyZU5hbWVbXSA9ICJ0aW1lbGlu
ZS1wcm9maWxlciI7CiBzdGF0aWMgY29uc3QgY2hhciBrQXB1QWdlbnRGZWF0dXJlTmFtZVtdID0g
ImFwdS1hZ2VudCI7CiAKLWNsYXNzIElPUlBDRGVsZWdhdGUgOiBwdWJsaWMgRGV2VG9vbHNSUEM6
OkRlbGVnYXRlLCBwdWJsaWMgTm9uY29weWFibGUgewotcHVibGljOgotICAgIElPUlBDRGVsZWdh
dGUoKSA6IG1fdHJhbnNwb3J0KDApIHsgfQotICAgIGV4cGxpY2l0IElPUlBDRGVsZWdhdGUoV2Vi
RGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0KiB0cmFuc3BvcnQpIDogbV90cmFuc3BvcnQodHJhbnNw
b3J0KSB7IH0KLSAgICB2aXJ0dWFsIH5JT1JQQ0RlbGVnYXRlKCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNlbmRScGNNZXNzYWdlKGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmIGRhdGEpCi0g
ICAgewotICAgICAgICBpZiAobV90cmFuc3BvcnQpCi0gICAgICAgICAgICBtX3RyYW5zcG9ydC0+
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kT25JT1RocmVhZChkYXRhKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0KiBtX3RyYW5zcG9ydDsKLX07Ci0KIGNs
YXNzIENsaWVudE1lc3NhZ2VMb29wQWRhcHRlciA6IHB1YmxpYyBXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6Q2xpZW50TWVzc2FnZUxvb3AgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGVu
c3VyZUNsaWVudE1lc3NhZ2VMb29wQ3JlYXRlZChXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBjbGll
bnQpCkBAIC0yMjIsOSArMjA0LDYgQEAgV2ViRGV2VG9vbHNBZ2VudEltcGw6OldlYkRldlRvb2xz
QWdlbnRJbXBsKAogewogICAgIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZXRFeHBvc2VWOERlYnVn
Z2VyUHJvdG9jb2woCiAgICAgICAgIGNsaWVudC0+ZXhwb3NlVjhEZWJ1Z2dlclByb3RvY29sKCkp
OwotICAgIG1fZGVidWdnZXJBZ2VudERlbGVnYXRlU3R1Yi5zZXQobmV3IERlYnVnZ2VyQWdlbnRE
ZWxlZ2F0ZVN0dWIodGhpcykpOwotICAgIG1fdG9vbHNBZ2VudERlbGVnYXRlU3R1Yi5zZXQobmV3
IFRvb2xzQWdlbnREZWxlZ2F0ZVN0dWIodGhpcykpOwotICAgIG1fYXB1QWdlbnREZWxlZ2F0ZVN0
dWIuc2V0KG5ldyBBcHVBZ2VudERlbGVnYXRlU3R1Yih0aGlzKSk7CiB9CiAKIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjp+V2ViRGV2VG9vbHNBZ2VudEltcGwoKQpAQCAtMjUxLDkgKzIzMCw3IEBAIHZv
aWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmF0dGFjaCgpCiAgICAgICAgIENsaWVudE1lc3NhZ2VM
b29wQWRhcHRlcjo6ZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKG1fY2xpZW50KTsKIAog
ICAgIG1fZGVidWdnZXJBZ2VudEltcGwuc2V0KAotICAgICAgICBuZXcgRGVidWdnZXJBZ2VudElt
cGwobV93ZWJWaWV3SW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGVidWdn
ZXJBZ2VudERlbGVnYXRlU3R1Yi5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMpKTsKKyAgICAgICAgbmV3IERlYnVnZ2VyQWdlbnRJbXBsKG1fd2ViVmlld0ltcGwsIHRo
aXMsIG1fY2xpZW50KSk7CiAgICAgY3JlYXRlSW5zcGVjdG9yRnJvbnRlbmRQcm94eSgpOwogCiAg
ICAgLy8gQWxsb3cgY29udHJvbGxlciB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBmcm9udGVuZC4K
QEAgLTI5NiwxMCArMjczLDYgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkTmF2aWdh
dGUoKQogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QoV2Vi
RnJhbWVJbXBsKiB3ZWJmcmFtZSkKIHsKICAgICBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2V0SG9z
dElkKHdlYmZyYW1lLCBtX2hvc3RJZCk7Ci0gICAgaWYgKG1fYXR0YWNoZWQpIHsKLSAgICAgICAg
Ly8gUHVzaCBjb250ZXh0IGlkIGludG8gdGhlIGNsaWVudCBpZiBpdCBpcyBhbHJlYWR5IGF0dGFj
aGVkLgotICAgICAgICBtX2RlYnVnZ2VyQWdlbnREZWxlZ2F0ZVN0dWItPnNldENvbnRleHRJZCht
X2hvc3RJZCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpmb3JjZVJl
cGFpbnQoKQpAQCAtMzA3LDIzICsyODAsMTEgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
Zm9yY2VSZXBhaW50KCkKICAgICBtX2NsaWVudC0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKLXZvaWQg
V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoT25J
bnNwZWN0b3JCYWNrZW5kKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpbnNwZWN0
b3JDb250cm9sbGVyKCktPmluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKCktPmRpc3BhdGNoKG1l
c3NhZ2UpOwogfQogCi12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE1lc3NhZ2VG
cm9tRnJvbnRlbmQoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkKLXsKLSAgICBp
ZiAoVG9vbHNBZ2VudERpc3BhdGNoOjpkaXNwYXRjaCh0aGlzLCBkYXRhKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFtX2F0dGFjaGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9kZWJ1Z2dlckFnZW50SW1wbC5nZXQoKSAmJiBEZWJ1Z2dlckFnZW50RGlzcGF0Y2g6OmRpc3Bh
dGNoKG1fZGVidWdnZXJBZ2VudEltcGwuZ2V0KCksIGRhdGEpKQotICAgICAgICByZXR1cm47Ci19
Ci0KIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RFbGVtZW50QXQoY29uc3QgV2Vi
UG9pbnQmIHBvaW50KQogewogICAgIG1fd2ViVmlld0ltcGwtPmluc3BlY3RFbGVtZW50QXQocG9p
bnQpOwpAQCAtMzQ0LDExICszMDUsNiBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRS
dW50aW1lRmVhdHVyZUVuYWJsZWQoY29uc3QgV2ViU3RyaW5nJiBmZWF0dXJlLCBibwogICAgIH0K
IH0KIAotdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6c2VuZFJwY01lc3NhZ2UoY29uc3QgV2Vi
RGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkKLXsKLSAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGRhdGEpOwotfQotCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpjb21waWxl
VXRpbGl0eVNjcmlwdHMoKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKQEAg
LTQyOCw3ICszODQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRGV2VG9vbHNBZ2VudElt
cGw6OmpzRGlzcGF0Y2hPbkNsaWVudChjb25zdCB2ODo6QXJndW1lbgogICAgIFdlYkRldlRvb2xz
QWdlbnRJbXBsKiBhZ2VudCA9IHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4odjg6
OkV4dGVybmFsOjpDYXN0KCphcmdzLkRhdGEoKSktPlZhbHVlKCkpOwogCiAgICAgaWYgKCFhZ2Vu
dC0+bV9hcHVBZ2VudEVuYWJsZWQpIHsKLSAgICAgICAgYWdlbnQtPm1fdG9vbHNBZ2VudERlbGVn
YXRlU3R1Yi0+ZGlzcGF0Y2hPbkNsaWVudChtZXNzYWdlKTsKKyAgICAgICAgYWdlbnQtPm1fY2xp
ZW50LT5zZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQobWVzc2FnZSk7CiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQogCkBAIC00MzYsMTAgKzM5MiwxMCBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRGV2VG9vbHNBZ2VudEltcGw6OmpzRGlzcGF0Y2hPbkNsaWVu
dChjb25zdCB2ODo6QXJndW1lbgogICAgIGlmIChtZXRob2QuaXNFbXB0eSgpIHx8IGV4Y2VwdGlv
bkNhdGNoZXIuSGFzQ2F1Z2h0KCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
LSAgICBpZiAobWV0aG9kICE9ICJhZGRSZWNvcmRUb1RpbWVsaW5lIiAmJiBtZXRob2QgIT0gInVw
ZGF0ZVJlc291cmNlIiAmJiBtZXRob2QgIT0gImFkZFJlc291cmNlIikKKyAgICBpZiAobWV0aG9k
ICE9ICJ1cGRhdGVSZXNvdXJjZSIgJiYgbWV0aG9kICE9ICJhZGRSZXNvdXJjZSIpCiAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBhZ2VudC0+bV9hcHVBZ2VudERlbGVnYXRl
U3R1Yi0+ZGlzcGF0Y2hUb0FwdShtZXNzYWdlKTsKKyAgICBhZ2VudC0+bV9jbGllbnQtPnNlbmRE
aXNwYXRjaFRvQVBVKG1lc3NhZ2UpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAK
QEAgLTU0MywxOCArNDk5LDEyIEBAIGJvb2wgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNz
YWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFk
ZXZUb29sc0FnZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZGV2VG9vbHNB
Z2VudC0+bV9hcHVBZ2VudEVuYWJsZWQgJiYgZGV2VG9vbHNBZ2VudC0+bV9hcHVBZ2VudERlbGVn
YXRlU3R1YikgewotICAgICAgICBkZXZUb29sc0FnZW50LT5tX2FwdUFnZW50RGVsZWdhdGVTdHVi
LT5kaXNwYXRjaFRvQXB1KG1lc3NhZ2UpOworICAgIGlmIChkZXZUb29sc0FnZW50LT5tX2FwdUFn
ZW50RW5hYmxlZCkgeworICAgICAgICBtX2NsaWVudC0+c2VuZERpc3BhdGNoVG9BUFUobWVzc2Fn
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFdlYlZlY3RvcjxXZWJTdHJp
bmc+IGFyZ3VtZW50cyhzaXplX3QoMSkpOwotICAgIGFyZ3VtZW50c1swXSA9IG1lc3NhZ2U7Ci0g
ICAgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEuY2xhc3NOYW1lID0gIlRv
b2xzQWdlbnREZWxlZ2F0ZSI7Ci0gICAgZGF0YS5tZXRob2ROYW1lID0gImRpc3BhdGNoT25DbGll
bnQiOwotICAgIGRhdGEuYXJndW1lbnRzLnN3YXAoYXJndW1lbnRzKTsKLSAgICBkZXZUb29sc0Fn
ZW50LT5zZW5kUnBjTWVzc2FnZShkYXRhKTsKKyAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0lu
c3BlY3RvckZyb250ZW5kKG1lc3NhZ2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MDgs
MTIgKzU1OCw0IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudDo6c2V0TWVzc2FnZUxvb3BEaXNwYXRj
aEhhbmRsZXIoTWVzc2FnZUxvb3BEaXNwYXRjaEhhbmRsZXIKICAgICBEZWJ1Z2dlckFnZW50TWFu
YWdlcjo6c2V0TWVzc2FnZUxvb3BEaXNwYXRjaEhhbmRsZXIoaGFuZGxlcik7CiB9CiAKLWJvb2wg
V2ViRGV2VG9vbHNBZ2VudDo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kT25JT1RocmVhZChX
ZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqIHRyYW5zcG9ydCwgY29uc3QgV2ViRGV2VG9vbHNN
ZXNzYWdlRGF0YSYgZGF0YSkKLXsKLSAgICBJT1JQQ0RlbGVnYXRlIGRlbGVnYXRlKHRyYW5zcG9y
dCk7Ci0gICAgUHJvZmlsZXJBZ2VudERlbGVnYXRlU3R1YiBzdHViKCZkZWxlZ2F0ZSk7Ci0gICAg
UHJvZmlsZXJBZ2VudEltcGwgYWdlbnQoJnN0dWIpOwotICAgIHJldHVybiBQcm9maWxlckFnZW50
RGlzcGF0Y2g6OmRpc3BhdGNoKCZhZ2VudCwgZGF0YSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IGM4
ZTIyYjAuLjk2NTlkZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJ
bXBsLmgKQEAgLTMzLDkgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgog
Ci0jaW5jbHVkZSAiQVBVQWdlbnREZWxlZ2F0ZS5oIgotI2luY2x1ZGUgIkRldlRvb2xzUlBDLmgi
Ci0jaW5jbHVkZSAiVG9vbHNBZ2VudC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQcml2
YXRlLmgiCiAKICNpbmNsdWRlIDx2OC5oPgpAQCAtNTEsNyArNDgsNiBAQCBjbGFzcyBTdHJpbmc7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBEZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHVi
OwogY2xhc3MgRGVidWdnZXJBZ2VudEltcGw7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50
OwogY2xhc3MgV2ViRnJhbWU7CkBAIC02NCwxNiArNjAsMTEgQEAgc3RydWN0IFdlYlVSTEVycm9y
Owogc3RydWN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGE7CiAKIGNsYXNzIFdlYkRldlRvb2xzQWdl
bnRJbXBsIDogcHVibGljIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgVG9vbHNBZ2VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIERldlRvb2xzUlBDOjpEZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
V2ViRGV2VG9vbHNBZ2VudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBXZWJEZXZUb29s
c0FnZW50Q2xpZW50KiBjbGllbnQpOwogICAgIHZpcnR1YWwgfldlYkRldlRvb2xzQWdlbnRJbXBs
KCk7CiAKLSAgICAvLyBUb29sc0FnZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcihjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1l
c3NhZ2UpOwotCiAgICAgLy8gV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUgaW1wbGVtZW50YXRpb24u
CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0KFdlYkZyYW1lSW1wbCogZnJh
bWUpOwogCkBAIC04MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWROYXZp
Z2F0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29u
c3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoT25JbnNwZWN0b3JCYWNrZW5kKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RFbGVtZW50QXQoY29uc3QgV2ViUG9pbnQmIHBvaW50KTsKICAgICB2
aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3QgV2Vi
U3RyaW5nJiBzY3JpcHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSdW50aW1lRmVhdHVyZUVuYWJs
ZWQoY29uc3QgV2ViU3RyaW5nJiBmZWF0dXJlLCBib29sIGVuYWJsZWQpOwpAQCAtMTA3LDkgKzk4
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0aW1lbGluZVByb2ZpbGVyV2FzU3RvcHBl
ZCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJik7CiAKLSAgICAvLyBEZXZUb29sc1JQQzo6RGVsZWdhdGUgaW1wbGVtZW50YXRp
b24uCi0gICAgdmlydHVhbCB2b2lkIHNlbmRScGNNZXNzYWdlKGNvbnN0IFdlYkRldlRvb2xzTWVz
c2FnZURhdGEmIGRhdGEpOwotCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKIAogICAgIGludCBo
b3N0SWQoKSB7IHJldHVybiBtX2hvc3RJZDsgfQpAQCAtMTMwLDEwICsxMTgsNyBAQCBwcml2YXRl
OgogICAgIGludCBtX2hvc3RJZDsKICAgICBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBtX2NsaWVu
dDsKICAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKLSAgICBPd25QdHI8RGVidWdnZXJB
Z2VudERlbGVnYXRlU3R1Yj4gbV9kZWJ1Z2dlckFnZW50RGVsZWdhdGVTdHViOwotICAgIE93blB0
cjxUb29sc0FnZW50RGVsZWdhdGVTdHViPiBtX3Rvb2xzQWdlbnREZWxlZ2F0ZVN0dWI7CiAgICAg
T3duUHRyPERlYnVnZ2VyQWdlbnRJbXBsPiBtX2RlYnVnZ2VyQWdlbnRJbXBsOwotICAgIE93blB0
cjxBcHVBZ2VudERlbGVnYXRlU3R1Yj4gbV9hcHVBZ2VudERlbGVnYXRlU3R1YjsKICAgICBib29s
IG1fYXB1QWdlbnRFbmFibGVkOwogICAgIGJvb2wgbV9yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxl
ZDsKICAgICBib29sIG1fYXR0YWNoZWQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2
VG9vbHNGcm9udGVuZEltcGwuY3BwCmluZGV4IDU5MmE1MzIuLmEwYzhlYmEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwCkBAIC0zNSw4ICsz
NSw2IEBACiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ29u
dGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRGVidWdn
ZXJBZ2VudC5oIgotI2luY2x1ZGUgIkRldlRvb2xzUlBDSlMuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTQ4LDEwICs0
Niw4IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlByb2ZpbGVyQWdlbnQuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAi
VG9vbHNBZ2VudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV3Jh
cHBlci5oIgogI2luY2x1ZGUgIlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCkBAIC03OCwxMCAr
NzQsNiBAQCBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IFRvVjhTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzKQogICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHMuY2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSk7CiB9CiAKLURFRklORV9S
UENfSlNfQk9VTkRfT0JKKERlYnVnZ2VyQWdlbnQsIERFQlVHR0VSX0FHRU5UX1NUUlVDVCwgRGVi
dWdnZXJBZ2VudERlbGVnYXRlLCBERUJVR0dFUl9BR0VOVF9ERUxFR0FURV9TVFJVQ1QpCi1ERUZJ
TkVfUlBDX0pTX0JPVU5EX09CSihQcm9maWxlckFnZW50LCBQUk9GSUxFUl9BR0VOVF9TVFJVQ1Qs
IFByb2ZpbGVyQWdlbnREZWxlZ2F0ZSwgUFJPRklMRVJfQUdFTlRfREVMRUdBVEVfU1RSVUNUKQot
REVGSU5FX1JQQ19KU19CT1VORF9PQkooVG9vbHNBZ2VudCwgVE9PTFNfQUdFTlRfU1RSVUNULCBU
b29sc0FnZW50RGVsZWdhdGUsIFRPT0xTX0FHRU5UX0RFTEVHQVRFX1NUUlVDVCkKLQogV2ViRGV2
VG9vbHNGcm9udGVuZCogV2ViRGV2VG9vbHNGcm9udGVuZDo6Y3JlYXRlKAogICAgIFdlYlZpZXcq
IHZpZXcsCiAgICAgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogY2xpZW50LApAQCAtMTEzLDE2
ICsxMDUsOSBAQCBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6V2ViRGV2VG9vbHNGcm9udGVuZElt
cGwoCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGZyYW1lQ29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUtPmZyYW1lKCkpOwogCi0g
ICAgbV9kZWJ1Z2dlckFnZW50T2JqLnNldChuZXcgSlNEZWJ1Z2dlckFnZW50Qm91bmRPYmoodGhp
cywgZnJhbWVDb250ZXh0LCAiUmVtb3RlRGVidWdnZXJBZ2VudCIpKTsKLSAgICBtX3Byb2ZpbGVy
QWdlbnRPYmouc2V0KG5ldyBKU1Byb2ZpbGVyQWdlbnRCb3VuZE9iaih0aGlzLCBmcmFtZUNvbnRl
eHQsICJSZW1vdGVQcm9maWxlckFnZW50IikpOwotICAgIG1fdG9vbHNBZ2VudE9iai5zZXQobmV3
IEpTVG9vbHNBZ2VudEJvdW5kT2JqKHRoaXMsIGZyYW1lQ29udGV4dCwgIlJlbW90ZVRvb2xzQWdl
bnQiKSk7Ci0KICAgICAvLyBEZWJ1Z2dlciBjb21tYW5kcyBzaG91bGQgYmUgc2VudCB1c2luZyBz
cGVjaWFsIG1ldGhvZC4KICAgICBCb3VuZE9iamVjdCBkZWJ1Z2dlckNvbW1hbmRFeGVjdXRvck9i
aihmcmFtZUNvbnRleHQsIHRoaXMsICJSZW1vdGVEZWJ1Z2dlckNvbW1hbmRFeGVjdXRvciIpOwog
ICAgIGRlYnVnZ2VyQ29tbWFuZEV4ZWN1dG9yT2JqLmFkZFByb3RvRnVuY3Rpb24oCi0gICAgICAg
ICJEZWJ1Z2dlckNvbW1hbmQiLAotICAgICAgICBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6anNE
ZWJ1Z2dlckNvbW1hbmQpOwotICAgIGRlYnVnZ2VyQ29tbWFuZEV4ZWN1dG9yT2JqLmFkZFByb3Rv
RnVuY3Rpb24oCiAgICAgICAgICJEZWJ1Z2dlclBhdXNlU2NyaXB0IiwKICAgICAgICAgV2ViRGV2
VG9vbHNGcm9udGVuZEltcGw6OmpzRGVidWdnZXJQYXVzZVNjcmlwdCk7CiAgICAgZGVidWdnZXJD
b21tYW5kRXhlY3V0b3JPYmouYnVpbGQoKTsKQEAgLTEzMiwyNSArMTE3LDIwIEBAIFdlYkRldlRv
b2xzRnJvbnRlbmRJbXBsOjp+V2ViRGV2VG9vbHNGcm9udGVuZEltcGwoKQogewogfQogCi12b2lk
IFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpkaXNwYXRjaE1lc3NhZ2VGcm9tQWdlbnQoY29uc3Qg
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkKK3ZvaWQgV2ViRGV2VG9vbHNGcm9udGVuZElt
cGw6OmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2Up
CiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gdjsKLSAgICB2LmFwcGVuZChkYXRhLmNsYXNzTmFtZSk7
Ci0gICAgdi5hcHBlbmQoZGF0YS5tZXRob2ROYW1lKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGRhdGEuYXJndW1lbnRzLnNpemUoKTsgaSsrKQotICAgICAgICB2LmFwcGVuZChkYXRhLmFy
Z3VtZW50c1tpXSk7CiAgICAgaWYgKCFtX2xvYWRlZCkgewotICAgICAgICBtX3BlbmRpbmdJbmNv
bWluZ01lc3NhZ2VzLmFwcGVuZCh2KTsKKyAgICAgICAgbV9wZW5kaW5nSW5jb21pbmdNZXNzYWdl
cy5hcHBlbmQobWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZXhlY3V0ZVNj
cmlwdCh2KTsKKyAgICBleGVjdXRlU2NyaXB0KG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYkRldlRv
b2xzRnJvbnRlbmRJbXBsOjpmcm9udGVuZExvYWRlZCgpCiB7CiAgICAgbV9sb2FkZWQgPSB0cnVl
OwogCi0gICAgZm9yIChWZWN0b3I8VmVjdG9yPFN0cmluZz4gPjo6aXRlcmF0b3IgaXQgPSBtX3Bl
bmRpbmdJbmNvbWluZ01lc3NhZ2VzLmJlZ2luKCk7CisgICAgZm9yIChWZWN0b3I8V2ViU3RyaW5n
Pjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdJbmNvbWluZ01lc3NhZ2VzLmJlZ2luKCk7CiAgICAg
ICAgICBpdCAhPSBtX3BlbmRpbmdJbmNvbWluZ01lc3NhZ2VzLmVuZCgpOwogICAgICAgICAgKytp
dCkgewogICAgICAgICBleGVjdXRlU2NyaXB0KCppdCk7CkBAIC0xNTgsNyArMTM4LDcgQEAgdm9p
ZCBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6ZnJvbnRlbmRMb2FkZWQoKQogICAgIG1fcGVuZGlu
Z0luY29taW5nTWVzc2FnZXMuY2xlYXIoKTsKIH0KIAotdm9pZCBXZWJEZXZUb29sc0Zyb250ZW5k
SW1wbDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdikKK3ZvaWQgV2ViRGV2
VG9vbHNGcm9udGVuZEltcGw6OmV4ZWN1dGVTY3JpcHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdl
KQogewogICAgIFdlYkZyYW1lSW1wbCogZnJhbWUgPSBtX3dlYlZpZXdJbXBsLT5tYWluRnJhbWVJ
bXBsKCk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwpAQCAtMTY4LDI2ICsxNDgsMTIgQEAg
dm9pZCBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdikKICAgICBBU1NFUlQoZGlzcGF0Y2hGdW5jdGlvbi0+SXNGdW5jdGlvbigpKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj46OkNhc3QoZGlzcGF0Y2hGdW5jdGlvbik7CiAgICAgVmVjdG9yPCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gPiBhcmdzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7
IGkrKykKLSAgICAgICAgYXJncy5hcHBlbmQoVG9WOFN0cmluZyh2LmF0KGkpKSk7CisgICAgYXJn
cy5hcHBlbmQoVG9WOFN0cmluZyhtZXNzYWdlKSk7CiAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNo
OwogICAgIHRyeUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7CiAgICAgZnVuY3Rpb24tPkNhbGwoZnJh
bWVDb250ZXh0LT5HbG9iYWwoKSwgYXJncy5zaXplKCksIGFyZ3MuZGF0YSgpKTsKIH0KIAotdm9p
ZCBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6c2VuZFJwY01lc3NhZ2UoY29uc3QgV2ViRGV2VG9v
bHNNZXNzYWdlRGF0YSYgZGF0YSkKLXsKLSAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0FnZW50
KGRhdGEpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRGV2VG9vbHNGcm9udGVuZElt
cGw6OmpzRGVidWdnZXJDb21tYW5kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAg
V2ViRGV2VG9vbHNGcm9udGVuZEltcGwqIGZyb250ZW5kID0gc3RhdGljX2Nhc3Q8V2ViRGV2VG9v
bHNGcm9udGVuZEltcGwqPih2ODo6RXh0ZXJuYWw6OkNhc3QoKmFyZ3MuRGF0YSgpKS0+VmFsdWUo
KSk7Ci0gICAgV2ViU3RyaW5nIGNvbW1hbmQgPSBXZWJDb3JlOjp0b1dlYkNvcmVTdHJpbmdXaXRo
TnVsbENoZWNrKGFyZ3NbMF0pOwotICAgIGZyb250ZW5kLT5tX2NsaWVudC0+c2VuZERlYnVnZ2Vy
Q29tbWFuZFRvQWdlbnQoY29tbWFuZCk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0K
LQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpqc0RlYnVn
Z2VyUGF1c2VTY3JpcHQoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBXZWJEZXZU
b29sc0Zyb250ZW5kSW1wbCogZnJvbnRlbmQgPSBzdGF0aWNfY2FzdDxXZWJEZXZUb29sc0Zyb250
ZW5kSW1wbCo+KHY4OjpFeHRlcm5hbDo6Q2FzdCgqYXJncy5EYXRhKCkpLT5WYWx1ZSgpKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaAppbmRleCBmYTQ3
MDdkLi5jMWM0Nzg2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
RnJvbnRlbmRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250
ZW5kSW1wbC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYkRldlRvb2xzRnJvbnRlbmRJ
bXBsX2gKICNkZWZpbmUgV2ViRGV2VG9vbHNGcm9udGVuZEltcGxfaAogCi0jaW5jbHVkZSAiRGV2
VG9vbHNSUEMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIldlYkRl
dlRvb2xzRnJvbnRlbmQuaCIKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC00OSwxNSArNDksMTMgQEAgY2xhc3MgU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgSlNEZWJ1Z2dlckFnZW50Qm91bmRPYmo7Ci1jbGFzcyBKU1Byb2ZpbGVyQWdl
bnRCb3VuZE9iajsKLWNsYXNzIEpTVG9vbHNBZ2VudEJvdW5kT2JqOwogY2xhc3MgV2ViRGV2VG9v
bHNDbGllbnREZWxlZ2F0ZTsKIGNsYXNzIFdlYlZpZXdJbXBsOwogc3RydWN0IFdlYkRldlRvb2xz
TWVzc2FnZURhdGE7CiAKK3VzaW5nIFdlYkNvcmU6OlN0cmluZzsKKwogY2xhc3MgV2ViRGV2VG9v
bHNGcm9udGVuZEltcGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBEZXZUb29sc1JQQzo6RGVsZWdhdGUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1
YmxpYzoKICAgICBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbCgKQEAgLTY2LDI4ICs2NCwyMSBAQCBw
dWJsaWM6CiAgICAgICAgIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25Mb2NhbGUpOwogICAgIHZp
cnR1YWwgfldlYkRldlRvb2xzRnJvbnRlbmRJbXBsKCk7CiAKLSAgICAvLyBEZXZUb29sc1JQQzo6
RGVsZWdhdGUgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHNlbmRScGNNZXNzYWdl
KGNvbnN0IFdlYktpdDo6V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSk7Ci0KICAgICAvLyBX
ZWJEZXZUb29sc0Zyb250ZW5kIGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VGcm9tQWdlbnQoY29uc3QgV2ViS2l0OjpXZWJEZXZUb29sc01lc3NhZ2VEYXRh
JiBkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hPbkluc3BlY3RvckZyb250ZW5kKGNv
bnN0IFdlYlN0cmluZyYgbWVzc2FnZSk7CiAKICAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBleGVjdXRlU2NyaXB0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2
KTsKKyAgICB2b2lkIGV4ZWN1dGVTY3JpcHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKIAot
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNEZWJ1Z2dlckNvbW1hbmQoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncyk7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBq
c0RlYnVnZ2VyUGF1c2VTY3JpcHQoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncyk7CiAKICAgICBX
ZWJLaXQ6OldlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOwogICAgIFdlYktpdDo6V2ViRGV2VG9v
bHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25Mb2Nh
bGU7Ci0gICAgT3duUHRyPEpTRGVidWdnZXJBZ2VudEJvdW5kT2JqPiBtX2RlYnVnZ2VyQWdlbnRP
Ymo7Ci0gICAgT3duUHRyPEpTUHJvZmlsZXJBZ2VudEJvdW5kT2JqPiBtX3Byb2ZpbGVyQWdlbnRP
Ymo7Ci0gICAgT3duUHRyPEpTVG9vbHNBZ2VudEJvdW5kT2JqPiBtX3Rvb2xzQWdlbnRPYmo7CiAg
ICAgYm9vbCBtX2xvYWRlZDsKLSAgICBWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiBtX3BlbmRpbmdJ
bmNvbWluZ01lc3NhZ2VzOworICAgIFZlY3RvcjxXZWJTdHJpbmc+IG1fcGVuZGluZ0luY29taW5n
TWVzc2FnZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0Rl
dlRvb2xzLmpzCmluZGV4IDY3NGYxZDcuLjhlMDdhNmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvanMvRGV2VG9vbHMuanMKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZU
b29scy5qcwpAQCAtNDEsNDQgKzQxLDIyIEBACiAgKiBAcHJhbWEge3N0cmluZ30gbWV0aG9kTmFt
ZQogICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMgQXJndW1lbnRzIHRv
IGRpc3BhdGNoLgogICovCi1kZXZ0b29scyQkZGlzcGF0Y2ggPSBmdW5jdGlvbihyZW1vdGVOYW1l
LCBtZXRob2ROYW1lLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKQorZGV2dG9vbHMkJGRpc3BhdGNo
ID0gZnVuY3Rpb24obWVzc2FnZSkKIHsKLSAgICByZW1vdGVOYW1lID0gIlJlbW90ZSIgKyByZW1v
dGVOYW1lLnN1YnN0cmluZygwLCByZW1vdGVOYW1lLmxlbmd0aCAtIDgpOwotICAgIHZhciBhZ2Vu
dCA9IHdpbmRvd1tyZW1vdGVOYW1lXTsKLSAgICBpZiAoIWFnZW50KSB7Ci0gICAgICAgIGRlYnVn
UHJpbnQoIk5vIHJlbW90ZSBhZ2VudCAnIiArIHJlbW90ZU5hbWUgKyAiJyBmb3VuZC4iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgbWV0aG9kID0gYWdlbnRbbWV0aG9kTmFtZV07
Ci0gICAgaWYgKCFtZXRob2QpIHsKLSAgICAgICAgZGVidWdQcmludCgiTm8gbWV0aG9kICciICsg
cmVtb3RlTmFtZSArICIuIiArIG1ldGhvZE5hbWUgKyAiJyBmb3VuZC4iKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtZXRob2QuY2FsbCh0aGlzLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0z
KTsKKyAgICB2YXIgYXJncyA9IHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiA/IEpTT04ucGFy
c2UobWVzc2FnZSkgOiBtZXNzYWdlOworICAgIHZhciBtZXRob2ROYW1lID0gYXJnc1swXTsKKyAg
ICB2YXIgcGFyYW1ldGVycyA9IGFyZ3Muc2xpY2UoMSk7CisgICAgV2ViSW5zcGVjdG9yW21ldGhv
ZE5hbWVdLmFwcGx5KFdlYkluc3BlY3RvciwgcGFyYW1ldGVycyk7CiB9OwogCiAKIGRldnRvb2xz
LlRvb2xzQWdlbnQgPSBmdW5jdGlvbigpCiB7Ci0gICAgUmVtb3RlVG9vbHNBZ2VudC5kaWREaXNw
YXRjaE9uID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLnByb2Nlc3NDYWxsYmFjazsKLSAgICBSZW1v
dGVUb29sc0FnZW50LmRpc3BhdGNoT25DbGllbnQgPSB0aGlzLmRpc3BhdGNoT25DbGllbnRfLmJp
bmQodGhpcyk7CiAgICAgdGhpcy5wcm9maWxlckFnZW50XyA9IG5ldyBkZXZ0b29scy5Qcm9maWxl
ckFnZW50KCk7CiB9OwogCiAKIC8qKgotICogQHBhcmFtIHtzdHJpbmd9IHNjcmlwdCBTY3JpcHQg
ZXhyZXNzaW9uIHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUKLSAqICAgICBp
bnNwZWN0ZWQgcGFnZS4KLSAqIEBwYXJhbSB7ZnVuY3Rpb24oT2JqZWN0fHN0cmluZywgYm9vbGVh
bik6dW5kZWZpbmVkfSBvcHRfY2FsbGJhY2sgRnVuY3Rpb24gdG8KLSAqICAgICBjYWxsIHdpdGgg
dGhlIHJlc3VsdC4KLSAqLwotZGV2dG9vbHMuVG9vbHNBZ2VudC5wcm90b3R5cGUuZXZhbHVhdGVK
YXZhU2NyaXB0ID0gZnVuY3Rpb24oc2NyaXB0LCBvcHRfY2FsbGJhY2spCi17Ci0gICAgSW5zcGVj
dG9yQmFja2VuZC5ldmFsdWF0ZShzY3JpcHQsIG9wdF9jYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9
KTsKLX07Ci0KLQotLyoqCiAgKiBAcmV0dXJuIHtkZXZ0b29scy5Qcm9maWxlckFnZW50fSBQcm9m
aWxlciBhZ2VudCBpbnN0YW5jZS4KICAqLwogZGV2dG9vbHMuVG9vbHNBZ2VudC5wcm90b3R5cGUu
Z2V0UHJvZmlsZXJBZ2VudCA9IGZ1bmN0aW9uKCkKQEAgLTg3LDM4ICs2NSw2IEBAIGRldnRvb2xz
LlRvb2xzQWdlbnQucHJvdG90eXBlLmdldFByb2ZpbGVyQWdlbnQgPSBmdW5jdGlvbigpCiB9Owog
CiAKLS8qKgotICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgU2VyaWFsaXplZCBjYWxsIHRvIGJl
IGRpc3BhdGNoZWQgb24gV2ViSW5zcGVjdG9yLgotICogQHByaXZhdGUKLSAqLwotZGV2dG9vbHMu
VG9vbHNBZ2VudC5wcm90b3R5cGUuZGlzcGF0Y2hPbkNsaWVudF8gPSBmdW5jdGlvbihtZXNzYWdl
KQotewotICAgIHZhciBhcmdzID0gdHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciID8gSlNPTi5w
YXJzZShtZXNzYWdlKSA6IG1lc3NhZ2U7Ci0gICAgdmFyIG1ldGhvZE5hbWUgPSBhcmdzWzBdOwot
ICAgIHZhciBwYXJhbWV0ZXJzID0gYXJncy5zbGljZSgxKTsKLSAgICBXZWJJbnNwZWN0b3JbbWV0
aG9kTmFtZV0uYXBwbHkoV2ViSW5zcGVjdG9yLCBwYXJhbWV0ZXJzKTsKLX07Ci0KLQotLyoqCi0g
KiBFdmFsdWF0ZXMganMgZXhwcmVzc2lvbi4KLSAqIEBwYXJhbSB7c3RyaW5nfSBleHByCi0gKi8K
LWRldnRvb2xzLlRvb2xzQWdlbnQucHJvdG90eXBlLmV2YWx1YXRlID0gZnVuY3Rpb24oZXhwcikK
LXsKLSAgICBSZW1vdGVUb29sc0FnZW50LmV2YWx1YXRlKGV4cHIpOwotfTsKLQotCi0vKioKLSAq
IFByaW50cyBzdHJpbmcgIHRvIHRoZSBpbnNwZWN0b3IgY29uc29sZSBvciBzaG93cyBhbGVydCBp
ZiB0aGUgY29uc29sZSBkb2Vzbid0Ci0gKiBleGlzdC4KLSAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0
Ci0gKi8KLWZ1bmN0aW9uIGRlYnVnUHJpbnQodGV4dCkgewotICAgIFdlYkluc3BlY3Rvci5sb2co
dGV4dCk7Ci19Ci0KIAogLyoqCiAgKiBHbG9iYWwgaW5zdGFuY2Ugb2YgdGhlIHRvb2xzIGFnZW50
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29sc0hvc3RTdHViLmpz
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29sc0hvc3RTdHViLmpzCmluZGV4IDUyYjI4
YmIuLmQzMzMzZTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHNI
b3N0U3R1Yi5qcworKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzSG9zdFN0dWIu
anMKQEAgLTM1LDggKzM1LDQgQEAKIAogaWYgKCF3aW5kb3dbIlJlbW90ZURlYnVnZ2VyQ29tbWFu
ZEV4ZWN1dG9yIl0pIHsKICAgICB3aW5kb3dbIlJlbW90ZURlYnVnZ2VyQ29tbWFuZEV4ZWN1dG9y
Il0gPSB7fTsKLSAgICB3aW5kb3dbIlJlbW90ZVByb2ZpbGVyQWdlbnQiXSA9IHt9OwotICAgIHdp
bmRvd1siUmVtb3RlVG9vbHNBZ2VudCJdID0gewotICAgICAgICBkaXNwYXRjaE9uSW5zcGVjdG9y
Q29udHJvbGxlcjogZnVuY3Rpb24oKSB7fQotICAgIH07CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL2pzL1Byb2ZpbGVyQWdlbnQuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pz
L1Byb2ZpbGVyQWdlbnQuanMKaW5kZXggMGI2NWFjZS4uN2Y3NDU5NSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9qcy9Qcm9maWxlckFnZW50LmpzCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvanMvUHJvZmlsZXJBZ2VudC5qcwpAQCAtMzcsOCArMzcsNiBAQAogICovCiBkZXZ0b29s
cy5Qcm9maWxlckFnZW50ID0gZnVuY3Rpb24oKQogewotICAgIFJlbW90ZVByb2ZpbGVyQWdlbnQu
ZGlkR2V0QWN0aXZlUHJvZmlsZXJNb2R1bGVzID0gdGhpcy5fZGlkR2V0QWN0aXZlUHJvZmlsZXJN
b2R1bGVzLmJpbmQodGhpcyk7Ci0gICAgUmVtb3RlUHJvZmlsZXJBZ2VudC5kaWRHZXRMb2dMaW5l
cyA9IHRoaXMuX2RpZEdldExvZ0xpbmVzLmJpbmQodGhpcyk7CiAKICAgICAvKioKICAgICAgKiBQ
cm9maWxlciBsb2cgcG9zaXRpb24uCkBAIC05MiwxMCArOTAsMTcgQEAgZGV2dG9vbHMuUHJvZmls
ZXJBZ2VudC5wcm90b3R5cGUuX2dldE5leHRMb2dMaW5lcyA9IGZ1bmN0aW9uKGltbWVkaWF0ZWx5
KQogICAgIGlmICh0aGlzLl9sYXN0UmVxdWVzdGVkTG9nUG9zaXRpb24gPT0gdGhpcy5fbG9nUG9z
aXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICB2YXIgcG9zID0gdGhpcy5fbGFzdFJlcXVlc3Rl
ZExvZ1Bvc2l0aW9uID0gdGhpcy5fbG9nUG9zaXRpb247CisKKyAgICB2YXIgY2FsbElkID0gV2Vi
SW5zcGVjdG9yLkNhbGxiYWNrLndyYXAodGhpcy5fZGlkR2V0UHJvZmlsZXJMb2dMaW5lcy5iaW5k
KHRoaXMpKTsKICAgICBpZiAoaW1tZWRpYXRlbHkpCi0gICAgICAgIFJlbW90ZVByb2ZpbGVyQWdl
bnQuZ2V0TG9nTGluZXMocG9zKTsKLSAgICBlbHNlCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IFJlbW90ZVByb2ZpbGVyQWdlbnQuZ2V0TG9nTGluZXMocG9zKTsgfSwgNTAwKTsKKyAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRQcm9maWxlckxvZ0xpbmVzKGNhbGxJZCwgcG9zKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgZnVuY3Rpb24gZGVsYXllZFJlcXVlc3QoKQorICAgICAgICB7
CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFByb2ZpbGVyTG9nTGluZXMoY2FsbElk
LCBwb3MpOworICAgICAgICB9CisgICAgICAgIHNldFRpbWVvdXQoZGVsYXllZFJlcXVlc3QsIDUw
MCk7CisgICAgfQogfTsKIAogCkBAIC0xMTQsMjAgKzExOSwxMSBAQCBkZXZ0b29scy5Qcm9maWxl
ckFnZW50LnByb3RvdHlwZS5zdGFydFByb2ZpbGluZyA9IGZ1bmN0aW9uKG1vZHVsZXMpCiAKIAog
LyoqCi0gKiBIYW5kbGVzIGN1cnJlbnQgcHJvZmlsZXIgc3RhdHVzLgotICogQHBhcmFtIHtudW1i
ZXJ9IG1vZHVsZXMgTGlzdCBvZiBhY3RpdmUgKHN0YXJ0ZWQpIG1vZHVsZXMuCi0gKi8KLWRldnRv
b2xzLlByb2ZpbGVyQWdlbnQucHJvdG90eXBlLl9kaWRHZXRBY3RpdmVQcm9maWxlck1vZHVsZXMg
PSBmdW5jdGlvbihtb2R1bGVzKQotewotfTsKLQotCi0vKioKICAqIEhhbmRsZXMgYSBwb3J0aW9u
IG9mIGEgcHJvZmlsZXIgbG9nIHJldHJpZXZlZCBieSBnZXRMb2dMaW5lcyBjYWxsLgogICogQHBh
cmFtIHtudW1iZXJ9IHBvcyBDdXJyZW50IHBvc2l0aW9uIGluIGxvZy4KICAqIEBwYXJhbSB7c3Ry
aW5nfSBsb2cgQSBwb3J0aW9uIG9mIHByb2ZpbGVyIGxvZy4KICAqLwotZGV2dG9vbHMuUHJvZmls
ZXJBZ2VudC5wcm90b3R5cGUuX2RpZEdldExvZ0xpbmVzID0gZnVuY3Rpb24ocG9zLCBsb2cpCitk
ZXZ0b29scy5Qcm9maWxlckFnZW50LnByb3RvdHlwZS5fZGlkR2V0UHJvZmlsZXJMb2dMaW5lcyA9
IGZ1bmN0aW9uKHBvcywgbG9nKQogewogICAgIHRoaXMuX2xvZ1Bvc2l0aW9uID0gcG9zOwogICAg
IGlmIChsb2cubGVuZ3RoID4gMCkgewpAQCAtMTM4LDMgKzEzNCw1IEBAIGRldnRvb2xzLlByb2Zp
bGVyQWdlbnQucHJvdG90eXBlLl9kaWRHZXRMb2dMaW5lcyA9IGZ1bmN0aW9uKHBvcywgbG9nKQog
ICAgICAgICB0aGlzLl9sYXN0UmVxdWVzdGVkTG9nUG9zaXRpb24gPSB0aGlzLl9sb2dQb3NpdGlv
biAtIDE7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLmRpZEdldFByb2ZpbGVyTG9nTGluZXMg
PSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9qcy9Qcm9maWxlclByb2Nlc3Nvci5qcyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvanMvUHJvZmlsZXJQcm9jZXNzb3IuanMKaW5kZXggZjY3OGQyYy4uNjE3MTRlOCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9Qcm9maWxlclByb2Nlc3Nvci5qcworKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL1Byb2ZpbGVyUHJvY2Vzc29yLmpzCkBAIC0yODEsNyAr
MjgxLDcgQEAgZGV2dG9vbHMucHJvZmlsZXIuUHJvY2Vzc29yLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBkZXZ0b29scy5wcm9maWxlci5Mb2dSZWFkZXIucHIKICAqLwogZGV2dG9vbHMucHJvZmlsZXIu
UHJvY2Vzc29yLnByb3RvdHlwZS5wcmludEVycm9yID0gZnVuY3Rpb24oc3RyKQogewotICAgIGRl
YnVnUHJpbnQoc3RyKTsKKyAgICBXZWJJbnNwZWN0b3IubG9nKHN0cik7CiB9OwogCiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRl
eCA3NDVkOTMxLi40NTcwYTY5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDgtMDIgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hyb21pdW0gRGV2VG9vbHM6IEdldCByaWQg
b2YgRGV2VG9vbHMgUlBDLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MzMzNQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
RGV2VG9vbHNBZ2VudC5jcHA6CisgICAgICAgIChEUlREZXZUb29sc0FnZW50OjpzZW5kTWVzc2Fn
ZVRvSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoRFJURGV2VG9vbHNBZ2VudDo6Y2FsbCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuaDoK
KyAgICAgICAgKERSVERldlRvb2xzQ2FsbEFyZ3M6OkRSVERldlRvb2xzQ2FsbEFyZ3MpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcDoKKyAg
ICAgICAgKERSVERldlRvb2xzQ2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAg
IChEUlREZXZUb29sc0NsaWVudDo6Y2FsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJURGV2VG9vbHNDbGllbnQuaDoKKwogMjAxMC0wOC0wMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdl
bnQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNB
Z2VudC5jcHAKaW5kZXggMGZmNzdhMC4uOWRiYmE0OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKQEAgLTM2
LDcgKzM2LDYgQEAKIAogI2luY2x1ZGUgInB1YmxpYy9XZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAi
cHVibGljL1dlYkRldlRvb2xzQWdlbnQuaCIKLSNpbmNsdWRlICJwdWJsaWMvV2ViRGV2VG9vbHNN
ZXNzYWdlRGF0YS5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJw
dWJsaWMvV2ViVmlldy5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0
LmgiCkBAIC02MCw3ICs1OSw3IEBAIHZvaWQgRFJURGV2VG9vbHNBZ2VudDo6c2V0V2ViVmlldyhX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7CiB9CiAKLXZvaWQgRFJU
RGV2VG9vbHNBZ2VudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkRldlRvb2xzTWVz
c2FnZURhdGEmIGRhdGEpCit2b2lkIERSVERldlRvb2xzQWdlbnQ6OnNlbmRNZXNzYWdlVG9JbnNw
ZWN0b3JGcm9udGVuZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAo
bV9kcnREZXZUb29sc0NsaWVudCkKICAgICAgICAgIG1fZHJ0RGV2VG9vbHNDbGllbnQtPmFzeW5j
Q2FsbChEUlREZXZUb29sc0NhbGxBcmdzKGRhdGEpKTsKQEAgLTEwMCw3ICs5OSw3IEBAIHZvaWQg
RFJURGV2VG9vbHNBZ2VudDo6Y2FsbChjb25zdCBEUlREZXZUb29sc0NhbGxBcmdzICZhcmdzKQog
ewogICAgIFdlYkRldlRvb2xzQWdlbnQqIGFnZW50ID0gd2ViRGV2VG9vbHNBZ2VudCgpOwogICAg
IGlmIChhZ2VudCkKLSAgICAgICAgYWdlbnQtPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChh
cmdzLm1fZGF0YSk7CisgICAgICAgIGFnZW50LT5kaXNwYXRjaE9uSW5zcGVjdG9yQmFja2VuZChh
cmdzLm1fZGF0YSk7CiAgICAgaWYgKERSVERldlRvb2xzQ2FsbEFyZ3M6OmNhbGxzQ291bnQoKSA9
PSAxICYmIG1fZHJ0RGV2VG9vbHNDbGllbnQpCiAgICAgICAgIG1fZHJ0RGV2VG9vbHNDbGllbnQt
PmFsbE1lc3NhZ2VzUHJvY2Vzc2VkKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmggYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKaW5kZXggMzdmYzExOS4uYmY2
OWMxOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
RGV2VG9vbHNBZ2VudC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVERldlRvb2xzQWdlbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRXZWJWaWV3KFdlYktpdDo6V2ViVmlldyopOwogCiAgICAgLy8gV2ViRGV2VG9vbHNBZ2VudENs
aWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGNvbnN0IFdlYktpdDo6V2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYpOworICAgIHZpcnR1YWwg
dm9pZCBzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGludCBob3N0SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fcm91dGlu
Z0lEOyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBydW50aW1lRmVhdHVyZVN0YXRlQ2hhbmdlZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZmVh
dHVyZSwgYm9vbCBlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuaAppbmRleCBlNGEzZDQ4Li5iMWFj
MmVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NhbGxBcmdzLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJURGV2VG9vbHNDYWxsQXJncy5oCkBAIC0zMSwyMiArMzEsMTUgQEAKICNpZm5kZWYgRFJU
RGV2VG9vbHNDYWxsQXJnc19oCiAjZGVmaW5lIERSVERldlRvb2xzQ2FsbEFyZ3NfaAogCi0jaW5j
bHVkZSAicHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaCIKICNpbmNsdWRlICJwdWJsaWMv
V2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogY2xhc3MgRFJURGV2
VG9vbHNDYWxsQXJncyB7CiBwdWJsaWM6Ci0gICAgRFJURGV2VG9vbHNDYWxsQXJncyhjb25zdCBX
ZWJLaXQ6OldlYkRldlRvb2xzTWVzc2FnZURhdGEmIGRhdGEpCisgICAgRFJURGV2VG9vbHNDYWxs
QXJncyhjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZGF0YSkKICAgICAgICAgOiBtX2RhdGEoZGF0
YSkKICAgICB7CiAgICAgICAgICsrbV9jYWxsc0NvdW50OwotCi0gICAgICAgIC8vIFRoZSBzYW1l
IGJlaGF2aW91ciBhcyB3ZSBoYXZlIGluIGNhc2Ugb2YgSVBDLgotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZGF0YS5hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGlmIChtX2RhdGEuYXJndW1lbnRzW2ldLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fZGF0
YS5hcmd1bWVudHNbaV0gPSBXZWJLaXQ6OldlYlN0cmluZzo6ZnJvbVVURjgoIiIpOwotICAgICAg
ICB9CiAgICAgfQogCiAgICAgRFJURGV2VG9vbHNDYWxsQXJncyhjb25zdCBEUlREZXZUb29sc0Nh
bGxBcmdzJiBhcmdzKQpAQCAtNjMsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgaW50
IGNhbGxzQ291bnQoKSB7IHJldHVybiBtX2NhbGxzQ291bnQ7IH0KIAotICAgIFdlYktpdDo6V2Vi
RGV2VG9vbHNNZXNzYWdlRGF0YSBtX2RhdGE7CisgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9kYXRh
OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgbV9jYWxsc0NvdW50OwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQu
Y3BwCmluZGV4IGUxNGYwMDguLmU1YjU1NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgRFJURGV2VG9vbHNDbGllbnQ6On5EUlREZXZUb29sc0NsaWVudCgpCiAgICAgICAg
IG1fZHJ0RGV2VG9vbHNBZ2VudC0+ZGV0YWNoKHRoaXMpOwogfQogCi12b2lkIERSVERldlRvb2xz
Q2xpZW50OjpzZW5kTWVzc2FnZVRvQWdlbnQoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYg
ZGF0YSkKK3ZvaWQgRFJURGV2VG9vbHNDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0
IFdlYlN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAobV9kcnREZXZUb29sc0FnZW50KQogICAgICAg
ICBtX2RydERldlRvb2xzQWdlbnQtPmFzeW5jQ2FsbChEUlREZXZUb29sc0NhbGxBcmdzKGRhdGEp
KTsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIERSVERldlRvb2xzQ2xpZW50Ojphc3luY0NhbGwo
Y29uc3QgRFJURGV2VG9vbHNDYWxsQXJncyYgYXJncykKIAogdm9pZCBEUlREZXZUb29sc0NsaWVu
dDo6Y2FsbChjb25zdCBEUlREZXZUb29sc0NhbGxBcmdzJiBhcmdzKQogewotICAgIG1fd2ViRGV2
VG9vbHNGcm9udGVuZC0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUFnZW50KGFyZ3MubV9kYXRhKTsKKyAg
ICBtX3dlYkRldlRvb2xzRnJvbnRlbmQtPmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZChhcmdz
Lm1fZGF0YSk7CiAgICAgaWYgKERSVERldlRvb2xzQ2FsbEFyZ3M6OmNhbGxzQ291bnQoKSA9PSAx
KQogICAgICAgICBhbGxNZXNzYWdlc1Byb2Nlc3NlZCgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKaW5kZXgg
ZjA4NjQ0Yi4uNjkxZTFkNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5EUlREZXZUb29sc0NsaWVudCgpOwogCiAgICAgLy8gV2ViRGV2VG9v
bHNGcm9udGVuZENsaWVudCBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVz
c2FnZVRvQWdlbnQoY29uc3QgV2ViS2l0OjpXZWJEZXZUb29sc01lc3NhZ2VEYXRhJik7CisgICAg
dmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
Jik7CiAgICAgdmlydHVhbCB2b2lkIHNlbmREZWJ1Z2dlckNvbW1hbmRUb0FnZW50KGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBjb21tYW5kKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhY3RpdmF0ZVdp
bmRvdygpOwo=
</data>
<flag name="review"
          id="51559"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>