<?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>122469</bug_id>
          
          <creation_ts>2013-10-07 15:16:43 -0700</creation_ts>
          <short_desc>Clean up ScriptExecutionContext::Task and subclasses</short_desc>
          <delta_ts>2013-10-07 18:29:37 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>
          <dependson>122479</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937235</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-07 15:16:43 -0700</bug_when>
    <thetext>Clean up ScriptExecutionContext::Task and subclasses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937237</commentid>
    <comment_count>1</comment_count>
      <attachid>213620</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-07 15:19:45 -0700</bug_when>
    <thetext>Created attachment 213620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937242</commentid>
    <comment_count>2</comment_count>
      <attachid>213620</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-07 15:26:01 -0700</bug_when>
    <thetext>Comment on attachment 213620
Patch

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

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:89
&gt; +    DerefContextTask(PassRefPtr&lt;ScriptExecutionContext&gt; context)

explicit

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:203
&gt; +    DeliverPendingCallbackTask(PassRefPtr&lt;SQLTransaction&gt; transaction)

explicit

&gt; Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:236
&gt; +    Vector&lt;std::unique_ptr&lt;ScriptExecutionContext::Task&gt;&gt; tasks = std::move(m_pendingTasks);

auto

&gt; Source/WebCore/bindings/js/JSCallbackData.h:80
&gt; +    DeleteCallbackDataTask(JSCallbackData* data)

explicit

&gt; Source/WebCore/dom/Document.cpp:4900
&gt; -        OwnPtr&lt;Task&gt; task = m_pendingTasks[0].release();
&gt; +        auto task = std::move(m_pendingTasks[0]);
&gt;          m_pendingTasks.remove(0);

This code looks pretty inefficient, taking the first element out of a vector in a loop :|

&gt; Source/WebCore/workers/WorkerMessagingProxy.cpp:156
&gt;      WorkerTerminateTask(WorkerMessagingProxy* messagingProxy)

explicit

&gt; Source/WebCore/workers/WorkerMessagingProxy.cpp:213
&gt;      NotifyNetworkStateChangeTask(bool isOnLine)

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937246</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-07 15:37:36 -0700</bug_when>
    <thetext>Committed r157061: &lt;http://trac.webkit.org/changeset/157061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937274</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-07 16:22:59 -0700</bug_when>
    <thetext>This broke the Windows build: http://build.webkit.org/builders/Apple%20Win%20Release%20(Build)/builds/53127/steps/compile-webkit/logs/stdio/text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937316</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-07 18:29:37 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 122479</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213620</attachid>
            <date>2013-10-07 15:19:45 -0700</date>
            <delta_ts>2013-10-07 15:26:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122469-20131007151945.patch</filename>
            <type>text/plain</type>
            <size>80832</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY5YjNjYzBhMDgzNzU2
MWQ0NmM0MTgyMjZkOTM0ZmU4MDA3MDU3Ni4uMDAxYTdiMjNiNDBiMDZjOTlmYjBhYjg0NzZmOTVj
ZDE1MjViNWFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTEwLTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayBhbmQgc3ViY2xhc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlcmVmQ29udGV4dFRhc2s6OkRlcmVmQ29u
dGV4dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6On5EYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzazo6RGVsaXZlclBlbmRpbmdD
YWxsYmFja1Rhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNh
Y3Rpb25DYWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFz
azo6RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxDYWxsYmFja1dyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3Jh
cHBlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2FsbGJhY2tXcmFwcGVyOjpTYWZl
UmVsZWFzZVRhc2s6OlNhZmVSZWxlYXNlVGFzayk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nl
c3NQZW5kaW5nVGFza3MpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Oldvcmtlckdsb2JhbFNjb3Bl
RGlkSW5pdGlhbGl6ZVRhc2s6Oldvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJh
Y2tEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpEZWxl
dGVDYWxsYmFja0RhdGFUYXNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdFRhc2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRM
b29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogZG9tL0Ny
b3NzVGhyZWFkVGFzay5oOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2FsbGJhY2tUYXNrKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1UYXNrQ29udGV4dDo6UGVyZm9ybVRhc2tD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwb3N0VGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc01lc3NhZ2VzU29vblRhc2s6OlByb2Nlc3NNZXNz
YWdlc1Nvb25UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2VzU29vbik6CisgICAgICAgICogZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vU3RyaW5nQ2FsbGJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJhY2spOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpDYWxsQ2FjaGVMaXN0ZW5lclRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNr
KToKKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5Ojp3b3JrZXJTY3JpcHRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3RUb1dvcmtlcik6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50
UXVldWU6OmVucXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJv
eHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2Fn
ZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFk
Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5
TmV0d29ya1N0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVDbG9zZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpjb25maXJtTWVzc2FnZUZy
b21Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
UnVuTG9vcDo6VGFzazo6VGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrOjpXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlz
aFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6c3RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eUluQWxsVGhyZWFkcyk6CisKIDIwMTMtMTAtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQW5pbWF0ZWQgaW1hZ2VzIGFyZSBub3QgcmVzdGFydGVk
IHdoZW4gcGFnZSB2aXNpYmlsaXR5IGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggODY5Yzg1ZjBkNzBiM2M5NmVhNmE4MDc1
NTU5ZmRjMjM0ZmJlZWMxOC4uMTdkMjZhMGY2Mjc4ZGUyY2Y2YjVkM2M5YjBhNTY5M2JhZTA3NDkx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKQEAgLTg2LDExICs4NiwxMiBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRh
YmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsCiAKIGNsYXNzIERlcmVmQ29udGV4
dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8RGVyZWZDb250ZXh0VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dCkKKyAgICBEZXJlZkNvbnRleHRUYXNrKFBh
c3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dCkKKyAgICAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVyZWZD
b250ZXh0VGFzayhjb250ZXh0KSk7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0ID09IG1fY29udGV4dCk7CkBAIC05
OSwxMiArMTAwLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2so
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLXByaXZhdGU6Ci0gICAgRGVyZWZDb250ZXh0VGFz
ayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQpCi0gICAgICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCi0gICAgewotICAgIH0KLSAgICAKICAgICBSZWZQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogfTsKIApAQCAtMTE2LDcgKzExMSw3IEBAIERh
dGFiYXNlOjp+RGF0YWJhc2UoKQogICAgICAgICAvLyBEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUu
CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7CiAgICAgICAgIAotICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKSkpOworICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlcmVmQ29udGV4dFRhc2s+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkpKTsKICAgICB9CiB9CiAKQEAgLTIwNSwy
OCArMjAwLDI0IEBAIHZvaWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSCiAKIGNsYXNzIERlbGl2ZXJQZW5k
aW5nQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNr
PiBjcmVhdGUoUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCisgICAgRGVs
aXZlclBlbmRpbmdDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24pCisgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2sodHJhbnNh
Y3Rpb24pKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPnBlcmZvcm1QZW5kaW5nQ2FsbGJhY2soKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24pCi0gICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICB7Ci0g
ICAgfQotCiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogfTsKIAog
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKFNRTFRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNr
KERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pKTsKKyAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGVsaXZl
clBlbmRpbmdDYWxsYmFja1Rhc2s+KHRyYW5zYWN0aW9uKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+
IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVOYW1lcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggYWZjZWEx
NDNhOTY3MDUxYTE3MTYyMWM5ZWY1N2I0OWUyZjEyODVkNC4uNTZmNzZiMzEwYmRkYzJiNDU5ZWU1
NTg0ODJmYTViMGZhNGQxYzkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTA1LDIxICsxMDUsMTYgQEAg
dm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogCiBj
bGFzcyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFz
ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrKQorICAgIERh
dGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2Us
IFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJhY2spCisgICAgICAgIDogbV9kYXRh
YmFzZShkYXRhYmFzZSkKKyAgICAgICAgLCBtX2NyZWF0aW9uQ2FsbGJhY2soY2FsbGJhY2spCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERhdGFiYXNlQ3JlYXRpb25DYWxsYmFj
a1Rhc2soZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCi0gICAgewotICAgICAg
ICBtX2NyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YWJhc2UuZ2V0KCkpOwogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrKFBhc3NSZWZQ
dHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNhbGxi
YWNrKQotICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0gICAgICAgICwgbV9jcmVhdGlv
bkNhbGxiYWNrKGNhbGxiYWNrKQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREUKICAgICB7CisgICAgICAgIG1fY3JlYXRpb25DYWxs
YmFjay0+aGFuZGxlRXZlbnQobV9kYXRhYmFzZS5nZXQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRy
PERhdGFiYXNlPiBtX2RhdGFiYXNlOwpAQCAtMzAxLDcgKzI5Niw3IEBAIFBhc3NSZWZQdHI8RGF0
YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRlCiAKICAgICBpZiAoYmFja2VuZC0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNr
LmdldCgpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZUNy
ZWF0aW9uQ2FsbGJhY2tUYXNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwot
ICAgICAgICBkYXRhYmFzZS0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEYXRh
YmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrOjpjcmVhdGUoZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJh
Y2spKTsKKyAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrPihkYXRhYmFz
ZSwgY3JlYXRpb25DYWxsYmFjaykpOwogICAgIH0KIAogICAgIEFTU0VSVChkYXRhYmFzZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNr
V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFj
a1dyYXBwZXIuaAppbmRleCBjMTg0YTM3MzgwNTM4MjRlMjc3YTUwMDhiZWE3NGE1YzQzZGEzNjcw
Li42MjQxYmJkMjQwODMwYTgyZmNhOGFhZTdhMmE5MjEwZjhkNzNjNDg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVy
LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgICAgICAgICAgY29udGV4dCA9IG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICAgICAgY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrLnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgY29udGV4dC0+cG9zdFRhc2soU2FmZVJlbGVhc2VUYXNrOjpjcmVhdGUoY2FsbGJhY2spKTsK
KyAgICAgICAgY29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxTYWZlUmVsZWFzZVRh
c2s+KGNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgUGFzc1JlZlB0cjxUPiB1bndyYXAoKQpAQCAt
OTAsMjYgKzkwLDIxIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY2xhc3MgU2FmZVJlbGVhc2VU
YXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8U2FmZVJlbGVhc2VUYXNrPiBjcmVhdGUoVCogY2Fs
bGJhY2tUb1JlbGVhc2UpCisgICAgICAgIGV4cGxpY2l0IFNhZmVSZWxlYXNlVGFzayhUKiBjYWxs
YmFja1RvUmVsZWFzZSkKKyAgICAgICAgICAgIDogbV9jYWxsYmFja1RvUmVsZWFzZShjYWxsYmFj
a1RvUmVsZWFzZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBT
YWZlUmVsZWFzZVRhc2soY2FsbGJhY2tUb1JlbGVhc2UpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBPVkVSUklERQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQobV9jYWxsYmFja1RvUmVsZWFzZSAmJiBjb250ZXh0ICYmIGNvbnRleHQtPmlzQ29u
dGV4dFRocmVhZCgpKTsKICAgICAgICAgICAgIG1fY2FsbGJhY2tUb1JlbGVhc2UtPmRlcmVmKCk7
CiAgICAgICAgICAgICBjb250ZXh0LT5kZXJlZigpOwogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBleHBsaWNpdCBTYWZlUmVsZWFzZVRhc2soVCogY2FsbGJhY2tUb1Jl
bGVhc2UpCi0gICAgICAgICAgICA6IG1fY2FsbGJhY2tUb1JlbGVhc2UoY2FsbGJhY2tUb1JlbGVh
c2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFu
dXBUYXNrKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICAKICAgICAg
ICAgVCogbV9jYWxsYmFja1RvUmVsZWFzZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCmluZGV4IGEzMzY3YjBlZjIxY2Jj
MGY4N2JhY2QwMmRlYzZlZmM3MGYwMzFkOWMuLmQ4NTlhYTUyODZmNTNlYmRkNTdlYTRkNjVjZmFj
OTU1OTJhNTg3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwCkBAIC0yMzIsOSArMjMyLDEwIEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNzUGVuZGluZ1Rhc2tzKCkKICAgICAgICAg
bV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrc0NhbGxiYWNrLCB0aGlz
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgVmVjdG9yPE93blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiA+IHRhc2tzOwotICAgIHRhc2tzLnN3YXAobV9wZW5kaW5nVGFz
a3MpOwotICAgIGZvciAoVmVjdG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiA+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0YXNrcy5l
bmQoKTsgKytpdGVyKQorCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPj4gdGFza3MgPSBzdGQ6Om1vdmUobV9wZW5kaW5nVGFza3MpOworCisg
ICAgZm9yIChhdXRvIGl0ZXIgPSB0YXNrcy5iZWdpbigpOyBpdGVyICE9IHRhc2tzLmVuZCgpOyAr
K2l0ZXIpCiAgICAgICAgICgqaXRlciktPnBlcmZvcm1UYXNrKDApOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKaW5kZXggYzZmMzNhNTgw
MzIyMTE4ZjY1YjIzOGQ0MTUyMGQxOWIyMWRmYmJlYS4uZWIyY2Q4NTEzMDcwMjljY2M3MmIzOTlh
NzA4MWQ3OTQzNjI2ZTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgbV9zZW5kUmVxdWVzdFJlc3VsdDsKICAg
ICB1bnNpZ25lZCBsb25nIG1fYnVmZmVyZWRBbW91bnQ7CiAgICAgYm9vbCBtX3N1c3BlbmRlZDsK
LSAgICBWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+ID4gbV9wZW5k
aW5nVGFza3M7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPj4gbV9wZW5kaW5nVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBiNmJhMmQ2
ZmE5NDI3YzY2NzRiZmNiYzJlYzJiNWM1ZjFmY2UyOTRkLi5jZGZmMGZkNDAzODQxZjA0YTBlYTgz
MzI5NGNlYjk2NGE1NTY5MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTM2MSwxNCArMzYxLDE1IEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6On5CcmlkZ2UoKQogCiBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzayA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGUoV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlBlZXIqIHBlZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2Fk
ZXJQcm94eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIpCisgICAgV29ya2VyR2xvYmFsU2NvcGVEaWRJbml0
aWFsaXplVGFzayhXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlciogcGVlciwg
V29ya2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlcikKKyAgICAgICAg
OiBtX3BlZXIocGVlcikKKyAgICAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQorICAg
ICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcih3b3JrZXJDbGllbnRXcmFwcGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxp
emVUYXNrKHBlZXIsIGxvYWRlclByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVyKSk7CiAgICAgfQot
CiAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzaygpIHsgfQor
Citwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSBPVkVSUklERQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwpAQCAtMzgyLDE2ICszODMs
NiBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi1wcml2YXRlOgotICAgIFdvcmtlckdsb2Jh
bFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2soV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXIqIHBlZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtlckxv
YWRlclByb3h5KiBsb2FkZXJQcm94eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdv
cmtlckNsaWVudFdyYXBwZXIpCi0gICAgICAgIDogbV9wZWVyKHBlZXIpCi0gICAgICAgICwgbV9s
b2FkZXJQcm94eShsb2FkZXJQcm94eSkKLSAgICAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIo
d29ya2VyQ2xpZW50V3JhcHBlcikKLSAgICB7Ci0gICAgfQotCiAgICAgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlBlZXIqIG1fcGVlcjsKICAgICBXb3JrZXJMb2FkZXJQcm94eSog
bV9sb2FkZXJQcm94eTsKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CkBAIC00MDUsOCArMzk2LDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5p
dGlhbGl6ZShTY3JpcHRFeGVjdXQKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyID0gcHJwQ2xpZW50V3JhcHBlcjsKIAogICAg
IFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUoY2xpZW50V3JhcHBlciwgKmxvYWRlclByb3h5LCBj
b250ZXh0LCB0YXNrTW9kZSk7Ci0gICAgYm9vbCBzZW50ID0gbG9hZGVyUHJveHktPnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAgIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrOjpjcmVhdGUo
cGVlciwgbG9hZGVyUHJveHksIGNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSk7CisgICAgYm9vbCBz
ZW50ID0gbG9hZGVyUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3Rk
OjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyR2xv
YmFsU2NvcGVEaWRJbml0aWFsaXplVGFzaz4ocGVlciwgbG9hZGVyUHJveHksIGNsaWVudFdyYXBw
ZXIpLCB0YXNrTW9kZSk7CiAgICAgaWYgKCFzZW50KSB7CiAgICAgICAgIGNsaWVudFdyYXBwZXIt
PmNsZWFyUGVlcigpOwogICAgICAgICBkZWxldGUgcGVlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmluZGV4IGQzMjFjNTdmMDVjOWYwMjMyZjFlN2QwNGNh
NDQyMWMzNzRiMDg2MjUuLjkwOWRkNGQxZDViY2YxNTMxMzYyZTc1MWEyYmFhNWFhYTgxYzYxODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApAQCAtNzcs
MTkgKzc3LDE4IEBAIHByaXZhdGU6CiAKIGNsYXNzIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8RGVsZXRlQ2FsbGJhY2tEYXRhVGFzaz4gY3JlYXRlKEpTQ2FsbGJhY2tEYXRh
KiBkYXRhKQorICAgIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soSlNDYWxsYmFja0RhdGEqIGRhdGEp
CisgICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soZGF0YSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3ByaXZhdGU6CisgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklE
RQogICAgIHsKICAgICAgICAgZGVsZXRlIG1fZGF0YTsKICAgICB9Ci0gICAgdmlydHVhbCBib29s
IGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci1wcml2YXRlOgogCi0gICAg
RGVsZXRlQ2FsbGJhY2tEYXRhVGFzayhKU0NhbGxiYWNrRGF0YSogZGF0YSkgOiBtX2RhdGEoZGF0
YSkge30KKyAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIEpTQ2FsbGJhY2tEYXRhKiBtX2RhdGE7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaAppbmRl
eCA2NzJjYzg1MjE0NjI2M2IxMzk5NmFjMzhkYzgwMWM1YTQ4OGFlZWE0Li4yMzc2M2FmMDUxY2Q4
MGRjZmE4YTQ2ZjcwNzUxNjU3NjVjZjI1ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaApAQCAtMzUsMTYgKzM1LDEwIEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s7CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0VGFzayBG
SU5BTCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxKU0dsb2JhbE9iamVjdFRhc2s+IGNyZWF0ZShKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1
ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQ
dHI8SlNDOjpUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEpTR2xvYmFsT2JqZWN0VGFzayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRy
LCB0YXNrQ29udGV4dCkpOwotICAgIH0KLQorICAgIEpTR2xvYmFsT2JqZWN0VGFzayhKU0RPTUds
b2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZl
bnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0Pik7
CiAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3RUYXNrKCk7CiAKIHByaXZhdGU6Ci0gICAgSlNH
bG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVm
UHRyPEpTQzo6VGFza0NvbnRleHQ+KTsKLQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7CiAKICAgICBSZWZQdHI8SlNHbG9iYWxP
YmplY3RDYWxsYmFjaz4gbV9jYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGMyOWU2ZDU3OTI4ZGZkNGE2ZThjYmFkN2ZkMzcw
MzVjOGViNGJlNWMuLmRkYzlkYTM1M2VlNDQzZTE4YzA5ZTExNTZmODQxY2Q4NTQ4MDUzYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAt
MTY3LDcgKzE2Nyw3IEBAIGJvb2wgSlNET01XaW5kb3dCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVu
dHNFbmFibGVkKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB2b2lkIEpTRE9NV2luZG93
QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5j
dGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQp
CiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKEpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKChK
U0RPTVdpbmRvd0Jhc2UqKXRoaXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOwor
ICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3RkOjpt
YWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFRhc2s+KChKU0RPTVdpbmRvd0Jhc2UqKXRoaXNPYmpl
Y3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFz
ZTo6d2lsbFJlbW92ZUZyb21XaW5kb3dTaGVsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggMmY5N2FiYjlh
MTNkMzJkMTNmYTE2YmE5N2YyMWZmMmM3ODZhZDMwMS4uNjlkNGVmODAxZDFiM2RhNjBlMTBlMmQ0
ZjgxNzRlYmZkZjhiNzRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtOTksNyArOTksNyBAQCBib29sIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0
IEpTR2xvYmFsT2JqZWN0Kgogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNr
VG9FdmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlv
blB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCiB7CiAgICAgY29uc3Qg
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgo
SlNET01HbG9iYWxPYmplY3QqKXRoaXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkp
OworICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3Rk
OjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFRhc2s+KChKU0RPTUdsb2JhbE9iamVjdCopdGhp
c09iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYmFsU2NvcGUqIHdv
cmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxZDIyMDAzNDZkZGVjOWIxODliODRhNDY1MGY3ODVj
MWQwMDhkYjBmLi42OGY1YWU5ZDM3YTNhYjQzZWEzM2ZiMDQ4NzAzOTE1Nzg2YjM1ZmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMzA4NSw3ICszMDg1LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlv
bgogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5p
c0NvbnRleHRUaHJlYWQoKSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBk
ZWxldGUgbV9kYXRhO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxzZVxuIik7
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKERlbGV0
ZUNhbGxiYWNrRGF0YVRhc2s6OmNyZWF0ZShtX2RhdGEpKTtcbiIpOworICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlbGV0
ZUNhbGxiYWNrRGF0YVRhc2s+KG1fZGF0YSkpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjaWZuZGVmIE5ERUJVR1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgbV9kYXRh
ID0gMDtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Dcm9zc1RocmVhZFRhc2suaAppbmRleCBlMjgwOTk4N2Y4YzBmYjFlOGU2OWM5NDY3ZmRh
ODA3ZTM0ODk1NzY2Li5iZGFkMDExZjBiMWMwMDMwYjRhOGY0YTNkY2IzODIyNGJlMGUyMWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC02MywyNCArNjMsMTggQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgQ3Jvc3NUaHJlYWRUYXNrMTxQMSwgTVAxPiBDcm9zc1RocmVhZFRh
c2s7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJh
bVR5cGUgUGFyYW0xOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBj
cmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEpKTsK
LSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrMShNZXRob2QgbWV0aG9kLCBQ
YXJhbTEgcGFyYW1ldGVyMSkKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwg
bV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFy
YW1ldGVyMSk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQ
MSBtX3BhcmFtZXRlcjE7CiB9OwpAQCAtOTMsMTIgKzg3LDYgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlw
ZSBQYXJhbTI7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0
ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2Qs
IHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NU
aHJlYWRUYXNrMihNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFt
ZXRlcjIpCiAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICAgICAsIG1fcGFyYW1ldGVy
MShwYXJhbWV0ZXIxKQpAQCAtMTA2LDEyICs5NCwxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewogICAgICAgICAoKm1fbWV0
aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMik7CiAgICAgfQogCi1wcml2
YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CiAgICAgUDIg
bV9wYXJhbWV0ZXIyOwpAQCAtMTI2LDEyICsxMTQsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOwogICAg
IHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAzPjo6UGFyYW1UeXBlIFBh
cmFtMzsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1l
dGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0z
IHBhcmFtZXRlcjMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhy
ZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMpKTsKLSAg
ICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrMyhNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQogICAg
ICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVy
MSkKQEAgLTE0MCwxMiArMTIyLDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgICgqbV9tZXRob2QpKGNvbnRl
eHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMpOwogICAgIH0KIAot
cHJpdmF0ZToKICAgICBNZXRob2QgbV9tZXRob2Q7CiAgICAgUDEgbV9wYXJhbWV0ZXIxOwogICAg
IFAyIG1fcGFyYW1ldGVyMjsKQEAgLTE2MiwxMiArMTQ0LDYgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAzPjo6UGFyYW1UeXBlIFBhcmFtMzsK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQND46OlBhcmFtVHlw
ZSBQYXJhbTQ7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0
ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBh
cmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1l
dGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBD
cm9zc1RocmVhZFRhc2s0KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIg
cGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQogICAgICAg
ICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkK
QEAgLTE3NywxMiArMTUzLDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQs
IG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7
CiAgICAgfQogCi1wcml2YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFt
ZXRlcjE7CiAgICAgUDIgbV9wYXJhbWV0ZXIyOwpAQCAtMjAxLDEyICsxNzcsNyBAQCBwdWJsaWM6
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5
cGUgUGFyYW00OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA1
Pjo6UGFyYW1UeXBlIFBhcmFtNTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFk
VGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFy
YW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFy
YW1ldGVyNSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRU
YXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVy
NCwgcGFyYW1ldGVyNSkpOwotICAgIH0KLQotcHJpdmF0ZToKK3B1YmxpYzoKICAgICBDcm9zc1Ro
cmVhZFRhc2s1KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1l
dGVyNSkKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIx
KHBhcmFtZXRlcjEpCkBAIC0yMTcsMTIgKzE4OCwxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewogICAgICAgICAoKm1fbWV0
aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBt
X3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIE1ldGhv
ZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CiAgICAgUDIgbV9wYXJhbWV0ZXIyOwpA
QCAtMjQzLDEyICsyMTQsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1Ro
cmVhZFRhc2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OwogICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA2Pjo6UGFyYW1UeXBlIFBhcmFtNjsKIAotICAgIHN0
YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBh
cmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBh
cmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2Qs
IHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRl
cjUsIHBhcmFtZXRlcjYpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNr
NihNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBh
cmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBh
cmFtNiBwYXJhbWV0ZXI2KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBt
X3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTI2MCw3ICsyMjUsOCBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewogICAgICAg
ICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJh
bWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKICAgICB9
CkBAIC0yODgsMTIgKzI1NCw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3Nz
VGhyZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7CiAgICAgdHlwZWRlZiB0eXBl
bmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OwogCi0gICAg
c3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwg
UGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywg
UGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwg
UGFyYW03IHBhcmFtZXRlcjcpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENy
b3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMs
IHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYsIHBhcmFtZXRlcjcpKTsKLSAgICB9
Ci0KLXByaXZhdGU6CitwdWJsaWM6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrNyhNZXRob2QgbWV0aG9k
LCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIz
LCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2
LCBQYXJhbTcgcGFyYW1ldGVyNykKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAg
ICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0zMDYsMTIgKzI2NywxMiBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwg
bV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2LCBt
X3BhcmFtZXRlcjcpOwogICAgIH0KIAotcHJpdmF0ZToKICAgICBNZXRob2QgbV9tZXRob2Q7CiAg
ICAgUDEgbV9wYXJhbWV0ZXIxOwogICAgIFAyIG1fcGFyYW1ldGVyMjsKQEAgLTMzNiwxMiArMjk3
LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRz
PFA3Pjo6UGFyYW1UeXBlIFBhcmFtNzsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFk
VGFza1RyYWl0czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7CiAgICAgCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFt
ZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFt
ZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFt
ZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJh
bWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3LCBw
YXJhbWV0ZXI4KSk7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKK3B1YmxpYzoKICAgICBDcm9zc1Ro
cmVhZFRhc2s4KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1l
dGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3LCBQYXJhbTggcGFyYW1l
dGVyOCkKICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0
ZXIxKQpAQCAtMzU1LDEyICszMTEsMTIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgICgqbV9tZXRob2Qp
KGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFy
YW1ldGVyNCwgbV9wYXJhbWV0ZXI1LCBtX3BhcmFtZXRlcjYsIG1fcGFyYW1ldGVyNywgbV9wYXJh
bWV0ZXI4KTsKICAgICB9CiAgICAgCi1wcml2YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAg
ICBQMSBtX3BhcmFtZXRlcjE7CiAgICAgUDIgbV9wYXJhbWV0ZXIyOwpAQCAtMzczLDY4ICszMjks
NjggQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+
Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNr
VGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVh
dGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgcmV0dXJuIENyb3Nz
VGhyZWFkVGFzazE8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDE+Ojpj
cmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrMTx0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMT4+KAogICAgICAgICBtZXRob2Qs
CiAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDI+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNh
bGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDIm
IHBhcmFtZXRlcjIpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazI8dHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAyPjo6VHlwZSwgTVAyPjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkVGFzazI8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEs
IHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyPj4oCiAgICAgICAgIG1l
dGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBD
cm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgTVAzPgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRob2Qp
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzKSwKICAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQog
ewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2szPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1Q
MiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDM+OjpjcmVhdGUoCisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrMzx0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAz
Pj4oCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5
KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCiAg
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+
Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNr
VGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVh
dGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1QMSwgTVAyLCBNUDMsIE1QNCksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0
IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRl
cjQpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazQ8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlw
ZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKLSAgICAg
ICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQ+OjpjcmVhdGUoCisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNDx0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAz
LAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QND4+KAog
ICAgICAgICAgICAgbWV0aG9kLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpj
b3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiks
CiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENy
b3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVu
YW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1l
IFA1LCB0eXBlbmFtZSBNUDU+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUpCiB7Ci0gICAg
cmV0dXJuIENyb3NzVGhyZWFkVGFzazU8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpU
eXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKLSAgICAgICAgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFA1Pjo6VHlwZSwgTVA1Pjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENyb3NzVGhyZWFkVGFzazU8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBN
UDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1
Pjo6VHlwZSwgTVA1Pj4oCiAgICAgICAgICAgICBtZXRob2QsCi0gICAgICAgICAgICBDcm9zc1Ro
cmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6
Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29w
eShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLCAg
IAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBD
cm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCiAgICAgICAgICAgICBDcm9z
c1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFt
ZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQ
NSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgotUGFzc093blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVu
aXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNr
KAogICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwg
TVAzLCBNUDQsIE1QNSwgTVA2KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDIm
IHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwg
Y29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2KQogewotICAgIHJldHVy
biBDcm9zc1RocmVhZFRhc2s2PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwg
TVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCi0gICAgICAgIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
NT46OlR5cGUsIE1QNSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDY+
OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNjx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5
cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDUsIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2Pj4oCiAgICAgICAgICAgICBtZXRo
b2QsCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSks
IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKICAgICAgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLApAQCAtNDQyLDEzICszOTgsMTMgQEAgUGFzc093blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQs
IHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5
cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhv
ZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYs
IE1QNyksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBj
b25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJh
bWV0ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNiwgY29uc3QgUDcmIHBhcmFtZXRlcjcpCiB7Ci0g
ICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazc8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+
OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s3PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1Q
MiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCiAgICAgICAgIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+
OjpUeXBlLCBNUDYsCi0gICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlw
ZSwgTVA3Pjo6Y3JlYXRlKAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46
OlR5cGUsIE1QNz4+KAogICAgICAgICAgICAgbWV0aG9kLAogICAgICAgICAgICAgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNv
cHkocGFyYW1ldGVyMiksCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHko
cGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKQEAg
LTQ1NywxMyArNDEzLDEzIEBAIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
TVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1
LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3LCB0
eXBlbmFtZSBQOCwgdHlwZW5hbWUgTVA4PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKm1ldGhv
ZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYs
IE1QNywgTVA4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVy
MiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYg
cGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3LCBj
b25zdCBQOCYgcGFyYW1ldGVyOCkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrODx0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6
VHlwZSwgTVAzLAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazg8
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
Mz46OlR5cGUsIE1QMywKICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUs
IE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDUsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2LAotICAgIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQOD46
OlR5cGUsIE1QOD46OmNyZWF0ZSgKKyAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46
OlR5cGUsIE1QNywgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+OjpUeXBlLCBNUDg+PigK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVh
ZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmMDkzMGZkOTE1NGUzYmE2MjBkNzI4ZGI1ZDg2NThj
ZmZkOTNmZjE0Li5kYjRiZTE3ZTk0NThlOTJjZjJhNDRhMTYxY2Q4NDViNjcyZTgxOWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ4MzEsNyArNDgzMSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYgZG5zUHJlZmV0Y2hD
b250cm9sKQogdm9pZCBEb2N1bWVudDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkp
IHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrOjpjcmVhdGUoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSkpOworICAgICAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFk
ZENvbnNvbGVNZXNzYWdlVGFzaz4oc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00ODQyLDcgKzQ4NDIsNyBAQCB2b2lkIERvY3VtZW50OjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdAogdm9pZCBEb2N1bWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFBhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRo
cmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzazo6Y3JlYXRl
KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAgcG9zdFRhc2soc3RkOjptYWtlX3Vu
aXF1ZTxBZGRDb25zb2xlTWVzc2FnZVRhc2s+KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDg1OCwxNCArNDg1OCwxNCBAQCBTZWN1cml0eU9y
aWdpbiogRG9jdW1lbnQ6OnRvcE9yaWdpbigpIGNvbnN0CiBzdHJ1Y3QgUGVyZm9ybVRhc2tDb250
ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZXJmb3JtVGFza0NvbnRleHQpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQZXJmb3JtVGFza0NvbnRleHQoV2Vh
a1B0cjxEb2N1bWVudD4gZG9jdW1lbnQsIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzaykKKyAgICBQZXJmb3JtVGFza0NvbnRleHQoV2Vha1B0cjxEb2N1bWVudD4g
ZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrKQogICAgICAgICA6IGRvY3VtZW50UmVmZXJlbmNlKGRvY3VtZW50KQotICAgICAgICAsIHRh
c2sodGFzaykKKyAgICAgICAgLCB0YXNrKHN0ZDo6bW92ZSh0YXNrKSkKICAgICB7CiAgICAgfQog
CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gZG9jdW1lbnRSZWZlcmVuY2U7Ci0gICAgT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2s7CiB9OwogCiB2b2lkIERvY3VtZW50Ojpk
aWRSZWNlaXZlVGFzayh2b2lkKiB1bnR5cGVkQ29udGV4dCkKQEAgLTQ4ODgsMTUgKzQ4ODgsMTUg
QEAgdm9pZCBEb2N1bWVudDo6ZGlkUmVjZWl2ZVRhc2sodm9pZCogdW50eXBlZENvbnRleHQpCiAg
ICAgY29udGV4dC0+dGFzay0+cGVyZm9ybVRhc2soZG9jdW1lbnQpOwogfQogCi12b2lkIERvY3Vt
ZW50Ojpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2spCit2b2lkIERvY3VtZW50Ojpwb3N0
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gdGFzaykKIHsKLSAgICBjYWxsT25NYWluVGhyZWFk
KGRpZFJlY2VpdmVUYXNrLCBuZXcgUGVyZm9ybVRhc2tDb250ZXh0KG1fd2Vha0ZhY3RvcnkuY3Jl
YXRlV2Vha1B0cigpLCB0YXNrKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChkaWRSZWNlaXZlVGFz
aywgbmV3IFBlcmZvcm1UYXNrQ29udGV4dChtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSwg
c3RkOjptb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVy
RmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKIHsKICAgICB3aGlsZSAoIW1fcGVuZGluZ1Rhc2tzLmlz
RW1wdHkoKSkgewotICAgICAgICBPd25QdHI8VGFzaz4gdGFzayA9IG1fcGVuZGluZ1Rhc2tzWzBd
LnJlbGVhc2UoKTsKKyAgICAgICAgYXV0byB0YXNrID0gc3RkOjptb3ZlKG1fcGVuZGluZ1Rhc2tz
WzBdKTsKICAgICAgICAgbV9wZW5kaW5nVGFza3MucmVtb3ZlKDApOwogICAgICAgICB0YXNrLT5w
ZXJmb3JtVGFzayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGYzNmIwMjQ2
OWM0Mjc0MjZjZmY1OTQ3OTQxMTU3OWQ5NDMyMjFhYzIuLmM2MWFmYWViZmJlNzZjNTI1NTIyM2M1
NjA3OWI2NmQ2ZmNkYzM1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05MzQsNyArOTM0LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNETlNQcmVmZXRjaEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzRE5TUHJlZmV0Y2hFbmFibGVkOyB9CiAgICAgdm9pZCBwYXJzZUROU1ByZWZldGNoQ29u
dHJvbEhlYWRlcihjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQ
YXNzT3duUHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4
dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soc3Rk
Ojp1bmlxdWVfcHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29u
dGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CkBAIC0xNTE4LDcgKzE1MTgsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBUaW1lcjxEb2N1bWVudD4gbV9wZW5kaW5nVGFza3NUaW1lcjsK
LSAgICBWZWN0b3I8T3duUHRyPFRhc2s+ID4gbV9wZW5kaW5nVGFza3M7CisgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxUYXNrPj4gbV9wZW5kaW5nVGFza3M7CiAKICNpZiBFTkFCTEUoSU9TX1RF
WFRfQVVUT1NJWklORykKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAppbmRleCBmNzQ4YWM5ZTBmOTUwNGI5OTMxZTcyYTllNTllZTU3MzIx
YThkNDZiLi5jZTljNzQyYWRkN2Y4ZjJlOTA4YWI4YTQxOGI5ODg1MmM5YjViMmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01MSwxMiAr
NTEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcm9jZXNzTWVzc2FnZXNTb29u
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxQcm9jZXNzTWVzc2FnZXNTb29uVGFzaz4gY3JlYXRlKCkKKyAg
ICBQcm9jZXNzTWVzc2FnZXNTb29uVGFzaygpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ByaXZhdGU6
CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpIE9WRVJSSURFCiAgICAgewogICAgICAgICBjb250ZXh0LT5kaXNwYXRjaE1lc3NhZ2VQ
b3J0RXZlbnRzKCk7CiAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojpwcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24oKQogewotICAgIHBvc3RUYXNr
KFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrOjpjcmVhdGUoKSk7CisgICAgcG9zdFRhc2soc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZXNzTWVzc2FnZXNTb29uVGFzaz4oKSk7CiB9CiAKIHZvaWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2ZW50cygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA4NzQ4Njg4MmI5ZWM3MjNk
Y2VlMGMwYTFlYWY4YTk0OGJiNjBjMmQ4Li44Yzg1N2VhYzhmZDRjOTNmYjBiNmNiYjBkZGVjNjM2
ZTFmNWQxZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Ns
ZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogCi0gICAgdmlydHVh
bCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pID0gMDsgLy8gRXhlY3V0ZXMgdGhlIHRh
c2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQg
cG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+KSA9IDA7IC8vIEV4ZWN1dGVzIHRoZSB0YXNr
IG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICAvLyBHZXRzIHRoZSBu
ZXh0IGlkIGluIGEgY2lyY3VsYXIgc2VxdWVuY2UgZnJvbSAxIHRvIDJeMzEtMS4KICAgICBpbnQg
Y2lyY3VsYXJTZXF1ZW50aWFsSUQoKTsKQEAgLTE1NywxOCArMTU3LDE1IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJsaWMgVGFzayB7
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxBZGRDb25zb2xlTWVzc2Fn
ZVRhc2s+IGNyZWF0ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsK
LSAgICAgICAgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIE9WRVJSSURFOwotICAgIHByaXZhdGU6CiAgICAgICAgIEFkZENvbnNvbGVN
ZXNzYWdlVGFzayhNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkKICAgICAg
ICAgICAgICwgbV9sZXZlbChsZXZlbCkKICAgICAgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2Uu
aXNvbGF0ZWRDb3B5KCkpCiAgICAgICAgIHsKICAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7CisKICAg
ICAgICAgTWVzc2FnZVNvdXJjZSBtX3NvdXJjZTsKICAgICAgICAgTWVzc2FnZUxldmVsIG1fbGV2
ZWw7CiAgICAgICAgIFN0cmluZyBtX21lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxi
YWNrLmNwcAppbmRleCBjNjI4NWIxNzE1YmM2NzJmNWM5ZDg4YjFlOTY0ZDE1MTAxMDEyYWNmLi41
NDc1MzYwODVjMDhhZGMzYzI3ZmQ0YTM0MmZhOTU5NjBkODQyMzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHJpbmdDYWxsYmFjay5jcHAKQEAgLTQwLDIxICs0MCwxNiBAQCBuYW1lc3BhY2UgewogCiBj
bGFzcyBEaXNwYXRjaENhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEaXNwYXRjaENhbGxiYWNr
VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrLCBjb25zdCBT
dHJpbmcmIGRhdGEpCisgICAgRGlzcGF0Y2hDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxTdHJpbmdD
YWxsYmFjaz4gY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICAgICAgOiBtX2NhbGxi
YWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fZGF0YShkYXRhKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBEaXNwYXRjaENhbGxiYWNrVGFzayhjYWxsYmFjaywgZGF0YSkpOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKLSAgICB7Ci0gICAgICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YSk7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIERpc3BhdGNoQ2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8U3Ry
aW5nQ2FsbGJhY2s+IGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgICAgIDogbV9j
YWxsYmFjayhjYWxsYmFjaykKLSAgICAgICAgLCBtX2RhdGEoZGF0YSkKKyAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIE9WRVJSSURFCiAgICAgewor
ICAgICAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2RhdGEpOwogICAgIH0KIAogICAgIFJl
ZlB0cjxTdHJpbmdDYWxsYmFjaz4gbV9jYWxsYmFjazsKQEAgLTY1LDcgKzYwLDcgQEAgcHJpdmF0
ZToKIAogdm9pZCBTdHJpbmdDYWxsYmFjazo6c2NoZWR1bGVDYWxsYmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgY29udGV4dC0+
cG9zdFRhc2soRGlzcGF0Y2hDYWxsYmFja1Rhc2s6OmNyZWF0ZSh0aGlzLCBkYXRhKSk7CisgICAg
Y29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxEaXNwYXRjaENhbGxiYWNrVGFzaz4o
dGhpcywgZGF0YSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CmluZGV4IDczNTdiNDVmYTZhYTdkMGNkMTEzNzBjNDVmYTYzN2RiM2VmODA1NTYuLjQ4MjI2NGJi
MjcwYWI4YjY4OTcwMjk5NjQ3NjBiMzczY2MxNTc3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0x
MTE5LDExICsxMTE5LDE1IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJl
YWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpCiAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVy
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElE
IGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKQorICAgIENhbGxD
YWNoZUxpc3RlbmVyVGFzayhQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQg
cHJvZ3Jlc3NEb25lKQorICAgICAgICA6IG1fZG9jdW1lbnRMb2FkZXIobG9hZGVyKQorICAgICAg
ICAsIG1fZXZlbnRJRChldmVudElEKQorICAgICAgICAsIG1fcHJvZ3Jlc3NUb3RhbChwcm9ncmVz
c1RvdGFsKQorICAgICAgICAsIG1fcHJvZ3Jlc3NEb25lKHByb2dyZXNzRG9uZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRlciwg
ZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKSk7CiAgICAgfQogCitwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KSBPVkVSUklERQogICAgIHsKICAgICAgICAgCkBAIC0xMTM3LDE1ICsxMTQxLDYgQEAg
cHVibGljOgogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
LT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKG1fZXZlbnRJRCwgbV9wcm9ncmVzc1RvdGFsLCBt
X3Byb2dyZXNzRG9uZSk7CiAgICAgfQogCi1wcml2YXRlOgotICAgIENhbGxDYWNoZUxpc3RlbmVy
VGFzayhQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25l
KQotICAgICAgICA6IG1fZG9jdW1lbnRMb2FkZXIobG9hZGVyKQotICAgICAgICAsIG1fZXZlbnRJ
RChldmVudElEKQotICAgICAgICAsIG1fcHJvZ3Jlc3NUb3RhbChwcm9ncmVzc1RvdGFsKQotICAg
ICAgICAsIG1fcHJvZ3Jlc3NEb25lKHByb2dyZXNzRG9uZSkKLSAgICB7Ci0gICAgfQotCiAgICAg
UmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVyOwogICAgIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpFdmVudElEIG1fZXZlbnRJRDsKICAgICBpbnQgbV9wcm9ncmVzc1RvdGFsOwpA
QCAtMTE2Nyw3ICsxMTYyLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnQKICAgICAKICAgICBB
U1NFUlQoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gbG9hZGVyKTsKIAotICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0
ZShsb2FkZXIsIGV2ZW50SUQsIHByb2dyZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOworICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPENhbGxDYWNoZUxpc3Rl
bmVyVGFzaz4obG9hZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpKTsK
IH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldFVwZGF0ZVN0YXR1cyhVcGRhdGVT
dGF0dXMgc3RhdHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCA1YzI2YzhjNjEwMTUyNmMyNzJmOGQ4
NjQyOWRmYmEzYWQ2MGYxMDYxLi5hNDhkMGJiMjc1ZTgxMWYyNjRmY2ZjOWI3NWRjZWJlODA0OTIz
ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtNzksOCArNzksOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
b3JpZ2luLCBjb25zdCBVUkwmIHVybFRvTWF0Y2gpIGNvbnN0OwogCiAgICAgLy8gV29ya2VyTG9h
ZGVyUHJveHkKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKLSAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xv
YWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3Ry
aW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXb3JrZXJSZXBvcnRpbmdQcm94eQogICAgIHZpcnR1
YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6bWF0
Y2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG8KICAg
ICByZXR1cm4gbmFtZSA9PSBtX25hbWU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrKQordm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVuaXF1
ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAgICBNdXRleExv
Y2tlciBsb2NrKG1fd29ya2VyRG9jdW1lbnRzTG9jayk7CiAKQEAgLTE1MywxNSArMTUzLDE1IEBA
IHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrCiAgICAgLy8gSnVzdCBwaWNrIGFuIGFyYml0cmFyeSBh
Y3RpdmUgZG9jdW1lbnQgZnJvbSB0aGUgSGFzaFNldCBhbmQgcGFzcyBsb2FkIHJlcXVlc3RzIHRv
IGl0LgogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVy
ZSB0aGUgdXNlciBjbG9zZXMgdGhlIGRvY3VtZW50IG1pZC1sb2FkLCB2aWEgYSBzaGFkb3cgZG9j
dW1lbnQgb3Igc29tZSBvdGhlciBzb2x1dGlvbj8KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAq
KG1fd29ya2VyRG9jdW1lbnRzLmJlZ2luKCkpOwotICAgIGRvY3VtZW50LT5wb3N0VGFzayh0YXNr
KTsKKyAgICBkb2N1bWVudC0+cG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKIH0KIAotYm9vbCBT
aGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYg
bW9kZSkKK2Jvb2wgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRh
c2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAoaXNDbG9zaW5nKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQobV90aHJlYWQpOwotICAgIG1fdGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKHRhc2ssIG1vZGUpOworICAgIG1fdGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKHN0ZDo6bW92ZSh0YXNrKSwgbW9kZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTI1OSwxOCArMjU5LDEzIEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OmNs
b3NlKCkKIAogY2xhc3MgU2hhcmVkV29ya2VyQ29ubmVjdFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2hh
cmVkV29ya2VyQ29ubmVjdFRhc2s+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4gY2hhbm5lbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2hhcmVkV29y
a2VyQ29ubmVjdFRhc2soY2hhbm5lbCkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBTaGFyZWRX
b3JrZXJDb25uZWN0VGFzayhQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkK
ICAgICAgICAgOiBtX2NoYW5uZWwoY2hhbm5lbCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQp
Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0KSBPVkVSUklERQogICAgIHsKICAgICAgICAgUmVmUHRyPE1l
c3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqc2NyaXB0Q29udGV4dCk7CiAg
ICAgICAgIHBvcnQtPmVudGFuZ2xlKG1fY2hhbm5lbC5yZWxlYXNlKCkpOwpAQCAtMzcwLDcgKzM2
NSw3IEBAIHZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OndvcmtlclNjcmlwdExv
YWRlZChTaGFyZWRXb3JrZXJQcm94eSYgcHJveHksCiAgICAgICAgIHByb3h5LnNldFRocmVhZCh0
aHJlYWQpOwogICAgICAgICB0aHJlYWQtPnN0YXJ0KCk7CiAgICAgfQotICAgIHByb3h5LnRocmVh
ZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soU2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OmNyZWF0ZShw
b3J0KSk7CisgICAgcHJveHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrPihwb3J0KSk7CiB9CiAKIGJvb2wgRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJlZFdvcmtlcnMoRG9jdW1lbnQqIGRvY3Vt
ZW50KQpAQCAtNDE4LDcgKzQxMyw3IEBAIHZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnk6OmNvbm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29yCiAgICAgfQog
ICAgIC8vIElmIHByb3h5IGlzIGFscmVhZHkgcnVubmluZywganVzdCBjb25uZWN0IHRvIGl0IC0g
b3RoZXJ3aXNlLCBraWNrIG9mZiBhIGxvYWRlciB0byBsb2FkIHRoZSBzY3JpcHQuCiAgICAgaWYg
KHByb3h5LT50aHJlYWQoKSkKLSAgICAgICAgcHJveHktPnRocmVhZCgpLT5ydW5Mb29wKCkucG9z
dFRhc2soU2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OmNyZWF0ZShwb3J0KSk7CisgICAgICAgIHBy
b3h5LT50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2hhcmVk
V29ya2VyQ29ubmVjdFRhc2s+KHBvcnQpKTsKICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcih3b3JrZXIsIHBvcnQsIHByb3h5LnJlbGVhc2UoKSkpOwogICAgICAgICBs
b2FkZXItPmxvYWQodXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVl
dWUuY3BwCmluZGV4IDBjYzQ3ODliMzA2ZDliMTQ4YTljZDIxNzQ3ZTA4OTIxNWI5NTg2MzcuLmQ0
Y2RkZWE4MWQ0MTQzYWIyYTM3OTc2MDFiNWE2MjMzMTNiMmYwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtNDgsOSArNDgsMTEgQEAgV29ya2Vy
RXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUoKQogCiBjbGFzcyBXb3JrZXJFdmVudFF1ZXVl
OjpFdmVudERpc3BhdGNoZXJUYXNrIEZJTkFMIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGlzcGF0Y2hl
clRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSYg
ZXZlbnRRdWV1ZSkKKyAgICBFdmVudERpc3BhdGNoZXJUYXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50LCBXb3JrZXJFdmVudFF1ZXVlJiBldmVudFF1ZXVlKQorICAgICAgICA6IG1fZXZlbnQoZXZl
bnQpCisgICAgICAgICwgbV9ldmVudFF1ZXVlKGV2ZW50UXVldWUpCisgICAgICAgICwgbV9pc0Nh
bmNlbGxlZChmYWxzZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZlbnRE
aXNwYXRjaGVyVGFzayhldmVudCwgZXZlbnRRdWV1ZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fkV2ZW50RGlzcGF0Y2hlclRhc2soKQpAQCAtNTksMTEgKzYxLDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1fZXZlbnRRdWV1ZS5tX2V2ZW50VGFza01hcC5yZW1vdmUobV9ldmVudC5nZXQoKSk7
CiAgICAgfQogCi0gICAgdm9pZCBkaXNwYXRjaEV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICB2b2lkIGNhbmNlbCgpCiAgICAgewotICAg
ICAgICBldmVudC0+dGFyZ2V0KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgICAgICBtX2lz
Q2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAgICAgbV9ldmVudC5jbGVhcigpOwogICAgIH0KIAorcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmIChtX2lzQ2FuY2VsbGVkKQpA
QCAtNzMsMTggKzc3LDkgQEAgcHVibGljOgogICAgICAgICBtX2V2ZW50LmNsZWFyKCk7CiAgICAg
fQogCi0gICAgdm9pZCBjYW5jZWwoKQotICAgIHsKLSAgICAgICAgbV9pc0NhbmNlbGxlZCA9IHRy
dWU7Ci0gICAgICAgIG1fZXZlbnQuY2xlYXIoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRXZl
bnREaXNwYXRjaGVyVGFzayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZlbnRRdWV1
ZSYgZXZlbnRRdWV1ZSkKLSAgICAgICAgOiBtX2V2ZW50KGV2ZW50KQotICAgICAgICAsIG1fZXZl
bnRRdWV1ZShldmVudFF1ZXVlKQotICAgICAgICAsIG1faXNDYW5jZWxsZWQoZmFsc2UpCisgICAg
dm9pZCBkaXNwYXRjaEV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCkKICAgICB7CisgICAgICAgIGV2ZW50LT50YXJnZXQoKS0+ZGlzcGF0Y2hFdmVu
dChldmVudCk7CiAgICAgfQogCiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OwpAQCAtOTcsOSAr
OTIsOSBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBwcnBFdmVudCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBwcnBFdmVudDsKLSAgICBPd25QdHI8RXZlbnRE
aXNwYXRjaGVyVGFzaz4gdGFzayA9IEV2ZW50RGlzcGF0Y2hlclRhc2s6OmNyZWF0ZShldmVudCwg
KnRoaXMpOworICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnREaXNwYXRjaGVy
VGFzaz4oZXZlbnQsICp0aGlzKTsKICAgICBtX2V2ZW50VGFza01hcC5hZGQoZXZlbnQucmVsZWFz
ZSgpLCB0YXNrLmdldCgpKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2so
dGFzay5yZWxlYXNlKCkpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wb3N0VGFzayhz
dGQ6Om1vdmUodGFzaykpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDI5Mzc5NzQwNWQ1MTQ5YTdkNWQ3
NzAyYjY2ODUzYThmM2M1ZTlkOGEuLmNlM2I0Y2FjMmI3OThmNWQyZWFkZTZhMTAxMDA3YWViNDcz
MzQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UoKQogICAg
IC8vIEFmdGVyIG1fY2xvc2luZyBpcyBzZXQsIGFsbCB0aGUgdGFza3MgaW4gdGhlIHF1ZXVlIGNv
bnRpbnVlIHRvIGJlIGZldGNoZWQgYnV0IG9ubHkKICAgICAvLyB0YXNrcyB3aXRoIGlzQ2xlYW51
cFRhc2soKT09dHJ1ZSB3aWxsIGJlIGV4ZWN1dGVkLgogICAgIG1fY2xvc2luZyA9IHRydWU7Ci0g
ICAgcG9zdFRhc2soQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2s6OmNyZWF0ZSgpKTsKKyAgICBw
b3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrPigpKTsK
IH0KIAogV29ya2VyTmF2aWdhdG9yKiBXb3JrZXJHbG9iYWxTY29wZTo6bmF2aWdhdG9yKCkgY29u
c3QKQEAgLTE4MCw5ICsxODAsOSBAQCBib29sIFdvcmtlckdsb2JhbFNjb3BlOjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXb3JrZXJHbG9i
YWxTY29wZTo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0YXNrKQordm9pZCBXb3JrZXJHbG9i
YWxTY29wZTo6cG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgdGhy
ZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKKyAgICB0aHJlYWQoKS0+cnVuTG9vcCgp
LnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAKIGludCBXb3JrZXJHbG9iYWxTY29wZTo6
c2V0VGltZW91dChQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91
dCkKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpsb2dFeGNlcHRp
b25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0CiB2b2lkIFdvcmtl
ckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAg
ICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QWRkQ29uc29sZU1l
c3NhZ2VUYXNrPihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVh
ZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzazo6Y3JlYXRlKHNv
dXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAgcG9zdFRhc2soc3RkOjptYWtlX3VuaXF1
ZTxBZGRDb25zb2xlTWVzc2FnZVRhc2s+KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oCmluZGV4IDI1MzJiOTI2ZGQzM2Y2MTNkMTE3YjIzY2U4NDFiYTFhY2MwNDVmYzQuLmM1
YWI3ZjMxNTBlOTk1YjUxNTg0NjNmOTRhYzZhNGM4MDQyNDQzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTgzLDcgKzgzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pIE9WRVJSSURF
OyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5
LgorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+KSBP
VkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hy
b25vdXNseS4KIAogICAgICAgICAvLyBXb3JrZXJHbG9iYWxTY29wZQogICAgICAgICBXb3JrZXJH
bG9iYWxTY29wZSogc2VsZigpIHsgcmV0dXJuIHRoaXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTG9hZGVyUHJveHkuaAppbmRleCAxODU0MmI2ZmU3NTVmMjBmNjRhNjVmNTI5ZWMw
NDg4NDI0ZTZhNDhhLi4zMDQ4NWE0NmZlYmJmM2Y2NjU4MzJlYWU5OThkODczOTQ0ZWJiZDczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCkBAIC00OSwxMiAr
NDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5Xb3JrZXJMb2Fk
ZXJQcm94eSgpIHsgfQogCiAgICAgICAgIC8vIFBvc3RzIGEgdGFzayB0byB0aGUgdGhyZWFkIHdo
aWNoIHJ1bnMgdGhlIGxvYWRpbmcgY29kZSAobm9ybWFsbHksIHRoZSBtYWluIHRocmVhZCkuCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNr
VG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSA9
IDA7CiAKICAgICAgICAgLy8gUG9zdHMgY2FsbGJhY2tzIGZyb20gbG9hZGluZyBjb2RlIHRvIHRo
ZSBXb3JrZXJHbG9iYWxTY29wZS4gVGhlICdtb2RlJyBpcyB1c2VkIHRvIGRpZmZlcmVudGlhdGUK
ICAgICAgICAgLy8gc3BlY2lmaWMgc3luY2hyb25vdXMgbG9hZGluZyByZXF1ZXN0cyBzbyB0aGV5
IGNhbiBiZSAnbmVzdGVkJywgcGVyIHNwZWMuCiAgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGFzayB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAgICAgdmlydHVhbCBib29sIHBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCAwMmViYzY1MWNkNmI4YTY4NmNk
NTIwN2I3ZDQ2ZjBmZGMzNjE5NjZlLi5hZTIyZWQ1NjdjZWZlNmJhOGU2MTgyYzYzYWIxNDJlZGI4
NmJlMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcApAQCAtNTYsMTkgKzU2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlV29ya2Vy
R2xvYmFsU2NvcGVUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyR2xvYmFsU2Nv
cGVUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzKSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIE1lc3Nh
Z2VXb3JrZXJHbG9iYWxTY29wZVRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQog
ICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQogICAgICAgICAsIG1fY2hhbm5lbHMoY2hhbm5l
bHMpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNj
cmlwdENvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIERlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUqPihzY3JpcHRDb250ZXh0KTsKQEAgLTg0LDEyICs3OSw2IEBAIHByaXZhdGU6CiAK
IGNsYXNzIE1lc3NhZ2VXb3JrZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJUYXNr
PiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQ
cm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IE1lc3NhZ2VXb3JrZXJUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzLCBtZXNzYWdpbmdQcm94eSkpOwot
ICAgIH0KLQotcHJpdmF0ZToKICAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAg
ICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxz
KQpAQCAtOTcsNyArODYsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkK
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdENvbnRleHQpIE9WRVJSSURFCiAgICAgewogICAgICAgICBXb3JrZXIqIHdv
cmtlck9iamVjdCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgpOwogICAgICAgICBp
ZiAoIXdvcmtlck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkp
CkBAIC0xMDcsNyArOTcsNiBAQCBwcml2YXRlOgogICAgICAgICB3b3JrZXJPYmplY3QtPmRpc3Bh
dGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVsZWFzZSgpLCBtX21lc3NhZ2Up
KTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bV9tZXNzYWdlOwogICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVs
czsKICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKQEAgLTExNSwx
MiArMTA0LDYgQEAgcHJpdmF0ZToKIAogY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxXb3JrZXJFeGNlcHRpb25UYXNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJFeGNlcHRpb25UYXNrKGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIG1lc3NhZ2luZ1Byb3h5KSk7
Ci0gICAgfQotCi1wcml2YXRlOgogICAgIFdvcmtlckV4Y2VwdGlvblRhc2soY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQog
ICAgICAgICA6IG1fZXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSkKICAg
ICAgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKQEAgLTEzMCw3ICsxMTMsOCBAQCBwcml2
YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAg
ewogICAgICAgICBXb3JrZXIqIHdvcmtlck9iamVjdCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtl
ck9iamVjdCgpOwogICAgICAgICBpZiAoIXdvcmtlck9iamVjdCkKQEAgLTE1MywxOCArMTM3LDEz
IEBAIHByaXZhdGU6CiAKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzayA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2s+IGNyZWF0ZShXb3JrZXJN
ZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzayhtZXNzYWdpbmdQcm94eSkp
OwotICAgIH0KLQotcHJpdmF0ZToKICAgICBXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2so
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICA6IG1fbWVzc2Fn
aW5nUHJveHkobWVzc2FnaW5nUHJveHkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3ByaXZhdGU6CisgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRJbnRlcm5hbCgpOwogICAgIH0KQEAgLTE3NCwxOCArMTUzLDEzIEBAIHByaXZhdGU6CiAKIGNs
YXNzIFdvcmtlclRlcm1pbmF0ZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGVybWluYXRlVGFz
az4gY3JlYXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGVybWluYXRlVGFzayhtZXNzYWdpbmdQ
cm94eSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBXb3JrZXJUZXJtaW5hdGVUYXNrKFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICAgICAgOiBtX21lc3NhZ2luZ1By
b3h5KG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCitwcml2YXRlOgorICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREUKICAgICB7
CiAgICAgICAgIG1fbWVzc2FnaW5nUHJveHktPnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7
CiAgICAgfQpAQCAtMTk1LDEyICsxNjksNiBAQCBwcml2YXRlOgogCiBjbGFzcyBXb3JrZXJUaHJl
YWRBY3Rpdml0eVJlcG9ydFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFkQWN0aXZpdHlS
ZXBvcnRUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBi
b29sIGNvbmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNr
KG1lc3NhZ2luZ1Byb3h5LCBjb25maXJtaW5nTWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7
Ci0gICAgfQotCi1wcml2YXRlOgogICAgIFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzayhX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIGJvb2wgY29uZmlybWluZ01lc3Nh
Z2UsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogICAgICAgICA6IG1fbWVzc2FnaW5nUHJveHko
bWVzc2FnaW5nUHJveHkpCiAgICAgICAgICwgbV9jb25maXJtaW5nTWVzc2FnZShjb25maXJtaW5n
TWVzc2FnZSkKQEAgLTIwOCw3ICsxNzYsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCitwcml2
YXRlOgorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fbWVzc2FnaW5nUHJveHktPnJlcG9ydFBlbmRp
bmdBY3Rpdml0eUludGVybmFsKG1fY29uZmlybWluZ01lc3NhZ2UsIG1faGFzUGVuZGluZ0FjdGl2
aXR5KTsKICAgICB9CkBAIC0yMjAsMTkgKzE4OSwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBQb3N0
TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUb1Bh
Z2VJbnNwZWN0b3JUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1By
b3h5LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzayhtZXNzYWdpbmdQcm94eSwgbWVz
c2FnZSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rv
clRhc2soV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgICAgIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKICAg
ICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZS5pc29sYXRlZENvcHkoKSkKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIE9WRVJSSURFCiAgICAgewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIGlm
IChXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjdG9yKiBwYWdlSW5zcGVjdG9yID0g
bV9tZXNzYWdpbmdQcm94eS0+bV9wYWdlSW5zcGVjdG9yKQpAQCAtMjQ2LDE4ICsyMTAsMTMgQEAg
cHJpdmF0ZToKIAogY2xhc3MgTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzayA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNrPiBjcmVhdGUoYm9vbCBpc09uTGluZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm90aWZ5TmV0d29ya1N0YXRlQ2hh
bmdlVGFzayhpc09uTGluZSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBOb3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2VUYXNrKGJvb2wgaXNPbkxpbmUpCiAgICAgICAgIDogbV9pc09uTGluZShpc09u
TGluZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgKmNvbnRleHQpCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250ZXh0KSBPVkVSUklERQogICAg
IHsKICAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IG1faXNPbkxpbmUgPyBldmVudE5h
bWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50OwogICAgICAgICBX
b3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxXb3JrZXJH
bG9iYWxTY29wZSo+KGNvbnRleHQpOwpAQCAtMzEyLDcgKzI3MSw3IEBAIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQogewotICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNz
YWdlLCBjaGFubmVscywgdGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlV29ya2VyVGFzaz4obWVzc2FnZSwgY2hhbm5l
bHMsIHRoaXMpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VU
b1dvcmtlckdsb2JhbFNjb3BlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKQEAgLTMy
MiwzMSArMjgxLDMxIEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTCiAKICAgICBpZiAobV93b3Jr
ZXJUaHJlYWQpIHsKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAg
ICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJHbG9iYWxT
Y29wZVRhc2s6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscykpOworICAgICAgICBtX3dvcmtlclRo
cmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVdvcmtlckds
b2JhbFNjb3BlVGFzaz4obWVzc2FnZSwgY2hhbm5lbHMpKTsKICAgICB9IGVsc2UKLSAgICAgICAg
bV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrOjpj
cmVhdGUobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s+KG1lc3Nh
Z2UsIGNoYW5uZWxzKSk7CiB9CiAKLWJvb2wgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitib29sIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUp
CiB7CiAgICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgQVNTRVJUKG1fd29ya2VyVGhyZWFkKTsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZSh0YXNrLCBtb2RlKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShzdGQ6Om1vdmUodGFzayksIG1vZGUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVy
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3ZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7CiAgICAgLy8gRklYTUU6IEluIGNhc2Ug
b2YgbmVzdGVkIHdvcmtlcnMsIHRoaXMgc2hvdWxkIGdvIGRpcmVjdGx5IHRvIHRoZSByb290IERv
Y3VtZW50IGNvbnRleHQuCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNE
b2N1bWVudCgpKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHRhc2sp
OworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptb3ZlKHRhc2sp
KTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJFeGNlcHRpb25UYXNrOjpjcmVhdGUoZXJyb3JN
ZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgdGhpcykpOworICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJFeGNlcHRpb25UYXNrPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
c291cmNlVVJMLCB0aGlzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyTWVzc2FnaW5nUHJveHkq
IG1lc3NhZ2luZ1Byb3h5LCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCkBAIC0zNzUsNyArMzM0LDcgQEAg
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRy
PERlZGljYXRlZFdvcmtlclRocmVhZD4KICAgICAgICAgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5n
QWN0aXZpdHkgPSB0cnVlOyAvLyBXb3JrZXIgaW5pdGlhbGl6YXRpb24gbWVhbnMgYSBwZW5kaW5n
IGFjdGl2aXR5LgogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YXNrQ291bnQ7
ICsraSkKLSAgICAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2sobV9x
dWV1ZWRFYXJseVRhc2tzW2ldLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bW92ZShtX3F1ZXVlZEVhcmx5VGFza3NbaV0pKTsK
ICAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmNsZWFyKCk7CiAgICAgfQogfQpAQCAtMzk0LDcg
KzM1Myw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNo
YW5nZShib29sIGlzT25saW5lKQogICAgIGlmICghbV93b3JrZXJUaHJlYWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlVGFzazo6Y3JlYXRlKGlzT25saW5lKSk7CisgICAgbV93b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmeU5ldHdvcmtTdGF0
ZUNoYW5nZVRhc2s+KGlzT25saW5lKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
Ondvcmtlck9iamVjdERlc3Ryb3llZEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
b3JrZXJNZXNzYWdpbmdQcm94eSogcHJveHkpCkBAIC00NjUsMTQgKzQyNCwxNCBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVE
ZXN0cm95ZWQoKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29y
a2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRUYXNrOjpjcmVhdGUodGhpcykpOworICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxT
Y29wZURlc3Ryb3llZFRhc2s+KHRoaXMpKTsKICAgICAvLyBXaWxsIGV4ZWN1dGUgd29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCiB9CiAKIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKCkKIHsKICAg
ICAvLyBFeGVjdXRlcyB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIG9uIHBhcmVudCBjb250
ZXh0J3MgdGhyZWFkLgotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29y
a2VyVGVybWluYXRlVGFzazo6Y3JlYXRlKHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGVybWluYXRlVGFzaz4odGhp
cykpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURl
c3Ryb3llZEludGVybmFsKCkKQEAgLTUwMyw3ICs0NjIsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojp0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9y
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzazo6Y3JlYXRlKHRoaXMsIG1l
c3NhZ2UpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8UG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNrPih0aGlzLCBtZXNzYWdlKSk7
CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnVwZGF0ZUluc3BlY3RvclN0YXRlQ29v
a2llKGNvbnN0IFN0cmluZyYpCkBAIC01MTQsMTMgKzQ3MywxMyBAQCB2b2lkIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojp1cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZShjb25zdCBTdHJpbmcmKQogCiB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s6OmNyZWF0ZSh0aGlzLCB0
cnVlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNr
Pih0aGlzLCB0cnVlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKICAgICAvLyBXaWxsIGV4ZWN1dGUg
cmVwb3J0UGVuZGluZ0FjdGl2aXR5SW50ZXJuYWwoKSBvbiBjb250ZXh0J3MgdGhyZWFkLgogfQog
CiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s6OmNyZWF0ZSh0aGlzLCBmYWxzZSwg
aGFzUGVuZGluZ0FjdGl2aXR5KSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzaz4odGhp
cywgZmFsc2UsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSByZXBv
cnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCAxODk2
YTgxMzUwNGFjMThhYmFjZGQxZmFjMDMxOTA2OWRmZjc1YTYxLi4zNDM4OWYyOWI0ZjcyYjUwOGVl
ODMwZTZiNjcyNDUwMDllYmUwN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oCkBAIC04Miw4ICs4Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgV29ya2VyTG9hZGVyUHJveHkuCiAgICAgICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCBvbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzY2hl
ZHVsZSBsb2FkaW5nCiAgICAgICAgIC8vIHJlcXVlc3RzIGFuZCB0byBzZW5kIGNhbGxiYWNrcyBi
YWNrIHRvIFdvcmtlckdsb2JhbFNjb3BlLgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tU
b0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSBPVkVSUklE
RTsKLSAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5n
JiBtb2RlKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIo
c3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
c3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJp
bmcmIG1vZGUpIE9WRVJSSURFOwogCiAgICAgICAgIHZvaWQgd29ya2VyVGhyZWFkQ3JlYXRlZChQ
YXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4pOwogCkBAIC0xMTUsNyArMTE1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlOwog
Ci0gICAgICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPiBt
X3F1ZXVlZEVhcmx5VGFza3M7IC8vIFRhc2tzIGFyZSBxdWV1ZWQgaGVyZSB1bnRpbCB0aGVyZSdz
IGEgdGhyZWFkIG9iamVjdCBjcmVhdGVkLgorICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiBtX3F1ZXVlZEVhcmx5VGFza3M7IC8vIFRh
c2tzIGFyZSBxdWV1ZWQgaGVyZSB1bnRpbCB0aGVyZSdzIGEgdGhyZWFkIG9iamVjdCBjcmVhdGVk
LgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6
OlBhZ2VJbnNwZWN0b3IqIG1fcGFnZUluc3BlY3RvcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggZjRhMmVmYzg2MzdkNjJmZTIwNjY3YzNjMWNk
MDA4Zjk2ODI0MzBiZi4uMGRiZmI1ODIxZTdjY2YzNTVmMWY2YzQ2OTIyZTIwOWE2YzYwZGU0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xOTYsMjQgKzE5
NiwxOSBAQCB2b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCiAgICAgbV9tZXNzYWdlUXVl
dWUua2lsbCgpOwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3ZvaWQgV29ya2VyUnVuTG9vcDo6
cG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRh
c2spCiB7Ci0gICAgcG9zdFRhc2tGb3JNb2RlKHRhc2ssIGRlZmF1bHRNb2RlKCkpOworICAgIHBv
c3RUYXNrRm9yTW9kZShzdGQ6Om1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpOwogfQogCi12b2lk
IFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKFBhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3ZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tB
bmRUZXJtaW5hdGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChUYXNrOjpjcmVhdGUo
dGFzaywgZGVmYXVsdE1vZGUoKS5pc29sYXRlZENvcHkoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVl
LmFwcGVuZEFuZEtpbGwoc3RkOjptYWtlX3VuaXF1ZTxUYXNrPihzdGQ6Om1vdmUodGFzayksIGRl
ZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpw
b3N0VGFza0Zvck1vZGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9y
TW9kZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywg
Y29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpj
cmVhdGUodGFzaywgbW9kZS5pc29sYXRlZENvcHkoKSkpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
V29ya2VyUnVuTG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRlKFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2Rl
KQotewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4obmV3IFRhc2sodGFzaywgbW9k
ZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KHN0
ZDo6bW92ZSh0YXNrKSwgbW9kZS5pc29sYXRlZENvcHkoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1
bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKGNvbnN0IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0yMjMsOCArMjE4LDggQEAgdm9pZCBX
b3JrZXJSdW5Mb29wOjpUYXNrOjpwZXJmb3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5M
b29wLCBTY3JpcHRFeGVjdXQKICAgICAgICAgbV90YXNrLT5wZXJmb3JtVGFzayhjb250ZXh0KTsK
IH0KIAotV29ya2VyUnVuTG9vcDo6VGFzazo6VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKLSAgICA6IG1fdGFzayh0
YXNrKQorV29ya2VyUnVuTG9vcDo6VGFzazo6VGFzayhzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgIDogbV90
YXNrKHN0ZDo6bW92ZSh0YXNrKSkKICAgICAsIG1fbW9kZShtb2RlLmlzb2xhdGVkQ29weSgpKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAppbmRleCAzZGVlNWE1M2Yx
ZGEyNWY5N2M1MjJjNWI2NGNlOWE2NjMzYzc2NGNlLi4xNDY4ZGNmYWQwMDA5NjUzM2E3MmM4MTZl
ZmY4NDUzM2JhMTcyYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaApA
QCAtNjAsOSArNjAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdGVybWlu
YXRlKCk7CiAgICAgICAgIGJvb2wgdGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2Fn
ZVF1ZXVlLmtpbGxlZCgpOyB9CiAKLSAgICAgICAgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKLSAgICAgICAgdm9pZCBwb3N0VGFza0FuZFRl
cm1pbmF0ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKLSAgICAg
ICAgdm9pZCBwb3N0VGFza0Zvck1vZGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICAgICAgdm9pZCBwb3N0VGFzayhzdGQ6
OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOworICAgICAgICB2b2lk
IHBvc3RUYXNrQW5kVGVybWluYXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPik7CisgICAgICAgIHZvaWQgcG9zdFRhc2tGb3JNb2RlKHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAog
ICAgICAgICB1bnNpZ25lZCBsb25nIGNyZWF0ZVVuaXF1ZUlkKCkgeyByZXR1cm4gKyttX3VuaXF1
ZUlkOyB9CiAKQEAgLTcxLDE1ICs3MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGNsYXNzIFRhc2sgewogICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFRhc2s+IGNyZWF0ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgICAgICAgICAgVGFzayhz
dGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7CiAgICAgICAgICAgICB+VGFzaygpIHsgfQorCiAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICAgICAgICAgIHZvaWQg
cGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgVGFzayhQYXNzT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAg
ICAgIAotICAgICAgICAgICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IG1f
dGFzazsKKworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IG1fdGFzazsKICAgICAgICAgICAgIFN0cmluZyBtX21vZGU7CiAgICAgICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA2NzMzZDE0MTA4
MzJmNTQzNmJmNDdkMDgxZjk3YWYxZWZmZDNmNDk2Li5iODdjZjcyOGQwNjIwMWE0ODYxNjVhNWRm
ODA0YWMyMWNjYzEwYmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
CkBAIC0xOTAsMTIgKzE5MCwxMiBAQCB2b2lkIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkK
IAogY2xhc3MgV29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdv
cmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzaz4gY3JlYXRlKCkKKyAgICBXb3JrZXJUaHJlYWRT
aHV0ZG93bkZpbmlzaFRhc2soKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBX
b3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2soKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKmNvbnRleHQpCitwcml2YXRl
OgorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpj
b250ZXh0KSBPVkVSUklERQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFs
U2NvcGUqPihjb250ZXh0KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHdv
cmtlckdsb2JhbFNjb3BlLT5jbGVhclNjcmlwdCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9v
bCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0NsZWFudXBUYXNrKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAog
Y2xhc3MgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7CkBAIC0yNDMsNyArMjQzLDcgQEAgcHVibGljOgogCiAgICAgICAg
IC8vIFN0aWNrIGEgc2h1dGRvd24gY29tbWFuZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSwgc28g
dGhhdCB3ZSBkZWFsCiAgICAgICAgIC8vIHdpdGggYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHRoZSBk
YXRhYmFzZXMgcG9zdCBmaXJzdC4KLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnBvc3RUYXNr
KFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzazo6Y3JlYXRlKCkpOworICAgICAgICB3b3Jr
ZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTaHV0
ZG93bkZpbmlzaFRhc2s+KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBU
YXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV29y
a2VyVGhyZWFkOjpzdG9wKCkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1f
d29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpOwogI2VuZGlmCi0gICAgICAgIG1fcnVuTG9vcC5wb3N0
VGFza0FuZFRlcm1pbmF0ZShXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzazo6Y3JlYXRlKCkp
OworICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2tBbmRUZXJtaW5hdGUoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2s+KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKQEAgLTI3NSw5ICsyNzUsOSBAQCB2b2lk
IFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkK
IHsKICAgICBNdXRleExvY2tlciBsb2NrKHRocmVhZFNldE11dGV4KCkpOwogICAgIEhhc2hTZXQ8
V29ya2VyVGhyZWFkKj4mIHRocmVhZHMgPSB3b3JrZXJUaHJlYWRzKCk7Ci0gICAgSGFzaFNldDxX
b3JrZXJUaHJlYWQqPjo6aXRlcmF0b3IgZW5kID0gdGhyZWFkcy5lbmQoKTsKLSAgICBmb3IgKEhh
c2hTZXQ8V29ya2VyVGhyZWFkKj46Oml0ZXJhdG9yIGl0ID0gdGhyZWFkcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5ydW5Mb29wKCkucG9zdFRhc2soYWRvcHRQdHIo
bmV3IFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2spKTsKKworICAgIGZvciAoYXV0byBp
dCA9IHRocmVhZHMuYmVnaW4oKSwgZW5kID0gdGhyZWFkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICAoKml0KS0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8UmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5VGFzaz4oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>
<flag name="review"
          id="235998"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>