<?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>122392</bug_id>
          
          <creation_ts>2013-10-05 13:53:25 -0700</creation_ts>
          <short_desc>Clean up MessageQueue.h</short_desc>
          <delta_ts>2013-10-05 14:53:12 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936644</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-05 13:53:25 -0700</bug_when>
    <thetext>Clean up MessageQueue.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936646</commentid>
    <comment_count>1</comment_count>
      <attachid>213469</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-05 14:01:19 -0700</bug_when>
    <thetext>Created attachment 213469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936647</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-05 14:02:16 -0700</bug_when>
    <thetext>Attachment 213469 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Deque.h&apos;, u&apos;Source/WTF/wtf/MessageQueue.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/webaudio/AsyncAudioDecoder.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AsyncAudioDecoder.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTask.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.h&apos;, u&apos;Source/WebCore/dom/default/PlatformMessagePortChannel.cpp&apos;, u&apos;Source/WebCore/dom/default/PlatformMessagePortChannel.h&apos;, u&apos;Source/WebCore/fileapi/FileThread.cpp&apos;, u&apos;Source/WebCore/fileapi/FileThread.h&apos;, u&apos;Source/WebCore/fileapi/FileThreadTask.h&apos;, u&apos;Source/WebCore/storage/StorageThread.cpp&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.cpp&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.h&apos;]&quot; exit_code: 1
Source/WebCore/storage/StorageThread.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/storage/StorageThread.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WTF/wtf/Deque.h:91:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/MessageQueue.h:66:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/MessageQueue.h:69:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/MessageQueue.h:131:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 6 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936652</commentid>
    <comment_count>3</comment_count>
      <attachid>213471</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-05 14:37:37 -0700</bug_when>
    <thetext>Created attachment 213471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936653</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-05 14:39:52 -0700</bug_when>
    <thetext>Attachment 213471 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Deque.h&apos;, u&apos;Source/WTF/wtf/MessageQueue.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/webaudio/AsyncAudioDecoder.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AsyncAudioDecoder.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTask.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.h&apos;, u&apos;Source/WebCore/dom/default/PlatformMessagePortChannel.cpp&apos;, u&apos;Source/WebCore/dom/default/PlatformMessagePortChannel.h&apos;, u&apos;Source/WebCore/fileapi/FileThread.cpp&apos;, u&apos;Source/WebCore/fileapi/FileThread.h&apos;, u&apos;Source/WebCore/fileapi/FileThreadTask.h&apos;, u&apos;Source/WebCore/storage/StorageThread.cpp&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.cpp&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.h&apos;]&quot; exit_code: 1
Source/WebCore/storage/StorageThread.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/storage/StorageThread.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WTF/wtf/Deque.h:91:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/MessageQueue.h:66:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/MessageQueue.h:69:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/MessageQueue.h:131:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 6 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936658</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-05 14:53:12 -0700</bug_when>
    <thetext>Committed r156972: &lt;http://trac.webkit.org/changeset/156972&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213469</attachid>
            <date>2013-10-05 14:01:19 -0700</date>
            <delta_ts>2013-10-05 14:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122392-20131005140118.patch</filename>
            <type>text/plain</type>
            <size>40098</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkNTViOGYxNWNiNzgzYjI3MTFhNDFj
MThhOTY4OGYyYjMwY2VkM2UuLjg2OTc4OGQyNGI0MmNlZWFjZThiMWNjN2VkZjUwZDY1Mzg2ZWI1
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTMtMTAtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbiB1cCBNZXNzYWdlUXVldWUuaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBNZXNzYWdl
UXVldWUgdXNlIHN0ZDo6dW5pcXVlX3B0ciBhbmQgY2hhbmdlIGZpbmRJZiBhbmQgcmVtb3ZlSWYg
dG8gdGFrZSBjb25zdCByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL0RlcXVlLmg6CisgICAg
ICAgIENoYW5nZSBmaW5kSWYgdG8gdGFrZSBhbiBydmFsdWUgcmVmZXJlbmNlLgorCisgICAgICAg
ICogd3RmL01lc3NhZ2VRdWV1ZS5oOgorICAgICAgICAoV1RGOjo6OmFwcGVuZCk6CisgICAgICAg
IChXVEY6Ojo6YXBwZW5kQW5kS2lsbCk6CisgICAgICAgIChXVEY6Ojo6YXBwZW5kQW5kQ2hlY2tF
bXB0eSk6CisgICAgICAgIChXVEY6Ojo6cHJlcGVuZCk6CisgICAgICAgIChXVEY6Ojo6cmVtb3Zl
SWYpOgorCisyMDEzLTEwLTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKICAgICAgICAgVHJ5IHRvICNkZWZpbmUgZmluYWwgdG8gc2VhbGVkIHdoZW4gYnVpbGRpbmcg
d2l0aCBNU1ZDCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjIzODYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJjMjRjYzNjNjcwYWRhOWUwMDIwYjZiZWYwM2I4MTk0
NTMyNTQyZmUuLmRiZGIyODMxMTNhYzNmM2EzNjFkMWJlOTEyZTdjMGUxMTAyNGVlNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMy0xMC0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIE1lc3NhZ2VRdWV1ZS5oCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzOTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZm9yIGNo
YW5nZXMgdG8gTWVzc2FnZVF1ZXVlLCBtb3N0bHkgY2hhbmdpbmcgY3JlYXRlIGZ1bmN0aW9ucyB0
byByZXR1cm4gc3RkOjp1bmlxdWVfcHRyLgorICAgICAgICBJIGludGVudGlvbmFsbHkgYXZvaWRl
ZCB1c2luZyBzdGQ6Om1ha2VfdW5pcXVlIGluIGEgY291cGxlIG9mIHBsYWNlcyBiZWNhdXNlIEkg
ZGlkbid0IHdhbnQgdG8gbWFrZSBuZXN0ZWQgY2xhc3NlcworICAgICAgICBwdWJsaWMsIGFuZCBJ
IGJlbGlldmUgdGhhdCB3ZSBjYW4gY2hhbmdlIHNvbWUgb2YgdGhpcyBjb2RlIHRvIHVzZSBzdGQ6
OmZ1bmN0aW9uLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OnJ1bkxvb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
Ojp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6Om9wZW5BbmRWZXJp
ZnlWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6c2NoZWR1bGVU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnNjaGVkdWxl
VHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGFzay5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZU9wZW5U
YXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFz
ZUNsb3NlVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6
RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUJhY2tlbmQ6OkRhdGFiYXNlVGFibGVOYW1lc1Rhc2s6OmNyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnNjaGVkdWxlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRo
cmVhZDo6c2NoZWR1bGVJbW1lZGlhdGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNhbWVEYXRh
YmFzZVByZWRpY2F0ZTo6b3BlcmF0b3IoKSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWw6OnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKToKKyAgICAgICAgKiBkb20vZGVmYXVs
dC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0UXVldWU6OnRyeUdldE1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0
UXVldWU6OmFwcGVuZEFuZENoZWNrRW1wdHkpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlVGhyZWFkOjpwb3N0VGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpTYW1lSW5zdGFuY2VQcmVkaWNhdGU6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVRocmVhZDo6cnVuTG9vcCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlVGhy
ZWFkLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRmlsZVRocmVhZFRhc2spOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVQcmVkaWNhdGU6Om9w
ZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5oOgorCiAyMDEzLTEwLTA0ICBEZWFuIEphY2tzb24gIDxkaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIHByb2dyYW0gc2hvdWxkIG5vdCBiZSBhYmxl
IHRvIGxpbmsgaWYgYSBiYWQgc2hhZGVyIGlzIGF0dGFjaGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9EZXF1ZS5oIGIvU291cmNlL1dURi93dGYvRGVxdWUuaAppbmRleCBhNWZkYjVkZjBh
YWM3NGNiNjhjMTA5NWE0ZWNkYzk5YTMzMDUyM2UyLi5iNDc3MTFmNzZmNWQ5MzJkMTFkZmJhYTA1
MTIwYzhjYWI2MWFiY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EZXF1ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0RlcXVlLmgKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIHZvaWQgY2xlYXIoKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVk
aWNhdGU+Ci0gICAgICAgIGl0ZXJhdG9yIGZpbmRJZihQcmVkaWNhdGUmKTsKKyAgICAgICAgaXRl
cmF0b3IgZmluZElmKFByZWRpY2F0ZSYmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT47CkBAIC0zNTMsNyAr
MzUzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgotICAg
IGlubGluZSBhdXRvIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6ZmluZElmKFByZWRpY2F0ZSYg
cHJlZGljYXRlKSAtPiBpdGVyYXRvcgorICAgIGlubGluZSBhdXRvIERlcXVlPFQsIGlubGluZUNh
cGFjaXR5Pjo6ZmluZElmKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSkgLT4gaXRlcmF0b3IKICAgICB7
CiAgICAgICAgIGl0ZXJhdG9yIGVuZF9pdGVyYXRvciA9IGVuZCgpOwogICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5kX2l0ZXJhdG9yOyArK2l0KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL01lc3Nh
Z2VRdWV1ZS5oCmluZGV4IDYzYTU2MTUyMjE3NDk0NTJhYzZhMzUzMGY4NzFjNjRjZDk0NmRhYzku
LjRhN2NhN2QwNWRjMWJkMjBkZjM4MDViNTkyOTEyODRlNjI4MWVlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lc3NhZ2VR
dWV1ZS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gVGhlIHF1
ZXVlIHRha2VzIG93bmVyc2hpcCBvZiBtZXNzYWdlcyBhbmQgdHJhbnNmZXIgaXQgdG8gdGhlIG5l
dyBvd25lcgogICAgIC8vIHdoZW4gbWVzc2FnZXMgYXJlIGZldGNoZWQgZnJvbSB0aGUgcXVldWUu
Ci0gICAgLy8gRXNzZW50aWFsbHksIE1lc3NhZ2VRdWV1ZSBhY3RzIGFzIGEgcXVldWUgb2YgT3du
UHRyPERhdGFUeXBlPi4KKyAgICAvLyBFc3NlbnRpYWxseSwgTWVzc2FnZVF1ZXVlIGFjdHMgYXMg
YSBxdWV1ZSBvZiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+LgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERhdGFUeXBlPgogICAgIGNsYXNzIE1lc3NhZ2VRdWV1ZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE1lc3NhZ2VRdWV1ZSk7CkBAIC01NCwxOSArNTQsMTkgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIE1lc3NhZ2VRdWV1ZSgpIDogbV9raWxsZWQoZmFsc2UpIHsgfQogICAg
ICAgICB+TWVzc2FnZVF1ZXVlKCk7CiAKLSAgICAgICAgdm9pZCBhcHBlbmQoT3duUHRyPERhdGFU
eXBlPik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQW5kS2lsbChPd25QdHI8RGF0YVR5cGU+KTsKLSAg
ICAgICAgYm9vbCBhcHBlbmRBbmRDaGVja0VtcHR5KE93blB0cjxEYXRhVHlwZT4pOwotICAgICAg
ICB2b2lkIHByZXBlbmQoT3duUHRyPERhdGFUeXBlPik7CisgICAgICAgIHZvaWQgYXBwZW5kKHN0
ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4pOworICAgICAgICB2b2lkIGFwcGVuZEFuZEtpbGwoc3Rk
Ojp1bmlxdWVfcHRyPERhdGFUeXBlPik7CisgICAgICAgIGJvb2wgYXBwZW5kQW5kQ2hlY2tFbXB0
eShzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+KTsKKyAgICAgICAgdm9pZCBwcmVwZW5kKHN0ZDo6
dW5pcXVlX3B0cjxEYXRhVHlwZT4pOwogCi0gICAgICAgIE93blB0cjxEYXRhVHlwZT4gd2FpdEZv
ck1lc3NhZ2UoKTsKLSAgICAgICAgT3duUHRyPERhdGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7Ci0g
ICAgICAgIE93blB0cjxEYXRhVHlwZT4gdHJ5R2V0TWVzc2FnZUlnbm9yaW5nS2lsbGVkKCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gd2FpdEZvck1lc3NhZ2UoKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gdHJ5R2V0TWVzc2FnZUlnbm9yaW5nS2lsbGVkKCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KLSAgICAgICAgT3duUHRyPERhdGFU
eXBlPiB3YWl0Rm9yTWVzc2FnZUZpbHRlcmVkV2l0aFRpbWVvdXQoTWVzc2FnZVF1ZXVlV2FpdFJl
c3VsdCYsIFByZWRpY2F0ZSYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGF0YVR5cGU+IHdhaXRGb3JNZXNzYWdlRmlsdGVyZWRXaXRoVGltZW91dChNZXNz
YWdlUXVldWVXYWl0UmVzdWx0JiwgUHJlZGljYXRlJiYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOwog
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KLSAgICAgICAgdm9pZCByZW1v
dmVJZihQcmVkaWNhdGUmKTsKKyAgICAgICAgdm9pZCByZW1vdmVJZihQcmVkaWNhdGUmJik7CiAK
ICAgICAgICAgdm9pZCBraWxsKCk7CiAgICAgICAgIGJvb2wga2lsbGVkKCkgY29uc3Q7CkBAIC03
NywxMSArNzcsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIGRvdWJsZSBpbmZp
bml0ZVRpbWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgYm9vbCBhbHdheXNUcnVlUHJlZGljYXRl
KGNvbnN0IE93blB0cjxEYXRhVHlwZT4mKSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICAgICAgbXV0
YWJsZSBNdXRleCBtX211dGV4OwogICAgICAgICBUaHJlYWRDb25kaXRpb24gbV9jb25kaXRpb247
Ci0gICAgICAgIERlcXVlPE93blB0cjxEYXRhVHlwZT4+IG1fcXVldWU7CisgICAgICAgIERlcXVl
PHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4+IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9raWxs
ZWQ7CiAgICAgfTsKIApAQCAtOTEsNyArODksNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KLSAgICBpbmxpbmUgdm9pZCBNZXNzYWdl
UXVldWU8RGF0YVR5cGU+OjphcHBlbmQoT3duUHRyPERhdGFUeXBlPiBtZXNzYWdlKQorICAgIGlu
bGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8
RGF0YVR5cGU+IG1lc3NhZ2UpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0
ZXgpOwogICAgICAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1vdmUobWVzc2FnZSkpOwpAQCAtOTks
NyArOTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEYXRhVHlwZT4KLSAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjphcHBl
bmRBbmRLaWxsKE93blB0cjxEYXRhVHlwZT4gbWVzc2FnZSkKKyAgICBpbmxpbmUgdm9pZCBNZXNz
YWdlUXVldWU8RGF0YVR5cGU+OjphcHBlbmRBbmRLaWxsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlw
ZT4gbWVzc2FnZSkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAg
ICAgICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bW92ZShtZXNzYWdlKSk7CkBAIC0xMDksNyArMTA3
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXVl
IHdhcyBlbXB0eSBiZWZvcmUgdGhlIGl0ZW0gd2FzIGFkZGVkLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERhdGFUeXBlPgotICAgIGlubGluZSBib29sIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFw
cGVuZEFuZENoZWNrRW1wdHkoT3duUHRyPERhdGFUeXBlPiBtZXNzYWdlKQorICAgIGlubGluZSBi
b29sIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZEFuZENoZWNrRW1wdHkoc3RkOjp1bmlx
dWVfcHRyPERhdGFUeXBlPiBtZXNzYWdlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
ayhtX211dGV4KTsKICAgICAgICAgYm9vbCB3YXNFbXB0eSA9IG1fcXVldWUuaXNFbXB0eSgpOwpA
QCAtMTE5LDcgKzExNyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERhdGFUeXBlPgotICAgIGlubGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlw
ZT46OnByZXBlbmQoT3duUHRyPERhdGFUeXBlPiBtZXNzYWdlKQorICAgIGlubGluZSB2b2lkIE1l
c3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnByZXBlbmQoc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiBt
ZXNzYWdlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgbV9xdWV1ZS5wcmVwZW5kKHN0ZDo6bW92ZShtZXNzYWdlKSk7CkBAIC0xMjcsMjQgKzEyNSwz
MiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRh
VHlwZT4KLSAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojp3YWl0Rm9yTWVz
c2FnZSgpIC0+IE93blB0cjxEYXRhVHlwZT4KKyAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8
RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2FnZSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4K
ICAgICB7CiAgICAgICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgZXhpdFJlYXNvbjsgCi0gICAg
ICAgIE93blB0cjxEYXRhVHlwZT4gcmVzdWx0ID0gd2FpdEZvck1lc3NhZ2VGaWx0ZXJlZFdpdGhU
aW1lb3V0KGV4aXRSZWFzb24sIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFsd2F5c1RydWVQcmVk
aWNhdGUsIGluZmluaXRlVGltZSgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBl
PiByZXN1bHQgPSB3YWl0Rm9yTWVzc2FnZUZpbHRlcmVkV2l0aFRpbWVvdXQoZXhpdFJlYXNvbiwg
W10oY29uc3QgRGF0YVR5cGUmKSB7IHJldHVybiB0cnVlOyB9LCBpbmZpbml0ZVRpbWUoKSk7CiAg
ICAgICAgIEFTU0VSVChleGl0UmVhc29uID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgfHwgZXhp
dFJlYXNvbiA9PSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KLSAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8
RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2FnZUZpbHRlcmVkV2l0aFRpbWVvdXQoTWVzc2FnZVF1ZXVl
V2FpdFJlc3VsdCYgcmVzdWx0LCBQcmVkaWNhdGUmIHByZWRpY2F0ZSwgZG91YmxlIGFic29sdXRl
VGltZSkgLT4gT3duUHRyPERhdGFUeXBlPgorICAgIGlubGluZSBhdXRvIE1lc3NhZ2VRdWV1ZTxE
YXRhVHlwZT46OndhaXRGb3JNZXNzYWdlRmlsdGVyZWRXaXRoVGltZW91dChNZXNzYWdlUXVldWVX
YWl0UmVzdWx0JiByZXN1bHQsIFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgZG91YmxlIGFic29sdXRl
VGltZSkgLT4gc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPgogICAgIHsKICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgYm9vbCB0aW1lZE91dCA9IGZhbHNlOwogCiAg
ICAgICAgIGF1dG8gZm91bmQgPSBtX3F1ZXVlLmVuZCgpOwotICAgICAgICB3aGlsZSAoIW1fa2ls
bGVkICYmICF0aW1lZE91dCAmJiAoZm91bmQgPSBtX3F1ZXVlLmZpbmRJZihwcmVkaWNhdGUpKSA9
PSBtX3F1ZXVlLmVuZCgpKQorICAgICAgICB3aGlsZSAoIW1fa2lsbGVkICYmICF0aW1lZE91dCkg
eworICAgICAgICAgICAgZm91bmQgPSBtX3F1ZXVlLmZpbmRJZihbJnByZWRpY2F0ZV0oY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiYgcHRyKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZWRpY2F0ZSgqcHRyKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgaWYgKGZvdW5kICE9IG1fcXVldWUuZW5kKCkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIHRpbWVkT3V0ID0gIW1fY29uZGl0aW9uLnRp
bWVkV2FpdChtX211dGV4LCBhYnNvbHV0ZVRpbWUpOworICAgICAgICB9CiAKICAgICAgICAgQVNT
RVJUKCF0aW1lZE91dCB8fCBhYnNvbHV0ZVRpbWUgIT0gaW5maW5pdGVUaW1lKCkpOwogCkBAIC0x
NTksMTQgKzE2NSwxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogCiAgICAgICAgIEFT
U0VSVChmb3VuZCAhPSBtX3F1ZXVlLmVuZCgpKTsKLSAgICAgICAgT3duUHRyPERhdGFUeXBlPiBt
ZXNzYWdlID0gc3RkOjptb3ZlKCpmb3VuZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRh
VHlwZT4gbWVzc2FnZSA9IHN0ZDo6bW92ZSgqZm91bmQpOwogICAgICAgICBtX3F1ZXVlLnJlbW92
ZShmb3VuZCk7CiAgICAgICAgIHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsK
ICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGF0YVR5cGU+Ci0gICAgaW5saW5lIGF1dG8gTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6dHJ5R2V0
TWVzc2FnZSgpIC0+IE93blB0cjxEYXRhVHlwZT4KKyAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVl
dWU8RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlKCkgLT4gc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBl
PgogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYg
KG1fa2lsbGVkKQpAQCAtMTc4LDcgKzE4NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgotICAgIGlubGluZSBhdXRvIE1lc3NhZ2VR
dWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2VJZ25vcmluZ0tpbGxlZCgpIC0+IE93blB0cjxE
YXRhVHlwZT4KKyAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRN
ZXNzYWdlSWdub3JpbmdLaWxsZWQoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+CiAgICAg
ewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBpZiAobV9xdWV1
ZS5pc0VtcHR5KCkpCkBAIC0xODksMTQgKzE5NSwxOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRp
Y2F0ZT4KLSAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjpyZW1vdmVJZihQ
cmVkaWNhdGUmIHByZWRpY2F0ZSkKKyAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5
cGU+OjpyZW1vdmVJZihQcmVkaWNhdGUmJiBwcmVkaWNhdGUpCiAgICAgewogICAgICAgICBNdXRl
eExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgICAgICBhdXRvIGZvdW5kID0gbV9xdWV1ZS5lbmQo
KTsKLSAgICAgICAgLy8gRklYTUU6IEkgdGhpbmsgdGhlIHByZWRpY2F0ZSBoZXJlIHNob3VsZCBy
ZWFsbHkgdGFrZSBhIGNvbnN0IERhdGFUeXBlJgotICAgICAgICAvLyBpbnN0ZWFkIG9mIGEgY29u
c3QgT3duUHRyPERhdGFUeXBlPiYuCi0gICAgICAgIHdoaWxlICgoZm91bmQgPSBtX3F1ZXVlLmZp
bmRJZihwcmVkaWNhdGUpKSAhPSBtX3F1ZXVlLmVuZCgpKSB7Ci0gICAgICAgICAgICBPd25QdHI8
RGF0YVR5cGU+IG1lc3NhZ2UgPSBzdGQ6Om1vdmUoKmZvdW5kKTsKKyAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgIGF1dG8gZm91bmQgPSBtX3F1ZXVlLmZpbmRJZihbJnByZWRpY2F0
ZV0oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiYgcHRyKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZWRpY2F0ZSgqcHRyKTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpZiAoZm91bmQgPT0gbV9xdWV1ZS5lbmQo
KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgbV9xdWV1ZS5yZW1vdmUo
Zm91bmQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCAwOTM4M2VmNWY0NzlmMzU0
MDdmZjExMzAwODBkM2UxNjI0NmJiZTI0Li42MzViMmI4ZTYwMzY5NjdiMWExODhiNWRjOGE2Mzhm
YmNkYTU4NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNjAsOCArNjAsOCBAQCB2b2lkIEFzeW5jQXVkaW9E
ZWNvZGVyOjpkZWNvZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVS
YXRlLCBQYQogICAgIGlmICghYXVkaW9EYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25Q
dHI8RGVjb2RpbmdUYXNrPiBkZWNvZGluZ1Rhc2sgPSBEZWNvZGluZ1Rhc2s6OmNyZWF0ZShhdWRp
b0RhdGEsIHNhbXBsZVJhdGUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAg
bV9xdWV1ZS5hcHBlbmQoZGVjb2RpbmdUYXNrLnJlbGVhc2UoKSk7IC8vIG5vdGUgdGhhdCBvd25l
cnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVlLgorICAg
IGF1dG8gZGVjb2RpbmdUYXNrID0gRGVjb2RpbmdUYXNrOjpjcmVhdGUoYXVkaW9EYXRhLCBzYW1w
bGVSYXRlLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIG1fcXVldWUuYXBw
ZW5kKHN0ZDo6bW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0
aGUgdGFzayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKIC8vIEFzeW5j
aHJvbm91c2x5IGRlY29kZSBpbiB0aGlzIHRocmVhZC4KQEAgLTgyLDE2ICs4MiwxNiBAQCB2b2lk
IEFzeW5jQXVkaW9EZWNvZGVyOjpydW5Mb29wKCkKICAgICB9CiAKICAgICAvLyBLZWVwIHJ1bm5p
bmcgZGVjb2RpbmcgdGFza3MgdW50aWwgd2UncmUga2lsbGVkLgotICAgIHdoaWxlIChPd25QdHI8
RGVjb2RpbmdUYXNrPiBkZWNvZGluZ1Rhc2sgPSBtX3F1ZXVlLndhaXRGb3JNZXNzYWdlKCkpIHsK
KyAgICB3aGlsZSAoYXV0byBkZWNvZGluZ1Rhc2sgPSBtX3F1ZXVlLndhaXRGb3JNZXNzYWdlKCkp
IHsKICAgICAgICAgLy8gTGV0IHRoZSB0YXNrIHRha2UgY2FyZSBvZiBpdHMgb3duIG93bmVyc2hp
cC4KICAgICAgICAgLy8gU2VlIERlY29kaW5nVGFzazo6bm90aWZ5Q29tcGxldGUoKSBmb3IgY2xl
YW51cC4KLSAgICAgICAgZGVjb2RpbmdUYXNrLmxlYWtQdHIoKS0+ZGVjb2RlKCk7CisgICAgICAg
IGRlY29kaW5nVGFzay5yZWxlYXNlKCktPmRlY29kZSgpOwogICAgIH0KIH0KIAotUGFzc093blB0
cjxBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrPiBBc3luY0F1ZGlvRGVjb2Rlcjo6RGVj
b2RpbmdUYXNrOjpjcmVhdGUoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0
ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3N0ZDo6dW5pcXVlX3B0
cjxBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrPiBBc3luY0F1ZGlvRGVjb2Rlcjo6RGVj
b2RpbmdUYXNrOjpjcmVhdGUoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0
ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IERlY29kaW5nVGFzayhhdWRpb0RhdGEsIHNhbXBsZVJhdGUsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2RpbmdUYXNrPihuZXcgRGVjb2RpbmdUYXNrKGF1ZGlvRGF0YSwgc2FtcGxlUmF0ZSwgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9CiAKIEFzeW5jQXVkaW9EZWNvZGVyOjpEZWNv
ZGluZ1Rhc2s6OkRlY29kaW5nVGFzayhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1w
bGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4
IDljZmE4OGU1ZWMwY2IzZTZmNzA2YmRhMjY0ZjBlOTI3NWQzMmZiMmIuLjk3MTM2ODc0M2E2ZDU4
ZTA4MTIyNGFhOWNjZGVhYzc3MGI2MDc0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJp
dmF0ZToKICAgICBjbGFzcyBEZWNvZGluZ1Rhc2sgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShEZWNvZGluZ1Rhc2spOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8RGVjb2RpbmdUYXNrPiBjcmVhdGUoSlNDOjpBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9h
dCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAg
ICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShKU0M6OkFy
cmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9C
dWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spOwogCiAgICAgICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCBjNTE5NjNlZjU2YjA2ODI2NWVmZGE5NDE2YjYwZjAzMDVlN2Q0ZGZkLi44NjljODVmMGQ3
MGIzYzk2ZWE2YTgwNzU1NTlmZGMyMzRmYmVlYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQg
RGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBPd25QdHI8RGF0YWJhc2VDbG9zZVRhc2s+IHRhc2sgPSBEYXRhYmFzZUNsb3NlVGFz
azo6Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6ZXIpOwotICAgIGRhdGFiYXNlQ29udGV4dCgpLT5k
YXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwor
ICAgIGF1dG8gdGFzayA9IERhdGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUodGhpcywgJnN5bmNocm9u
aXplcik7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxl
SW1tZWRpYXRlVGFzayhzdGQ6Om1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9y
VGFza0NvbXBsZXRpb24oKTsKIH0KIApAQCAtMjY3LDggKzI2Nyw4IEBAIFZlY3RvcjxTdHJpbmc+
IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKICAgICBpZiAoIWRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50ZXJt
aW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAotICAgIE93blB0cjxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPiB0YXNrID0gRGF0YWJhc2VUYWJs
ZU5hbWVzVGFzazo6Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6ZXIsIHJlc3VsdCk7Ci0gICAgZGF0
YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0
YXNrLnJlbGVhc2UoKSk7CisgICAgYXV0byB0YXNrID0gRGF0YWJhc2VUYWJsZU5hbWVzVGFzazo6
Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CisgICAgZGF0YWJhc2VDb250ZXh0
KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayhzdGQ6Om1vdmUodGFz
aykpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJl
dHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZC5jcHAKaW5kZXggYmIzOTVmZTM2NDM5ZTg3NDU4NWRhYzI0MmQy
Y2E2M2QxYjFjNjI1Mi4uNDk1ZTg2YTQ4N2IyODhmZGM2N2QwNmMyNzNjMDFjYzZjYWFkYzE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kLmNwcApAQCAtNTYsOCArNTYsOCBAQCBib29sIERhdGFiYXNlQmFja2VuZDo6b3Bl
bkFuZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhcwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBP
d25QdHI8RGF0YWJhc2VPcGVuVGFzaz4gdGFzayA9IERhdGFiYXNlT3BlblRhc2s6OmNyZWF0ZSh0
aGlzLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgJnN5bmNocm9uaXplciwgZXJyb3IsIGVycm9y
TWVzc2FnZSwgc3VjY2Vzcyk7Ci0gICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFk
KCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgYXV0byB0YXNr
ID0gRGF0YWJhc2VPcGVuVGFzazo6Y3JlYXRlKHRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LCAmc3luY2hyb25pemVyLCBlcnJvciwgZXJyb3JNZXNzYWdlLCBzdWNjZXNzKTsKKyAgICBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0
ZDo6bW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigp
OwogCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CkBAIC0xNDQsMTAgKzE0NCwxMCBAQCB2b2lkIERhdGFi
YXNlQmFja2VuZDo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgICAgIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwogCiAgICAgaWYgKHRyYW5zYWN0aW9uICYm
IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKSB7Ci0gICAgICAgIE93blB0cjxE
YXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpj
cmVhdGUodHJhbnNhY3Rpb24pOworICAgICAgICBhdXRvIHRhc2sgPSBEYXRhYmFzZVRyYW5zYWN0
aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJT
Y2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlvbiAlcFxu
IiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNl
VGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIGRhdGFiYXNl
Q29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2soc3RkOjptb3ZlKHRhc2sp
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsK
IH0KQEAgLTE1Nyw5ICsxNTcsOSBAQCB2b2lkIERhdGFiYXNlQmFja2VuZDo6c2NoZWR1bGVUcmFu
c2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbgogICAgIGlmICgh
ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIE93blB0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9yYWdlQVBJ
LCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5zYWN0
aW9uIHN0ZXBcbiIsIHRhc2suZ2V0KCkpOwotICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFz
ZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2soc3RkOjptb3ZlKHRhc2spKTsK
IH0KIAogU1FMVHJhbnNhY3Rpb25DbGllbnQqIERhdGFiYXNlQmFja2VuZDo6dHJhbnNhY3Rpb25D
bGllbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUYXNrLmgKaW5kZXggZGRiZTczZGU0ZTFkMjkxNzhjN2FhZGRlNDJiZmZjMDY2ZjQ5
MWJhOS4uYjNhNTUwODY3YzA2OWZlNzdiYmUxMGZkOGU1NmM5NGJlNmE0YmI3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCkBAIC0x
MDAsOSArMTAwLDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFz
ZU9wZW5UYXNrIDogcHVibGljIERhdGFiYXNlVGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8RGF0YWJhc2VPcGVuVGFzaz4gY3JlYXRlKERhdGFiYXNlQmFja2VuZCogZGIsIGJv
b2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3lu
Y2hyb25pemVyLCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGJv
b2wmIHN1Y2Nlc3MpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZU9wZW5UYXNr
PiBjcmVhdGUoRGF0YWJhc2VCYWNrZW5kKiBkYiwgYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIsIERhdGFiYXNlRXJyb3Im
IGVycm9yLCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgYm9vbCYgc3VjY2VzcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGF0YWJhc2VPcGVuVGFzayhkYiwgc2V0VmVyc2lvbklu
TmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgZXJyb3IsIGVycm9yTWVzc2FnZSwgc3VjY2Vzcykp
OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlT3BlblRhc2s+KG5ldyBE
YXRhYmFzZU9wZW5UYXNrKGRiLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVy
LCBlcnJvciwgZXJyb3JNZXNzYWdlLCBzdWNjZXNzKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MTIxLDkgKzEyMSw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIERhdGFiYXNlQmFja2VuZDo6RGF0YWJh
c2VDbG9zZVRhc2sgOiBwdWJsaWMgRGF0YWJhc2VUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxEYXRhYmFzZUNsb3NlVGFzaz4gY3JlYXRlKERhdGFiYXNlQmFja2VuZCogZGIs
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RGF0YWJhc2VDbG9zZVRhc2s+IGNyZWF0ZShEYXRhYmFzZUJhY2tlbmQqIGRi
LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgRGF0YWJhc2VDbG9zZVRhc2soZGIsIHN5bmNocm9uaXplcikp
OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlQ2xvc2VUYXNrPihuZXcg
RGF0YWJhc2VDbG9zZVRhc2soZGIsIHN5bmNocm9uaXplcikpOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTE0MCw5ICsxNDAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGF0YWJhc2VUcmFuc2Fj
dGlvblRhc2soKTsKIAogICAgIC8vIFRyYW5zYWN0aW9uIHRhc2sgaXMgbmV2ZXIgc3luY2hyb25v
dXMsIHNvIG5vICdzeW5jaHJvbml6ZXInIHBhcmFtZXRlci4KLSAgICBzdGF0aWMgUGFzc093blB0
cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25CYWNrZW5kPiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERhdGFi
YXNlVHJhbnNhY3Rpb25UYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ+IHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRh
YmFzZVRyYW5zYWN0aW9uVGFzayh0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihuZXcgRGF0YWJhc2VUcmFuc2FjdGlv
blRhc2sodHJhbnNhY3Rpb24pKTsKICAgICB9CiAKICAgICBTUUxUcmFuc2FjdGlvbkJhY2tlbmQq
IHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsgfQpAQCAt
MTYxLDkgKzE2MSw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIERhdGFiYXNlQmFja2VuZDo6RGF0YWJh
c2VUYWJsZU5hbWVzVGFzayA6IHB1YmxpYyBEYXRhYmFzZVRhc2sgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+IGNyZWF0ZShEYXRhYmFzZUJh
Y2tlbmQqIGRiLCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplciwgVmVjdG9y
PFN0cmluZz4mIG5hbWVzKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYWJs
ZU5hbWVzVGFzaz4gY3JlYXRlKERhdGFiYXNlQmFja2VuZCogZGIsIERhdGFiYXNlVGFza1N5bmNo
cm9uaXplciogc3luY2hyb25pemVyLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERhdGFiYXNlVGFibGVOYW1lc1Rhc2soZGIsIHN5bmNo
cm9uaXplciwgbmFtZXMpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFz
ZVRhYmxlTmFtZXNUYXNrPihuZXcgRGF0YWJhc2VUYWJsZU5hbWVzVGFzayhkYiwgc3luY2hyb25p
emVyLCBuYW1lcykpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggNjI3YTlkZDVk
Y2NjMzVmZGQzYWNhNWYwYjE0NTBlZmI4ZDVmNWVhYi4uZTBkNDc5NmVmM2U2ZTZkNDNiYWEyN2U5
MTQ5YWU1Zjk3MzI4ZTk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIERh
dGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAi
U3RhcnRlZCBEYXRhYmFzZVRocmVhZCAlcCIsIHRoaXMpOwogICAgIH0KIAotICAgIHdoaWxlIChP
d25QdHI8RGF0YWJhc2VUYXNrPiB0YXNrID0gbV9xdWV1ZS53YWl0Rm9yTWVzc2FnZSgpKSB7Cisg
ICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fcXVldWUud2FpdEZvck1lc3NhZ2UoKSkgewogICAgICAg
ICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKIAogICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwpA
QCAtMTU2LDIyICsxNTYsMjIgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VD
bG9zZWQoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKICAgICBtX29wZW5EYXRhYmFzZVNldC5y
ZW1vdmUoZGF0YWJhc2UpOwogfQogCi12b2lkIERhdGFiYXNlVGhyZWFkOjpzY2hlZHVsZVRhc2so
UGFzc093blB0cjxEYXRhYmFzZVRhc2s+IHRhc2spCit2b2lkIERhdGFiYXNlVGhyZWFkOjpzY2hl
ZHVsZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4gdGFzaykKIHsKICAgICBBU1NF
UlQoIXRhc2stPmhhc1N5bmNocm9uaXplcigpIHx8IHRhc2stPmhhc0NoZWNrZWRGb3JUZXJtaW5h
dGlvbigpKTsKLSAgICBtX3F1ZXVlLmFwcGVuZCh0YXNrKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChz
dGQ6Om1vdmUodGFzaykpOwogfQogCi12b2lkIERhdGFiYXNlVGhyZWFkOjpzY2hlZHVsZUltbWVk
aWF0ZVRhc2soUGFzc093blB0cjxEYXRhYmFzZVRhc2s+IHRhc2spCit2b2lkIERhdGFiYXNlVGhy
ZWFkOjpzY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4g
dGFzaykKIHsKICAgICBBU1NFUlQoIXRhc2stPmhhc1N5bmNocm9uaXplcigpIHx8IHRhc2stPmhh
c0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpKTsKLSAgICBtX3F1ZXVlLnByZXBlbmQodGFzayk7Cisg
ICAgbV9xdWV1ZS5wcmVwZW5kKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAKIGNsYXNzIFNhbWVEYXRh
YmFzZVByZWRpY2F0ZSB7CiBwdWJsaWM6CiAgICAgU2FtZURhdGFiYXNlUHJlZGljYXRlKGNvbnN0
IERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpIDogbV9kYXRhYmFzZShkYXRhYmFzZSkgeyB9Ci0g
ICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IE93blB0cjxEYXRhYmFzZVRhc2s+JiB0YXNrKSBjb25z
dCB7IHJldHVybiB0YXNrLT5kYXRhYmFzZSgpID09IG1fZGF0YWJhc2U7IH0KKyAgICBib29sIG9w
ZXJhdG9yKCkoY29uc3QgRGF0YWJhc2VUYXNrJiB0YXNrKSBjb25zdCB7IHJldHVybiB0YXNrLmRh
dGFiYXNlKCkgPT0gbV9kYXRhYmFzZTsgfQogcHJpdmF0ZToKICAgICBjb25zdCBEYXRhYmFzZUJh
Y2tlbmQqIG1fZGF0YWJhc2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IDMwNWQyYWVmNjgwNmE4MjBmNTA0MTQz
YTBkNWFjY2JkNWZlODFkNTQuLmI1NzgyNzhhOWRlNjE1MThjMWU5OTdlNTZkMWUxZDgwZGQzZmUx
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFRl
cm1pbmF0aW9uKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xlYW51cFN5bmMpOwogICAgIGJv
b2wgdGVybWluYXRpb25SZXF1ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiB0YXNrU3lu
Y2hyb25pemVyID0gMCkgY29uc3Q7CiAKLSAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRy
PERhdGFiYXNlVGFzaz4pOwotICAgIHZvaWQgc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFBhc3NPd25Q
dHI8RGF0YWJhc2VUYXNrPik7IC8vIFRoaXMganVzdCBhZGRzIHRoZSB0YXNrIHRvIHRoZSBmcm9u
dCBvZiB0aGUgcXVldWUgLSB0aGUgY2FsbGVyIG5lZWRzIHRvIGJlIGV4dHJlbWVseSBjYXJlZnVs
IG5vdCB0byBjcmVhdGUgZGVhZGxvY2tzIHdoZW4gd2FpdGluZyBmb3IgY29tcGxldGlvbi4KKyAg
ICB2b2lkIHNjaGVkdWxlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPik7CisgICAg
dm9pZCBzY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4p
OyAvLyBUaGlzIGp1c3QgYWRkcyB0aGUgdGFzayB0byB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlIC0g
dGhlIGNhbGxlciBuZWVkcyB0byBiZSBleHRyZW1lbHkgY2FyZWZ1bCBub3QgdG8gY3JlYXRlIGRl
YWRsb2NrcyB3aGVuIHdhaXRpbmcgZm9yIGNvbXBsZXRpb24uCiAgICAgdm9pZCB1bnNjaGVkdWxl
RGF0YWJhc2VUYXNrcyhEYXRhYmFzZUJhY2tlbmQqKTsKIAogICAgIHZvaWQgcmVjb3JkRGF0YWJh
c2VPcGVuKERhdGFiYXNlQmFja2VuZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IGZhMGVlNDJi
ZTU3MDMwNDI2ZDhlODJmZmE3MGI0NGI0NWY2Y2MwN2UuLjkwMmRhMTgzNDAwYWE5YzI2NmIwZTI5
ODQ4Y2EzNTYwNTI0OGZhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
ZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTM3LDkgKzM3LDkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpFdmVudERhdGE+IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6
OmNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4gUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cykKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGF0YShtZXNzYWdlLCBjaGFubmVs
cykpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnREYXRhPihuZXcgRXZlbnREYXRh
KG1lc3NhZ2UsIGNoYW5uZWxzKSk7CiB9CiAKIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpF
dmVudERhdGE6OkV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCkBAIC0x
MDQsNyArMTA0LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1v
dGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG0KIGJvb2wgTWVzc2FnZVBvcnRD
aGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYgbWVzc2FnZSwgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYgY2hhbm5lbHMp
CiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOwotICAgIE93blB0
cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiByZXN1bHQgPSBtX2NoYW5u
ZWwtPm1faW5jb21pbmdRdWV1ZS0+dHJ5R2V0TWVzc2FnZSgpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9jaGFubmVsLT5tX2luY29taW5nUXVldWUtPnRyeUdldE1lc3NhZ2UoKTsKICAgICBpZiAoIXJl
c3VsdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCA3NWExMzUz
YjI0NGM5ZjM1MjQ3ZmZlYjhhNTE2NzYyZjYxOTMzZjQ1Li42ZWI4OWQ0N2QyMjlhZGYxZmVjZjli
YmM5NDJkNjUxN2VjMjFkOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVs
dC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9k
ZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBFdmVudERhdGEgewogICAgICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGF0
YT4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxFdmVudERhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKIAogICAgICAgICAgICAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UoKSB7IHJldHVybiBtX21lc3Nh
Z2U7IH0KICAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNo
YW5uZWxzKCkgeyByZXR1cm4gbV9jaGFubmVscy5yZWxlYXNlKCk7IH0KQEAgLTY1LDE0ICs2NSwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0UXVldWU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZXNzYWdlUG9ydFF1ZXVlKCkpOyB9CiAKLSAgICAgICAgICAgIE93blB0cjxQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiB0cnlHZXRNZXNzYWdlKCkKKyAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnRE
YXRhPiB0cnlHZXRNZXNzYWdlKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gbV9xdWV1ZS50cnlHZXRNZXNzYWdlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGJvb2wgYXBwZW5kQW5kQ2hlY2tFbXB0eShQYXNzT3duUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpFdmVudERhdGE+IG1lc3NhZ2UpCisgICAgICAgICAgICBib29sIGFwcGVuZEFuZENo
ZWNrRW1wdHkoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVu
dERhdGE+IG1lc3NhZ2UpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1f
cXVldWUuYXBwZW5kQW5kQ2hlY2tFbXB0eShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9xdWV1ZS5hcHBlbmRBbmRDaGVja0VtcHR5KHN0ZDo6bW92ZShtZXNzYWdlKSk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGJvb2wgaXNFbXB0eSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlVGhyZWFkLmNwcAppbmRleCA0ZGQ5NWNmYTAzZGJiYmJhYjU1MDc4Mjc5MmQ4NWM4YTk2
YmU4M2Q4Li5lNDNmMGU3MmQyMmNmNWZjYjI0MTlkMDg0ZjA4ZDIwNGFlYjQxMWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5jcHAKQEAgLTY0LDE1ICs2NCwxNSBAQCB2b2lkIEZp
bGVUaHJlYWQ6OnN0b3AoKQogICAgIG1fcXVldWUua2lsbCgpOwogfQogCi12b2lkIEZpbGVUaHJl
YWQ6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzaykKK3ZvaWQgRmlsZVRocmVhZDo6cG9z
dFRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgbV9xdWV1ZS5hcHBlbmQo
dGFzayk7CisgICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptb3ZlKHRhc2spKTsKIH0KIAogY2xhc3Mg
U2FtZUluc3RhbmNlUHJlZGljYXRlIHsKIHB1YmxpYzoKICAgICBTYW1lSW5zdGFuY2VQcmVkaWNh
dGUoY29uc3Qgdm9pZCogaW5zdGFuY2UpIDogbV9pbnN0YW5jZShpbnN0YW5jZSkgeyB9Ci0gICAg
Ym9vbCBvcGVyYXRvcigpKGNvbnN0IE93blB0cjxGaWxlVGhyZWFkOjpUYXNrPiYgdGFzaykgY29u
c3QgeyByZXR1cm4gdGFzay0+aW5zdGFuY2UoKSA9PSBtX2luc3RhbmNlOyB9CisgICAgYm9vbCBv
cGVyYXRvcigpKEZpbGVUaHJlYWQ6OlRhc2smIHRhc2spIGNvbnN0IHsgcmV0dXJuIHRhc2suaW5z
dGFuY2UoKSA9PSBtX2luc3RhbmNlOyB9CiBwcml2YXRlOgogICAgIGNvbnN0IHZvaWQqIG1faW5z
dGFuY2U7CiB9OwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEZpbGVUaHJlYWQ6OnJ1bkxvb3AoKQog
ICAgICAgICBMT0coRmlsZUFQSSwgIlN0YXJ0ZWQgRmlsZVRocmVhZCAlcCIsIHRoaXMpOwogICAg
IH0KIAotICAgIHdoaWxlIChPd25QdHI8VGFzaz4gdGFzayA9IG1fcXVldWUud2FpdEZvck1lc3Nh
Z2UoKSkgeworICAgIHdoaWxlIChhdXRvIHRhc2sgPSBtX3F1ZXVlLndhaXRGb3JNZXNzYWdlKCkp
IHsKICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CiAKICAgICAgICAgdGFzay0+cGVyZm9y
bVRhc2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmgKaW5kZXggZDRlMjRiY2EzMGI2
YWEyOTY4YmQ3OGU0ODQ4MWJhY2YyNjVmMmI2ZC4uM2IzOTExYzM5MzFjYTdkYmY5ODhlOTZiNWQ0
MGQ2ODdiYjJiZjcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmgKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkKiBtX2luc3RhbmNlOwogICAgIH07CiAKLSAg
ICB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzayk7CisgICAgdm9pZCBwb3N0VGFz
ayhzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4pOwogCiAgICAgdm9pZCB1bnNjaGVkdWxlVGFza3MoY29u
c3Qgdm9pZCogaW5zdGFuY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWRUYXNr
LmgKaW5kZXggOGE4ZmZjYjdiYjU1MzZjM2QyYTU0YTMzOTQ0YzM2YjE2YzdkOTQyMC4uYmFjYmEx
MTdkMmVkZGE4YjliODcxZDM4ODI4NzczYzg2ODc1YzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVRocmVhZFRhc2suaApAQCAtNDUsMTggKzQ1LDEzIEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIHZvaWQgKFQ6OipNZXRob2QpKCk7CiAgICAgdHlwZWRlZiBGaWxlVGhyZWFkVGFzazA8VD4g
RmlsZVRocmVhZFRhc2tJbXBsOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8RmlsZVRocmVhZFRh
c2tJbXBsPiBjcmVhdGUoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2QpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbGVUaHJlYWRUYXNrSW1wbChpbnN0YW5jZSwgbWV0aG9k
KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIEZpbGVUaHJlYWRUYXNrMChUKiBpbnN0YW5jZSwg
TWV0aG9kIG1ldGhvZCkKICAgICAgICAgOiBGaWxlVGhyZWFkOjpUYXNrKGluc3RhbmNlKQogICAg
ICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpCiAgICAgewogICAgICAgICAoKnN0YXRpY19jYXN0PFQq
PihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKCk7CkBAIC03MywxMiArNjgsNiBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBGaWxlVGhyZWFkVGFzazE8VCwgUDEsIE1QMT4gRmlsZVRocmVhZFRhc2tJbXBs
OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAxPjo6UGFyYW1U
eXBlIFBhcmFtMTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGVUaHJlYWRUYXNrSW1wbD4g
Y3JlYXRlKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZVRocmVhZFRhc2tJbXBsKGluc3Rh
bmNlLCBtZXRob2QsIHBhcmFtZXRlcjEpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgRmlsZVRo
cmVhZFRhc2sxKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkK
ICAgICAgICAgOiBGaWxlVGhyZWFkOjpUYXNrKGluc3RhbmNlKQogICAgICAgICAsIG1fbWV0aG9k
KG1ldGhvZCkKQEAgLTg2LDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCitwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpCiAgICAgewogICAgICAgICAoKnN0
YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKG1fcGFyYW1ldGVyMSk7CkBAIC0x
MDQsMTIgKzk0LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRU
YXNrVHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENy
b3NzVGhyZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CiAKLSAgICBzdGF0aWMg
UGFzc093blB0cjxGaWxlVGhyZWFkVGFza0ltcGw+IGNyZWF0ZShUKiBpbnN0YW5jZSwgTWV0aG9k
IG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlVGhyZWFkVGFza0ltcGwoaW5zdGFuY2UsIG1l
dGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBG
aWxlVGhyZWFkVGFzazIoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikKICAgICAgICAgOiBGaWxlVGhyZWFkOjpUYXNrKGluc3Rh
bmNlKQogICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKQEAgLTExOCw2ICsxMDIsNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKCkKICAgICB7CiAgICAgICAgICgqc3RhdGljX2Nhc3Q8VCo+KGluc3RhbmNlKCkpLiptX21l
dGhvZCkobV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIpOwpAQCAtMTM4LDEyICsxMjMsNiBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQ
YXJhbVR5cGUgUGFyYW0yOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJh
aXRzPFAzPjo6UGFyYW1UeXBlIFBhcmFtMzsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGVU
aHJlYWRUYXNrSW1wbD4gY3JlYXRlKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kLCBQYXJhbTEg
cGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlVGhyZWFkVGFza0ltcGwoaW5zdGFuY2Us
IG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwotICAgIH0KLQot
cHJpdmF0ZToKICAgICBGaWxlVGhyZWFkVGFzazMoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2Qs
IFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMp
CiAgICAgICAgIDogRmlsZVRocmVhZDo6VGFzayhpbnN0YW5jZSkKICAgICAgICAgLCBtX21ldGhv
ZChtZXRob2QpCkBAIC0xNTMsNiArMTMyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCitw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpCiAgICAgewogICAgICAgICAo
KnN0YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKG1fcGFyYW1ldGVyMSwgbV9w
YXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMpOwpAQCAtMTY2LDQwICsxNDYsNDAgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1QYXNzT3duUHRyPEZpbGVUaHJlYWQ6OlRhc2s+
IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAorc3RkOjp1bmlxdWVfcHRyPEZpbGVUaHJlYWQ6OlRhc2s+
IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAogICAgIFQqIGNvbnN0IGNhbGxlZSwKICAgICB2b2lkIChU
OjoqbWV0aG9kKSgpKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVBhc3NPd25QdHI8RmlsZVRo
cmVhZDo6VGFzaz4gY3JlYXRlRmlsZVRocmVhZFRhc2soCitzdGQ6OnVuaXF1ZV9wdHI8RmlsZVRo
cmVhZDo6VGFzaz4gY3JlYXRlRmlsZVRocmVhZFRhc2soCiAgICAgVCogY29uc3QgY2FsbGVlLAog
ICAgIHZvaWQgKFQ6OiptZXRob2QpKCkpCiB7Ci0gICAgcmV0dXJuIEZpbGVUaHJlYWRUYXNrMDxU
Pjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVUaHJlYWRUYXNrMDxU
Pj4oCiAgICAgICAgIGNhbGxlZSwKICAgICAgICAgbWV0aG9kKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLVBhc3NPd25QdHI8RmlsZVRocmVh
ZDo6VGFzaz4gY3JlYXRlRmlsZVRocmVhZFRhc2soCitzdGQ6OnVuaXF1ZV9wdHI8RmlsZVRocmVh
ZDo6VGFzaz4gY3JlYXRlRmlsZVRocmVhZFRhc2soCiAgICAgVCogY29uc3QgY2FsbGVlLAogICAg
IHZvaWQgKFQ6OiptZXRob2QpKE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0g
ICAgcmV0dXJuIEZpbGVUaHJlYWRUYXNrMTxULCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
MT46OlR5cGUsIE1QMT46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWxl
VGhyZWFkVGFzazE8VCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDE+
PigKICAgICAgICAgY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIENyb3NzVGhyZWFk
Q29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDI+Ci1Q
YXNzT3duUHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAorc3RkOjp1
bmlxdWVfcHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAogICAgIFQq
IGNvbnN0IGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiksCiAgICAgY29u
c3QgUDEmIHBhcmFtZXRlcjEsCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgcmV0
dXJuIEZpbGVUaHJlYWRUYXNrMjxULCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5
cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVh
dGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmlsZVRocmVhZFRhc2syPFQsIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMj46OlR5cGUsIE1QMj4+KAogICAgICAgICBjYWxsZWUsCiAgICAgICAgIG1ldGhv
ZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAt
MjA3LDE0ICsxODcsMTQgQEAgUGFzc093blB0cjxGaWxlVGhyZWFkOjpUYXNrPiBjcmVhdGVGaWxl
VGhyZWFkVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVu
YW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IE1QMz4KLVBhc3NPd25QdHI8RmlsZVRocmVhZDo6VGFzaz4gY3JlYXRlRmlsZVRocmVhZFRhc2so
CitzdGQ6OnVuaXF1ZV9wdHI8RmlsZVRocmVhZDo6VGFzaz4gY3JlYXRlRmlsZVRocmVhZFRhc2so
CiAgICAgVCogY29uc3QgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBN
UDMpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIy
LAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBGaWxlVGhyZWFkVGFz
azM8VCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMz46OlR5cGUsIE1QMz46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxGaWxlVGhyZWFkVGFzazM8VCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBl
LCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMz4+KAogICAgICAgICBjYWxsZWUsCiAg
ICAgICAgIG1ldGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFt
ZXRlcjEpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggOTYw
MmIyZTYzNGY2YTNkNGYwOWRhMTg4MzcwZDFiMDFjOTc5OGE3ZS4uNWQ3M2JhYzc4NDkzYWZkM2Zh
NWI0OTRhOWMyODY1YzMzZmU0YTY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VU
aHJlYWQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50
cnlQb2ludCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICB3aGlsZSAo
T3duUHRyPEZ1bmN0aW9uPHZvaWQgKCk+ID4gZnVuY3Rpb24gPSBtX3F1ZXVlLndhaXRGb3JNZXNz
YWdlKCkpIHsKKyAgICB3aGlsZSAoYXV0byBmdW5jdGlvbiA9IG1fcXVldWUud2FpdEZvck1lc3Nh
Z2UoKSkgewogICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKICAgICAgICAgKCpmdW5jdGlv
bikoKTsKICAgICB9CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6ZGlzcGF0
Y2goY29uc3QgRnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFkSUQp
OwotICAgIG1fcXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBGdW5jdGlvbjx2b2lkICgpPihmdW5j
dGlvbikpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZv
aWQgKCk+PihmdW5jdGlvbikpOwogfQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgp
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKICAgICBp
ZiAoIW1fdGhyZWFkSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcXVldWUuYXBwZW5kKGFk
b3B0UHRyKG5ldyBGdW5jdGlvbjx2b2lkICgpPigoYmluZCgmU3RvcmFnZVRocmVhZDo6cGVyZm9y
bVRlcm1pbmF0ZSwgdGhpcykpKSkpOworICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8RnVuY3Rpb248dm9pZCAoKT4+KGJpbmQoJlN0b3JhZ2VUaHJlYWQ6OnBlcmZvcm1UZXJtaW5h
dGUsIHRoaXMpKSk7CiAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCk7CiAg
ICAgQVNTRVJUKG1fcXVldWUua2lsbGVkKCkpOwogICAgIG1fdGhyZWFkSUQgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggZmNjMmMwNTViM2E3YjA0YjBh
YTc5Mzc2NjY5NTNiMWMxNjg4YTgwMy4uZjRhMmVmYzg2MzdkNjJmZTIwNjY3YzNjMWNkMDA4Zjk2
ODI0MzBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC03
OCw5ICs3OCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZGVmYXVsdE1vZGU7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IE93blB0cjxXb3JrZXJSdW5Mb29wOjpUYXNr
PiYgdGFzaykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgV29ya2VyUnVuTG9vcDo6
VGFzayYgdGFzaykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RlZmF1bHRNb2RlIHx8
IG1fbW9kZSA9PSB0YXNrLT5tb2RlKCk7CisgICAgICAgIHJldHVybiBtX2RlZmF1bHRNb2RlIHx8
IG1fbW9kZSA9PSB0YXNrLm1vZGUoKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTUsNyArMTU1
LDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29y
a2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnMKICAgICBpZiAod2FpdE1vZGUgPT0gV2FpdEZv
ck1lc3NhZ2UpCiAgICAgICAgIGFic29sdXRlVGltZSA9IChwcmVkaWNhdGUuaXNEZWZhdWx0TW9k
ZSgpICYmIG1fc2hhcmVkVGltZXItPmlzQWN0aXZlKCkpID8gbV9zaGFyZWRUaW1lci0+ZmlyZVRp
bWUoKSA6IE1lc3NhZ2VRdWV1ZTxUYXNrPjo6aW5maW5pdGVUaW1lKCk7CiAgICAgTWVzc2FnZVF1
ZXVlV2FpdFJlc3VsdCByZXN1bHQ7Ci0gICAgT3duUHRyPFdvcmtlclJ1bkxvb3A6OlRhc2s+IHRh
c2sgPSBtX21lc3NhZ2VRdWV1ZS53YWl0Rm9yTWVzc2FnZUZpbHRlcmVkV2l0aFRpbWVvdXQocmVz
dWx0LCBwcmVkaWNhdGUsIGFic29sdXRlVGltZSk7CisgICAgYXV0byB0YXNrID0gbV9tZXNzYWdl
UXVldWUud2FpdEZvck1lc3NhZ2VGaWx0ZXJlZFdpdGhUaW1lb3V0KHJlc3VsdCwgcHJlZGljYXRl
LCBhYnNvbHV0ZVRpbWUpOwogCiAgICAgLy8gSWYgdGhlIGNvbnRleHQgaXMgY2xvc2luZywgZG9u
J3QgZXhlY3V0ZSBhbnkgZnVydGhlciBKYXZhU2NyaXB0IHRhc2tzIChwZXIgc2VjdGlvbiA0LjEu
MSBvZiB0aGUgV2ViIFdvcmtlcnMgc3BlYykuICBIb3dldmVyLCB0aGVyZSBtYXkgYmUgaW1wbGVt
ZW50YXRpb24gY2xlYW51cCB0YXNrcyBpbiB0aGUgcXVldWUsIHNvIGtlZXAgcnVubmluZyB0aHJv
dWdoIGl0LgogCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpydW5DbGVh
bnVwVGFza3MoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQpCiAgICAgQVNTRVJUKG1fbWVzc2Fn
ZVF1ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIE93blB0cjxX
b3JrZXJSdW5Mb29wOjpUYXNrPiB0YXNrID0gbV9tZXNzYWdlUXVldWUudHJ5R2V0TWVzc2FnZUln
bm9yaW5nS2lsbGVkKCk7CisgICAgICAgIGF1dG8gdGFzayA9IG1fbWVzc2FnZVF1ZXVlLnRyeUdl
dE1lc3NhZ2VJZ25vcmluZ0tpbGxlZCgpOwogICAgICAgICBpZiAoIXRhc2spCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCp0aGlzLCBjb250ZXh0KTsKQEAg
LTIxMSw5ICsyMTEsOSBAQCB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhcwogICAgIG1fbWVzc2FnZVF1
ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUodGFzaywgbW9kZS5pc29sYXRlZENvcHkoKSkpOwogfQog
Ci1QYXNzT3duUHRyPFdvcmtlclJ1bkxvb3A6OlRhc2s+IFdvcmtlclJ1bkxvb3A6OlRhc2s6OmNy
ZWF0ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0
IFN0cmluZyYgbW9kZSkKK3N0ZDo6dW5pcXVlX3B0cjxXb3JrZXJSdW5Mb29wOjpUYXNrPiBXb3Jr
ZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBUYXNrKHRhc2ssIG1vZGUpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFRhc2s+
KG5ldyBUYXNrKHRhc2ssIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpUYXNrOjpw
ZXJmb3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5Mb29wLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAppbmRl
eCA5MzllZjc0YWJiNDhlNWFkMzY3ZWJiYTQ0YTQ5NWY5ZTNjMTE2NTk4Li4zZGVlNWE1M2YxZGEy
NWY5N2M1MjJjNWI2NGNlOWE2NjMzYzc2NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuaApAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGNsYXNzIFRhc2sgewogICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxUYXNrPiBjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgICAgICAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiBjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgICAgIH5UYXNrKCkg
eyB9CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICAgICAgICAgICAgIHZvaWQgcGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213471</attachid>
            <date>2013-10-05 14:37:37 -0700</date>
            <delta_ts>2013-10-05 14:51:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122392-20131005143736.patch</filename>
            <type>text/plain</type>
            <size>40114</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkNTViOGYxNWNiNzgzYjI3MTFhNDFj
MThhOTY4OGYyYjMwY2VkM2UuLjg2OTc4OGQyNGI0MmNlZWFjZThiMWNjN2VkZjUwZDY1Mzg2ZWI1
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTMtMTAtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbiB1cCBNZXNzYWdlUXVldWUuaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBNZXNzYWdl
UXVldWUgdXNlIHN0ZDo6dW5pcXVlX3B0ciBhbmQgY2hhbmdlIGZpbmRJZiBhbmQgcmVtb3ZlSWYg
dG8gdGFrZSBjb25zdCByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL0RlcXVlLmg6CisgICAg
ICAgIENoYW5nZSBmaW5kSWYgdG8gdGFrZSBhbiBydmFsdWUgcmVmZXJlbmNlLgorCisgICAgICAg
ICogd3RmL01lc3NhZ2VRdWV1ZS5oOgorICAgICAgICAoV1RGOjo6OmFwcGVuZCk6CisgICAgICAg
IChXVEY6Ojo6YXBwZW5kQW5kS2lsbCk6CisgICAgICAgIChXVEY6Ojo6YXBwZW5kQW5kQ2hlY2tF
bXB0eSk6CisgICAgICAgIChXVEY6Ojo6cHJlcGVuZCk6CisgICAgICAgIChXVEY6Ojo6cmVtb3Zl
SWYpOgorCisyMDEzLTEwLTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKICAgICAgICAgVHJ5IHRvICNkZWZpbmUgZmluYWwgdG8gc2VhbGVkIHdoZW4gYnVpbGRpbmcg
d2l0aCBNU1ZDCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjIzODYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJjMjRjYzNjNjcwYWRhOWUwMDIwYjZiZWYwM2I4MTk0
NTMyNTQyZmUuLmRiZGIyODMxMTNhYzNmM2EzNjFkMWJlOTEyZTdjMGUxMTAyNGVlNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMy0xMC0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIE1lc3NhZ2VRdWV1ZS5oCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzOTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZm9yIGNo
YW5nZXMgdG8gTWVzc2FnZVF1ZXVlLCBtb3N0bHkgY2hhbmdpbmcgY3JlYXRlIGZ1bmN0aW9ucyB0
byByZXR1cm4gc3RkOjp1bmlxdWVfcHRyLgorICAgICAgICBJIGludGVudGlvbmFsbHkgYXZvaWRl
ZCB1c2luZyBzdGQ6Om1ha2VfdW5pcXVlIGluIGEgY291cGxlIG9mIHBsYWNlcyBiZWNhdXNlIEkg
ZGlkbid0IHdhbnQgdG8gbWFrZSBuZXN0ZWQgY2xhc3NlcworICAgICAgICBwdWJsaWMsIGFuZCBJ
IGJlbGlldmUgdGhhdCB3ZSBjYW4gY2hhbmdlIHNvbWUgb2YgdGhpcyBjb2RlIHRvIHVzZSBzdGQ6
OmZ1bmN0aW9uLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OnJ1bkxvb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
Ojp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6Om9wZW5BbmRWZXJp
ZnlWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6c2NoZWR1bGVU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnNjaGVkdWxl
VHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGFzay5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZU9wZW5U
YXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFz
ZUNsb3NlVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6
RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUJhY2tlbmQ6OkRhdGFiYXNlVGFibGVOYW1lc1Rhc2s6OmNyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnNjaGVkdWxlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRo
cmVhZDo6c2NoZWR1bGVJbW1lZGlhdGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNhbWVEYXRh
YmFzZVByZWRpY2F0ZTo6b3BlcmF0b3IoKSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWw6OnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKToKKyAgICAgICAgKiBkb20vZGVmYXVs
dC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0UXVldWU6OnRyeUdldE1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0
UXVldWU6OmFwcGVuZEFuZENoZWNrRW1wdHkpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlVGhyZWFkOjpwb3N0VGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpTYW1lSW5zdGFuY2VQcmVkaWNhdGU6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVRocmVhZDo6cnVuTG9vcCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlVGhy
ZWFkLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRmlsZVRocmVhZFRhc2spOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVQcmVkaWNhdGU6Om9w
ZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5oOgorCiAyMDEzLTEwLTA0ICBEZWFuIEphY2tzb24gIDxkaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIHByb2dyYW0gc2hvdWxkIG5vdCBiZSBhYmxl
IHRvIGxpbmsgaWYgYSBiYWQgc2hhZGVyIGlzIGF0dGFjaGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9EZXF1ZS5oIGIvU291cmNlL1dURi93dGYvRGVxdWUuaAppbmRleCBhNWZkYjVkZjBh
YWM3NGNiNjhjMTA5NWE0ZWNkYzk5YTMzMDUyM2UyLi5iNDc3MTFmNzZmNWQ5MzJkMTFkZmJhYTA1
MTIwYzhjYWI2MWFiY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EZXF1ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0RlcXVlLmgKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIHZvaWQgY2xlYXIoKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVk
aWNhdGU+Ci0gICAgICAgIGl0ZXJhdG9yIGZpbmRJZihQcmVkaWNhdGUmKTsKKyAgICAgICAgaXRl
cmF0b3IgZmluZElmKFByZWRpY2F0ZSYmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT47CkBAIC0zNTMsNyAr
MzUzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgotICAg
IGlubGluZSBhdXRvIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6ZmluZElmKFByZWRpY2F0ZSYg
cHJlZGljYXRlKSAtPiBpdGVyYXRvcgorICAgIGlubGluZSBhdXRvIERlcXVlPFQsIGlubGluZUNh
cGFjaXR5Pjo6ZmluZElmKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSkgLT4gaXRlcmF0b3IKICAgICB7
CiAgICAgICAgIGl0ZXJhdG9yIGVuZF9pdGVyYXRvciA9IGVuZCgpOwogICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5kX2l0ZXJhdG9yOyArK2l0KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL01lc3Nh
Z2VRdWV1ZS5oCmluZGV4IDYzYTU2MTUyMjE3NDk0NTJhYzZhMzUzMGY4NzFjNjRjZDk0NmRhYzku
LjRkM2Q0MTljMTI3ZjhiYjI4NzhhNGFhYTdmZmM4ODQwNTU4ZTMzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lc3NhZ2VR
dWV1ZS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gVGhlIHF1
ZXVlIHRha2VzIG93bmVyc2hpcCBvZiBtZXNzYWdlcyBhbmQgdHJhbnNmZXIgaXQgdG8gdGhlIG5l
dyBvd25lcgogICAgIC8vIHdoZW4gbWVzc2FnZXMgYXJlIGZldGNoZWQgZnJvbSB0aGUgcXVldWUu
Ci0gICAgLy8gRXNzZW50aWFsbHksIE1lc3NhZ2VRdWV1ZSBhY3RzIGFzIGEgcXVldWUgb2YgT3du
UHRyPERhdGFUeXBlPi4KKyAgICAvLyBFc3NlbnRpYWxseSwgTWVzc2FnZVF1ZXVlIGFjdHMgYXMg
YSBxdWV1ZSBvZiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+LgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERhdGFUeXBlPgogICAgIGNsYXNzIE1lc3NhZ2VRdWV1ZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE1lc3NhZ2VRdWV1ZSk7CkBAIC01NCwxOSArNTQsMTkgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIE1lc3NhZ2VRdWV1ZSgpIDogbV9raWxsZWQoZmFsc2UpIHsgfQogICAg
ICAgICB+TWVzc2FnZVF1ZXVlKCk7CiAKLSAgICAgICAgdm9pZCBhcHBlbmQoT3duUHRyPERhdGFU
eXBlPik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQW5kS2lsbChPd25QdHI8RGF0YVR5cGU+KTsKLSAg
ICAgICAgYm9vbCBhcHBlbmRBbmRDaGVja0VtcHR5KE93blB0cjxEYXRhVHlwZT4pOwotICAgICAg
ICB2b2lkIHByZXBlbmQoT3duUHRyPERhdGFUeXBlPik7CisgICAgICAgIHZvaWQgYXBwZW5kKHN0
ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4pOworICAgICAgICB2b2lkIGFwcGVuZEFuZEtpbGwoc3Rk
Ojp1bmlxdWVfcHRyPERhdGFUeXBlPik7CisgICAgICAgIGJvb2wgYXBwZW5kQW5kQ2hlY2tFbXB0
eShzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+KTsKKyAgICAgICAgdm9pZCBwcmVwZW5kKHN0ZDo6
dW5pcXVlX3B0cjxEYXRhVHlwZT4pOwogCi0gICAgICAgIE93blB0cjxEYXRhVHlwZT4gd2FpdEZv
ck1lc3NhZ2UoKTsKLSAgICAgICAgT3duUHRyPERhdGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7Ci0g
ICAgICAgIE93blB0cjxEYXRhVHlwZT4gdHJ5R2V0TWVzc2FnZUlnbm9yaW5nS2lsbGVkKCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gd2FpdEZvck1lc3NhZ2UoKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gdHJ5R2V0TWVzc2FnZUlnbm9yaW5nS2lsbGVkKCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KLSAgICAgICAgT3duUHRyPERhdGFU
eXBlPiB3YWl0Rm9yTWVzc2FnZUZpbHRlcmVkV2l0aFRpbWVvdXQoTWVzc2FnZVF1ZXVlV2FpdFJl
c3VsdCYsIFByZWRpY2F0ZSYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGF0YVR5cGU+IHdhaXRGb3JNZXNzYWdlRmlsdGVyZWRXaXRoVGltZW91dChNZXNz
YWdlUXVldWVXYWl0UmVzdWx0JiwgUHJlZGljYXRlJiYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOwog
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KLSAgICAgICAgdm9pZCByZW1v
dmVJZihQcmVkaWNhdGUmKTsKKyAgICAgICAgdm9pZCByZW1vdmVJZihQcmVkaWNhdGUmJik7CiAK
ICAgICAgICAgdm9pZCBraWxsKCk7CiAgICAgICAgIGJvb2wga2lsbGVkKCkgY29uc3Q7CkBAIC03
NywxMSArNzcsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIGRvdWJsZSBpbmZp
bml0ZVRpbWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgYm9vbCBhbHdheXNUcnVlUHJlZGljYXRl
KGNvbnN0IE93blB0cjxEYXRhVHlwZT4mKSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICAgICAgbXV0
YWJsZSBNdXRleCBtX211dGV4OwogICAgICAgICBUaHJlYWRDb25kaXRpb24gbV9jb25kaXRpb247
Ci0gICAgICAgIERlcXVlPE93blB0cjxEYXRhVHlwZT4+IG1fcXVldWU7CisgICAgICAgIERlcXVl
PHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4+IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9raWxs
ZWQ7CiAgICAgfTsKIApAQCAtOTEsNyArODksNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KLSAgICBpbmxpbmUgdm9pZCBNZXNzYWdl
UXVldWU8RGF0YVR5cGU+OjphcHBlbmQoT3duUHRyPERhdGFUeXBlPiBtZXNzYWdlKQorICAgIGlu
bGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8
RGF0YVR5cGU+IG1lc3NhZ2UpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0
ZXgpOwogICAgICAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1vdmUobWVzc2FnZSkpOwpAQCAtOTks
NyArOTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEYXRhVHlwZT4KLSAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjphcHBl
bmRBbmRLaWxsKE93blB0cjxEYXRhVHlwZT4gbWVzc2FnZSkKKyAgICBpbmxpbmUgdm9pZCBNZXNz
YWdlUXVldWU8RGF0YVR5cGU+OjphcHBlbmRBbmRLaWxsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlw
ZT4gbWVzc2FnZSkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAg
ICAgICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bW92ZShtZXNzYWdlKSk7CkBAIC0xMDksNyArMTA3
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXVl
IHdhcyBlbXB0eSBiZWZvcmUgdGhlIGl0ZW0gd2FzIGFkZGVkLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERhdGFUeXBlPgotICAgIGlubGluZSBib29sIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFw
cGVuZEFuZENoZWNrRW1wdHkoT3duUHRyPERhdGFUeXBlPiBtZXNzYWdlKQorICAgIGlubGluZSBi
b29sIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZEFuZENoZWNrRW1wdHkoc3RkOjp1bmlx
dWVfcHRyPERhdGFUeXBlPiBtZXNzYWdlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
ayhtX211dGV4KTsKICAgICAgICAgYm9vbCB3YXNFbXB0eSA9IG1fcXVldWUuaXNFbXB0eSgpOwpA
QCAtMTE5LDcgKzExNyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERhdGFUeXBlPgotICAgIGlubGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlw
ZT46OnByZXBlbmQoT3duUHRyPERhdGFUeXBlPiBtZXNzYWdlKQorICAgIGlubGluZSB2b2lkIE1l
c3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnByZXBlbmQoc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiBt
ZXNzYWdlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgbV9xdWV1ZS5wcmVwZW5kKHN0ZDo6bW92ZShtZXNzYWdlKSk7CkBAIC0xMjcsMjQgKzEyNSwz
MiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRh
VHlwZT4KLSAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojp3YWl0Rm9yTWVz
c2FnZSgpIC0+IE93blB0cjxEYXRhVHlwZT4KKyAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8
RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2FnZSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4K
ICAgICB7CiAgICAgICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgZXhpdFJlYXNvbjsgCi0gICAg
ICAgIE93blB0cjxEYXRhVHlwZT4gcmVzdWx0ID0gd2FpdEZvck1lc3NhZ2VGaWx0ZXJlZFdpdGhU
aW1lb3V0KGV4aXRSZWFzb24sIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFsd2F5c1RydWVQcmVk
aWNhdGUsIGluZmluaXRlVGltZSgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBl
PiByZXN1bHQgPSB3YWl0Rm9yTWVzc2FnZUZpbHRlcmVkV2l0aFRpbWVvdXQoZXhpdFJlYXNvbiwg
W10oY29uc3QgRGF0YVR5cGUmKSB7IHJldHVybiB0cnVlOyB9LCBpbmZpbml0ZVRpbWUoKSk7CiAg
ICAgICAgIEFTU0VSVChleGl0UmVhc29uID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgfHwgZXhp
dFJlYXNvbiA9PSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KLSAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8
RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2FnZUZpbHRlcmVkV2l0aFRpbWVvdXQoTWVzc2FnZVF1ZXVl
V2FpdFJlc3VsdCYgcmVzdWx0LCBQcmVkaWNhdGUmIHByZWRpY2F0ZSwgZG91YmxlIGFic29sdXRl
VGltZSkgLT4gT3duUHRyPERhdGFUeXBlPgorICAgIGlubGluZSBhdXRvIE1lc3NhZ2VRdWV1ZTxE
YXRhVHlwZT46OndhaXRGb3JNZXNzYWdlRmlsdGVyZWRXaXRoVGltZW91dChNZXNzYWdlUXVldWVX
YWl0UmVzdWx0JiByZXN1bHQsIFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgZG91YmxlIGFic29sdXRl
VGltZSkgLT4gc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPgogICAgIHsKICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgYm9vbCB0aW1lZE91dCA9IGZhbHNlOwogCiAg
ICAgICAgIGF1dG8gZm91bmQgPSBtX3F1ZXVlLmVuZCgpOwotICAgICAgICB3aGlsZSAoIW1fa2ls
bGVkICYmICF0aW1lZE91dCAmJiAoZm91bmQgPSBtX3F1ZXVlLmZpbmRJZihwcmVkaWNhdGUpKSA9
PSBtX3F1ZXVlLmVuZCgpKQorICAgICAgICB3aGlsZSAoIW1fa2lsbGVkICYmICF0aW1lZE91dCkg
eworICAgICAgICAgICAgZm91bmQgPSBtX3F1ZXVlLmZpbmRJZihbJnByZWRpY2F0ZV0oY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiYgcHRyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlKCpwdHIpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoZm91bmQgIT0gbV9xdWV1ZS5lbmQoKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgdGltZWRPdXQgPSAhbV9jb25k
aXRpb24udGltZWRXYWl0KG1fbXV0ZXgsIGFic29sdXRlVGltZSk7CisgICAgICAgIH0KIAogICAg
ICAgICBBU1NFUlQoIXRpbWVkT3V0IHx8IGFic29sdXRlVGltZSAhPSBpbmZpbml0ZVRpbWUoKSk7
CiAKQEAgLTE1OSwxNCArMTY1LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAKICAg
ICAgICAgQVNTRVJUKGZvdW5kICE9IG1fcXVldWUuZW5kKCkpOwotICAgICAgICBPd25QdHI8RGF0
YVR5cGU+IG1lc3NhZ2UgPSBzdGQ6Om1vdmUoKmZvdW5kKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPERhdGFUeXBlPiBtZXNzYWdlID0gc3RkOjptb3ZlKCpmb3VuZCk7CiAgICAgICAgIG1fcXVl
dWUucmVtb3ZlKGZvdW5kKTsKICAgICAgICAgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJl
Y2VpdmVkOwogICAgICAgICByZXR1cm4gbWVzc2FnZTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBEYXRhVHlwZT4KLSAgICBpbmxpbmUgYXV0byBNZXNzYWdlUXVldWU8RGF0YVR5cGU+
Ojp0cnlHZXRNZXNzYWdlKCkgLT4gT3duUHRyPERhdGFUeXBlPgorICAgIGlubGluZSBhdXRvIE1l
c3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8
RGF0YVR5cGU+CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICBpZiAobV9raWxsZWQpCkBAIC0xNzgsNyArMTg0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+Ci0gICAgaW5saW5lIGF1dG8g
TWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6dHJ5R2V0TWVzc2FnZUlnbm9yaW5nS2lsbGVkKCkgLT4g
T3duUHRyPERhdGFUeXBlPgorICAgIGlubGluZSBhdXRvIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46
OnRyeUdldE1lc3NhZ2VJZ25vcmluZ0tpbGxlZCgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlw
ZT4KICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIGlm
IChtX3F1ZXVlLmlzRW1wdHkoKSkKQEAgLTE4OSwxNCArMTk1LDE4IEBAIG5hbWVzcGFjZSBXVEYg
ewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUHJlZGljYXRlPgotICAgIGlubGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnJl
bW92ZUlmKFByZWRpY2F0ZSYgcHJlZGljYXRlKQorICAgIGlubGluZSB2b2lkIE1lc3NhZ2VRdWV1
ZTxEYXRhVHlwZT46OnJlbW92ZUlmKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSkKICAgICB7CiAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgICAgIGF1dG8gZm91bmQgPSBtX3F1
ZXVlLmVuZCgpOwotICAgICAgICAvLyBGSVhNRTogSSB0aGluayB0aGUgcHJlZGljYXRlIGhlcmUg
c2hvdWxkIHJlYWxseSB0YWtlIGEgY29uc3QgRGF0YVR5cGUmCi0gICAgICAgIC8vIGluc3RlYWQg
b2YgYSBjb25zdCBPd25QdHI8RGF0YVR5cGU+Ji4KLSAgICAgICAgd2hpbGUgKChmb3VuZCA9IG1f
cXVldWUuZmluZElmKHByZWRpY2F0ZSkpICE9IG1fcXVldWUuZW5kKCkpIHsKLSAgICAgICAgICAg
IE93blB0cjxEYXRhVHlwZT4gbWVzc2FnZSA9IHN0ZDo6bW92ZSgqZm91bmQpOworICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYXV0byBmb3VuZCA9IG1fcXVldWUuZmluZElmKFsm
cHJlZGljYXRlXShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+JiBwdHIpIC0+IGJvb2wg
eworICAgICAgICAgICAgICAgIEFTU0VSVChwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiBw
cmVkaWNhdGUoKnB0cik7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKGZvdW5k
ID09IG1fcXVldWUuZW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAg
IG1fcXVldWUucmVtb3ZlKGZvdW5kKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXgg
MDkzODNlZjVmNDc5ZjM1NDA3ZmYxMTMwMDgwZDNlMTYyNDZiYmUyNC4uNjM1YjJiOGU2MDM2OTY3
YjFhMTg4YjVkYzhhNjM4ZmJjZGE1ODZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTYwLDggKzYwLDggQEAg
dm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0
YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGEKICAgICBpZiAoIWF1ZGlvRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgT3duUHRyPERlY29kaW5nVGFzaz4gZGVjb2RpbmdUYXNrID0gRGVjb2RpbmdU
YXNrOjpjcmVhdGUoYXVkaW9EYXRhLCBzYW1wbGVSYXRlLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOwotICAgIG1fcXVldWUuYXBwZW5kKGRlY29kaW5nVGFzay5yZWxlYXNlKCkpOyAv
LyBub3RlIHRoYXQgb3duZXJzaGlwIG9mIHRoZSB0YXNrIGlzIGVmZmVjdGl2ZWx5IHRha2VuIGJ5
IHRoZSBxdWV1ZS4KKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IERlY29kaW5nVGFzazo6Y3JlYXRl
KGF1ZGlvRGF0YSwgc2FtcGxlUmF0ZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
KyAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUgdGhh
dCBvd25lcnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVl
LgogfQogCiAvLyBBc3luY2hyb25vdXNseSBkZWNvZGUgaW4gdGhpcyB0aHJlYWQuCkBAIC04Miwx
NiArODIsMTYgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6cnVuTG9vcCgpCiAgICAgfQogCiAg
ICAgLy8gS2VlcCBydW5uaW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxlZC4KLSAg
ICB3aGlsZSAoT3duUHRyPERlY29kaW5nVGFzaz4gZGVjb2RpbmdUYXNrID0gbV9xdWV1ZS53YWl0
Rm9yTWVzc2FnZSgpKSB7CisgICAgd2hpbGUgKGF1dG8gZGVjb2RpbmdUYXNrID0gbV9xdWV1ZS53
YWl0Rm9yTWVzc2FnZSgpKSB7CiAgICAgICAgIC8vIExldCB0aGUgdGFzayB0YWtlIGNhcmUgb2Yg
aXRzIG93biBvd25lcnNoaXAuCiAgICAgICAgIC8vIFNlZSBEZWNvZGluZ1Rhc2s6Om5vdGlmeUNv
bXBsZXRlKCkgZm9yIGNsZWFudXAuCi0gICAgICAgIGRlY29kaW5nVGFzay5sZWFrUHRyKCktPmRl
Y29kZSgpOworICAgICAgICBkZWNvZGluZ1Rhc2sucmVsZWFzZSgpLT5kZWNvZGUoKTsKICAgICB9
CiB9CiAKLVBhc3NPd25QdHI8QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzaz4gQXN5bmNB
dWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6Y3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEs
IGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
CitzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzaz4gQXN5bmNB
dWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6Y3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEs
IGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWNvZGluZ1Rhc2soYXVkaW9EYXRhLCBzYW1w
bGVSYXRlLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPERlY29kaW5nVGFzaz4obmV3IERlY29kaW5nVGFzayhhdWRpb0RhdGEsIHNh
bXBsZVJhdGUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQogCiBBc3luY0F1
ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpEZWNvZGluZ1Rhc2soQXJyYXlCdWZmZXIqIGF1ZGlv
RGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNB
dWRpb0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuaAppbmRleCA5Y2ZhODhlNWVjMGNiM2U2ZjcwNmJkYTI2NGYwZTkyNzVkMzJmYjJi
Li45NzEzNjg3NDNhNmQ1OGUwODEyMjRhYTljY2RlYWM3NzBiNjA3NDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRGVjb2RpbmdUYXNrIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRGVjb2RpbmdUYXNrKTsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzT3duUHRyPERlY29kaW5nVGFzaz4gY3JlYXRlKEpTQzo6QXJyYXlCdWZmZXIq
IGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayk7CisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RpbmdUYXNr
PiBjcmVhdGUoSlNDOjpBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQ
YXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKIAogICAgICAgICB2b2lkIGRl
Y29kZSgpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKaW5kZXggYzUxOTYzZWY1NmIwNjgyNjVlZmRhOTQxNmI2MGYwMzA1ZTdk
NGRmZC4uODY5Yzg1ZjBkNzBiM2M5NmVhNmE4MDc1NTU5ZmRjMjM0ZmJlZWMxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTE1MSw4
ICsxNTEsOCBAQCB2b2lkIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgT3duUHRyPERhdGFiYXNlQ2xvc2VUYXNrPiB0YXNrID0g
RGF0YWJhc2VDbG9zZVRhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyKTsKLSAgICBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRh
c2sucmVsZWFzZSgpKTsKKyAgICBhdXRvIHRhc2sgPSBEYXRhYmFzZUNsb3NlVGFzazo6Y3JlYXRl
KHRoaXMsICZzeW5jaHJvbml6ZXIpOworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRo
cmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptb3ZlKHRhc2spKTsKICAgICBzeW5j
aHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiB9CiAKQEAgLTI2Nyw4ICsyNjcsOCBA
QCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgaWYgKCFkYXRhYmFz
ZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKLSAgICBPd25QdHI8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4gdGFz
ayA9IERhdGFiYXNlVGFibGVOYW1lc1Rhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyLCBy
ZXN1bHQpOwotICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVs
ZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgIGF1dG8gdGFzayA9IERhdGFiYXNl
VGFibGVOYW1lc1Rhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyLCByZXN1bHQpOworICAg
IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2soc3RkOjptb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0
aW9uKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCmluZGV4IGJiMzk1ZmUzNjQz
OWU4NzQ1ODVkYWMyNDJkMmNhNjNkMWIxYzYyNTIuLjQ5NWU4NmE0ODdiMjg4ZmRjNjdkMDZjMjcz
YzAxY2M2Y2FhZGMxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAKQEAgLTU2LDggKzU2LDggQEAgYm9vbCBEYXRh
YmFzZUJhY2tlbmQ6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0
YWJhc2UsIERhdGFiYXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNz
ID0gZmFsc2U7Ci0gICAgT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IHRhc2sgPSBEYXRhYmFzZU9w
ZW5UYXNrOjpjcmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsICZzeW5jaHJvbml6
ZXIsIGVycm9yLCBlcnJvck1lc3NhZ2UsIHN1Y2Nlc3MpOwotICAgIGRhdGFiYXNlQ29udGV4dCgp
LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkp
OworICAgIGF1dG8gdGFzayA9IERhdGFiYXNlT3BlblRhc2s6OmNyZWF0ZSh0aGlzLCBzZXRWZXJz
aW9uSW5OZXdEYXRhYmFzZSwgJnN5bmNocm9uaXplciwgZXJyb3IsIGVycm9yTWVzc2FnZSwgc3Vj
Y2Vzcyk7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxl
SW1tZWRpYXRlVGFzayhzdGQ6Om1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9y
VGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMTQ0LDEwICsxNDQs
MTAgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmQ6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgICAg
ICB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsKIAogICAgIGlm
ICh0cmFuc2FjdGlvbiAmJiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkgewot
ICAgICAgICBPd25QdHI8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+IHRhc2sgPSBEYXRhYmFzZVRy
YW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKKyAgICAgICAgYXV0byB0YXNrID0g
RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSh0cmFuc2FjdGlvbik7CiAgICAgICAgIExP
RyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3Ig
dHJhbnNhY3Rpb24gJXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5zYWN0aW9uKCkpOwogICAg
ICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgICAgIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOwor
ICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNr
KHN0ZDo6bW92ZSh0YXNrKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzID0gZmFsc2U7CiB9CkBAIC0xNTcsOSArMTU3LDkgQEAgdm9pZCBEYXRhYmFzZUJhY2tl
bmQ6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24KICAgICBpZiAoIWRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+IHRhc2sg
PSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKKyAgICBhdXRv
IHRhc2sgPSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKICAg
ICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAg
Zm9yIHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKLSAgICBkYXRhYmFzZUNv
bnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsK
KyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKHN0
ZDo6bW92ZSh0YXNrKSk7CiB9CiAKIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiBEYXRhYmFzZUJhY2tl
bmQ6OnRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCmluZGV4IGRkYmU3M2RlNGUxZDI5MTc4Yzdh
YWRkZTQyYmZmYzA2NmY0OTFiYTkuLmIzYTU1MDg2N2MwNjlmZTc3YmJlMTBmZDhlNTZjOTRiZTZh
NGJiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUYXNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRhc2suaApAQCAtMTAwLDkgKzEwMCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIERhdGFiYXNl
QmFja2VuZDo6RGF0YWJhc2VPcGVuVGFzayA6IHB1YmxpYyBEYXRhYmFzZVRhc2sgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IGNyZWF0ZShEYXRhYmFz
ZUJhY2tlbmQqIGRiLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIqIHN5bmNocm9uaXplciwgRGF0YWJhc2VFcnJvciYgZXJyb3IsIFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBib29sJiBzdWNjZXNzKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
RGF0YWJhc2VPcGVuVGFzaz4gY3JlYXRlKERhdGFiYXNlQmFja2VuZCogZGIsIGJvb2wgc2V0VmVy
c2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVy
LCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGJvb2wmIHN1Y2Nl
c3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERhdGFiYXNlT3BlblRhc2so
ZGIsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIGVycm9yLCBlcnJvck1l
c3NhZ2UsIHN1Y2Nlc3MpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFz
ZU9wZW5UYXNrPihuZXcgRGF0YWJhc2VPcGVuVGFzayhkYiwgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UsIHN5bmNocm9uaXplciwgZXJyb3IsIGVycm9yTWVzc2FnZSwgc3VjY2VzcykpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTEyMSw5ICsxMjEsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBEYXRhYmFz
ZUJhY2tlbmQ6OkRhdGFiYXNlQ2xvc2VUYXNrIDogcHVibGljIERhdGFiYXNlVGFzayB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGF0YWJhc2VDbG9zZVRhc2s+IGNyZWF0ZShEYXRh
YmFzZUJhY2tlbmQqIGRiLCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlQ2xvc2VUYXNrPiBjcmVhdGUoRGF0
YWJhc2VCYWNrZW5kKiBkYiwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERhdGFiYXNlQ2xvc2VUYXNrKGRi
LCBzeW5jaHJvbml6ZXIpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFz
ZUNsb3NlVGFzaz4obmV3IERhdGFiYXNlQ2xvc2VUYXNrKGRiLCBzeW5jaHJvbml6ZXIpKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0xNDAsOSArMTQwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkRhdGFiYXNlVHJhbnNhY3Rpb25UYXNrKCk7CiAKICAgICAvLyBUcmFuc2FjdGlvbiB0YXNrIGlz
IG5ldmVyIHN5bmNocm9ub3VzLCBzbyBubyAnc3luY2hyb25pemVyJyBwYXJhbWV0ZXIuCi0gICAg
c3RhdGljIFBhc3NPd25QdHI8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gdHJhbnNhY3Rpb24pCisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFuc2FjdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sodHJhbnNhY3Rpb24pKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4obmV3IERh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrKHRyYW5zYWN0aW9uKSk7CiAgICAgfQogCiAgICAgU1FMVHJh
bnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rp
b24uZ2V0KCk7IH0KQEAgLTE2MSw5ICsxNjEsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBEYXRhYmFz
ZUJhY2tlbmQ6OkRhdGFiYXNlVGFibGVOYW1lc1Rhc2sgOiBwdWJsaWMgRGF0YWJhc2VUYXNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPiBj
cmVhdGUoRGF0YWJhc2VCYWNrZW5kKiBkYiwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5j
aHJvbml6ZXIsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+IGNyZWF0ZShEYXRhYmFzZUJhY2tlbmQqIGRiLCBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplciwgVmVjdG9yPFN0cmluZz4mIG5h
bWVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRhYmFzZVRhYmxlTmFt
ZXNUYXNrKGRiLCBzeW5jaHJvbml6ZXIsIG5hbWVzKSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4obmV3IERhdGFiYXNlVGFibGVOYW1lc1Rh
c2soZGIsIHN5bmNocm9uaXplciwgbmFtZXMpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CmluZGV4IDYyN2E5ZGQ1ZGNjYzM1ZmRkM2FjYTVmMGIxNDUwZWZiOGQ1ZjVlYWIuLmUwZDQ3OTZl
ZjNlNmU2ZDQzYmFhMjdlOTE0OWFlNWY5NzMyOGU5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC0xMDYsNyAr
MTA2LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogICAgICAgICBM
T0coU3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJhc2VUaHJlYWQgJXAiLCB0aGlzKTsKICAgICB9
CiAKLSAgICB3aGlsZSAoT3duUHRyPERhdGFiYXNlVGFzaz4gdGFzayA9IG1fcXVldWUud2FpdEZv
ck1lc3NhZ2UoKSkgeworICAgIHdoaWxlIChhdXRvIHRhc2sgPSBtX3F1ZXVlLndhaXRGb3JNZXNz
YWdlKCkpIHsKICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CiAKICAgICAgICAgdGFzay0+
cGVyZm9ybVRhc2soKTsKQEAgLTE1NiwyMiArMTU2LDIyIEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6
OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiAgICAgbV9v
cGVuRGF0YWJhc2VTZXQucmVtb3ZlKGRhdGFiYXNlKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRocmVh
ZDo6c2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8RGF0YWJhc2VUYXNrPiB0YXNrKQordm9pZCBEYXRh
YmFzZVRocmVhZDo6c2NoZWR1bGVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+IHRh
c2spCiB7CiAgICAgQVNTRVJUKCF0YXNrLT5oYXNTeW5jaHJvbml6ZXIoKSB8fCB0YXNrLT5oYXND
aGVja2VkRm9yVGVybWluYXRpb24oKSk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQodGFzayk7CisgICAg
bV9xdWV1ZS5hcHBlbmQoc3RkOjptb3ZlKHRhc2spKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRocmVh
ZDo6c2NoZWR1bGVJbW1lZGlhdGVUYXNrKFBhc3NPd25QdHI8RGF0YWJhc2VUYXNrPiB0YXNrKQor
dm9pZCBEYXRhYmFzZVRocmVhZDo6c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxEYXRhYmFzZVRhc2s+IHRhc2spCiB7CiAgICAgQVNTRVJUKCF0YXNrLT5oYXNTeW5jaHJvbml6
ZXIoKSB8fCB0YXNrLT5oYXNDaGVja2VkRm9yVGVybWluYXRpb24oKSk7Ci0gICAgbV9xdWV1ZS5w
cmVwZW5kKHRhc2spOworICAgIG1fcXVldWUucHJlcGVuZChzdGQ6Om1vdmUodGFzaykpOwogfQog
CiBjbGFzcyBTYW1lRGF0YWJhc2VQcmVkaWNhdGUgewogcHVibGljOgogICAgIFNhbWVEYXRhYmFz
ZVByZWRpY2F0ZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKSA6IG1fZGF0YWJhc2Uo
ZGF0YWJhc2UpIHsgfQotICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBPd25QdHI8RGF0YWJhc2VU
YXNrPiYgdGFzaykgY29uc3QgeyByZXR1cm4gdGFzay0+ZGF0YWJhc2UoKSA9PSBtX2RhdGFiYXNl
OyB9CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IERhdGFiYXNlVGFzayYgdGFzaykgY29uc3Qg
eyByZXR1cm4gdGFzay5kYXRhYmFzZSgpID09IG1fZGF0YWJhc2U7IH0KIHByaXZhdGU6CiAgICAg
Y29uc3QgRGF0YWJhc2VCYWNrZW5kKiBtX2RhdGFiYXNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAzMDVkMmFl
ZjY4MDZhODIwZjUwNDE0M2EwZDVhY2NiZDVmZTgxZDU0Li5iNTc4Mjc4YTlkZTYxNTE4YzFlOTk3
ZTU2ZDFlMWQ4MGRkM2ZlMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlcXVlc3RUZXJtaW5hdGlvbihEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIGNsZWFu
dXBTeW5jKTsKICAgICBib29sIHRlcm1pbmF0aW9uUmVxdWVzdGVkKERhdGFiYXNlVGFza1N5bmNo
cm9uaXplciogdGFza1N5bmNocm9uaXplciA9IDApIGNvbnN0OwogCi0gICAgdm9pZCBzY2hlZHVs
ZVRhc2soUGFzc093blB0cjxEYXRhYmFzZVRhc2s+KTsKLSAgICB2b2lkIHNjaGVkdWxlSW1tZWRp
YXRlVGFzayhQYXNzT3duUHRyPERhdGFiYXNlVGFzaz4pOyAvLyBUaGlzIGp1c3QgYWRkcyB0aGUg
dGFzayB0byB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlIC0gdGhlIGNhbGxlciBuZWVkcyB0byBiZSBl
eHRyZW1lbHkgY2FyZWZ1bCBub3QgdG8gY3JlYXRlIGRlYWRsb2NrcyB3aGVuIHdhaXRpbmcgZm9y
IGNvbXBsZXRpb24uCisgICAgdm9pZCBzY2hlZHVsZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFi
YXNlVGFzaz4pOworICAgIHZvaWQgc2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxEYXRhYmFzZVRhc2s+KTsgLy8gVGhpcyBqdXN0IGFkZHMgdGhlIHRhc2sgdG8gdGhlIGZyb250
IG9mIHRoZSBxdWV1ZSAtIHRoZSBjYWxsZXIgbmVlZHMgdG8gYmUgZXh0cmVtZWx5IGNhcmVmdWwg
bm90IHRvIGNyZWF0ZSBkZWFkbG9ja3Mgd2hlbiB3YWl0aW5nIGZvciBjb21wbGV0aW9uLgogICAg
IHZvaWQgdW5zY2hlZHVsZURhdGFiYXNlVGFza3MoRGF0YWJhc2VCYWNrZW5kKik7CiAKICAgICB2
b2lkIHJlY29yZERhdGFiYXNlT3BlbihEYXRhYmFzZUJhY2tlbmQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNw
cAppbmRleCBmYTBlZTQyYmU1NzAzMDQyNmQ4ZTgyZmZhNzBiNDRiNDVmNmNjMDdlLi45MDJkYTE4
MzQwMGFhOWMyNjZiMGUyOTg0OGNhMzU2MDUyNDhmYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBA
IC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQor
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+IFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERhdGEo
bWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEV2ZW50RGF0
YT4obmV3IEV2ZW50RGF0YShtZXNzYWdlLCBjaGFubmVscykpOwogfQogCiBQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
IGNoYW5uZWxzKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpw
b3N0TWVzc2FnZVRvUmVtb3RlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtCiBi
b29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIG1lc3NhZ2UsIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4mIGNoYW5uZWxzKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVsLT5tX211
dGV4KTsKLSAgICBPd25QdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4g
cmVzdWx0ID0gbV9jaGFubmVsLT5tX2luY29taW5nUXVldWUtPnRyeUdldE1lc3NhZ2UoKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fY2hhbm5lbC0+bV9pbmNvbWluZ1F1ZXVlLT50cnlHZXRNZXNzYWdl
KCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
LmgKaW5kZXggNzVhMTM1M2IyNDRjOWYzNTI0N2ZmZWI4YTUxNjc2MmY2MTkzM2Y0NS4uNmViODlk
NDdkMjI5YWRmMWZlY2Y5YmJjOTQyZDY1MTdlYzIxZDkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCkBAIC00
OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgRXZlbnREYXRh
IHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50RGF0YSk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxFdmVudERhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnREYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CiAK
ICAgICAgICAgICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlKCkg
eyByZXR1cm4gbV9tZXNzYWdlOyB9CiAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVscygpIHsgcmV0dXJuIG1fY2hhbm5lbHMucmVsZWFzZSgpOyB9
CkBAIC02NSwxNCArNjUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBwdWJsaWM6
CiAgICAgICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydFF1ZXVlPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZVBvcnRRdWV1ZSgpKTsgfQogCi0gICAgICAg
ICAgICBPd25QdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4gdHJ5R2V0
TWVzc2FnZSgpCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw6OkV2ZW50RGF0YT4gdHJ5R2V0TWVzc2FnZSgpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fcXVldWUudHJ5R2V0TWVzc2FnZSgpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBib29sIGFwcGVuZEFuZENoZWNrRW1wdHkoUGFzc093blB0cjxQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBtZXNzYWdlKQorICAgICAgICAgICAg
Ym9vbCBhcHBlbmRBbmRDaGVja0VtcHR5KHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBtZXNzYWdlKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBtX3F1ZXVlLmFwcGVuZEFuZENoZWNrRW1wdHkobWVzc2FnZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fcXVldWUuYXBwZW5kQW5kQ2hlY2tFbXB0eShzdGQ6Om1vdmUo
bWVzc2FnZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBib29sIGlzRW1wdHkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5jcHAKaW5kZXggNGRkOTVjZmEwM2RiYmJiYWI1
NTA3ODI3OTJkODVjOGE5NmJlODNkOC4uZTQzZjBlNzJkMjJjZjVmY2IyNDE5ZDA4NGYwOGQyMDRh
ZWI0MTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwCkBAIC02NCwxNSAr
NjQsMTUgQEAgdm9pZCBGaWxlVGhyZWFkOjpzdG9wKCkKICAgICBtX3F1ZXVlLmtpbGwoKTsKIH0K
IAotdm9pZCBGaWxlVGhyZWFkOjpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2spCit2b2lk
IEZpbGVUaHJlYWQ6OnBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiB0YXNrKQogewotICAg
IG1fcXVldWUuYXBwZW5kKHRhc2spOworICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bW92ZSh0YXNr
KSk7CiB9CiAKIGNsYXNzIFNhbWVJbnN0YW5jZVByZWRpY2F0ZSB7CiBwdWJsaWM6CiAgICAgU2Ft
ZUluc3RhbmNlUHJlZGljYXRlKGNvbnN0IHZvaWQqIGluc3RhbmNlKSA6IG1faW5zdGFuY2UoaW5z
dGFuY2UpIHsgfQotICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBPd25QdHI8RmlsZVRocmVhZDo6
VGFzaz4mIHRhc2spIGNvbnN0IHsgcmV0dXJuIHRhc2stPmluc3RhbmNlKCkgPT0gbV9pbnN0YW5j
ZTsgfQorICAgIGJvb2wgb3BlcmF0b3IoKShGaWxlVGhyZWFkOjpUYXNrJiB0YXNrKSBjb25zdCB7
IHJldHVybiB0YXNrLmluc3RhbmNlKCkgPT0gbV9pbnN0YW5jZTsgfQogcHJpdmF0ZToKICAgICBj
b25zdCB2b2lkKiBtX2luc3RhbmNlOwogfTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBGaWxlVGhy
ZWFkOjpydW5Mb29wKCkKICAgICAgICAgTE9HKEZpbGVBUEksICJTdGFydGVkIEZpbGVUaHJlYWQg
JXAiLCB0aGlzKTsKICAgICB9CiAKLSAgICB3aGlsZSAoT3duUHRyPFRhc2s+IHRhc2sgPSBtX3F1
ZXVlLndhaXRGb3JNZXNzYWdlKCkpIHsKKyAgICB3aGlsZSAoYXV0byB0YXNrID0gbV9xdWV1ZS53
YWl0Rm9yTWVzc2FnZSgpKSB7CiAgICAgICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwogCiAgICAg
ICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5oCmlu
ZGV4IGQ0ZTI0YmNhMzBiNmFhMjk2OGJkNzhlNDg0ODFiYWNmMjY1ZjJiNmQuLjNiMzkxMWMzOTMx
Y2E3ZGJmOTg4ZTk2YjVkNDBkNjg3YmIyYmY3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRo
cmVhZC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCogbV9pbnN0YW5j
ZTsKICAgICB9OwogCi0gICAgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2spOwor
ICAgIHZvaWQgcG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+KTsKIAogICAgIHZvaWQgdW5z
Y2hlZHVsZVRhc2tzKGNvbnN0IHZvaWQqIGluc3RhbmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlVGhyZWFkVGFzay5oCmluZGV4IDhhOGZmY2I3YmI1NTM2YzNkMmE1NGEzMzk0NGMzNmIx
NmM3ZDk0MjAuLmJhY2JhMTE3ZDJlZGRhOGI5Yjg3MWQzODgyODc3M2M4Njg3NWMxMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZFRhc2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWRUYXNrLmgKQEAgLTQ1LDE4ICs0NSwxMyBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiB2b2lkIChUOjoqTWV0aG9kKSgpOwogICAgIHR5cGVkZWYgRmls
ZVRocmVhZFRhc2swPFQ+IEZpbGVUaHJlYWRUYXNrSW1wbDsKIAotICAgIHN0YXRpYyBQYXNzT3du
UHRyPEZpbGVUaHJlYWRUYXNrSW1wbD4gY3JlYXRlKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9k
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlVGhyZWFkVGFza0ltcGwo
aW5zdGFuY2UsIG1ldGhvZCkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBGaWxlVGhyZWFkVGFz
azAoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2QpCiAgICAgICAgIDogRmlsZVRocmVhZDo6VGFz
ayhpbnN0YW5jZSkKICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCiAgICAgewogICAgIH0KIAor
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKQogICAgIHsKICAgICAgICAg
KCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKSgpOwpAQCAtNzMsMTIgKzY4
LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgRmlsZVRocmVhZFRhc2sxPFQsIFAxLCBNUDE+IEZp
bGVUaHJlYWRUYXNrSW1wbDsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1Ry
YWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxGaWxl
VGhyZWFkVGFza0ltcGw+IGNyZWF0ZShUKiBpbnN0YW5jZSwgTWV0aG9kIG1ldGhvZCwgUGFyYW0x
IHBhcmFtZXRlcjEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbGVUaHJl
YWRUYXNrSW1wbChpbnN0YW5jZSwgbWV0aG9kLCBwYXJhbWV0ZXIxKSk7Ci0gICAgfQotCi1wcml2
YXRlOgogICAgIEZpbGVUaHJlYWRUYXNrMShUKiBpbnN0YW5jZSwgTWV0aG9kIG1ldGhvZCwgUGFy
YW0xIHBhcmFtZXRlcjEpCiAgICAgICAgIDogRmlsZVRocmVhZDo6VGFzayhpbnN0YW5jZSkKICAg
ICAgICAgLCBtX21ldGhvZChtZXRob2QpCkBAIC04Niw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKQogICAg
IHsKICAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKShtX3Bh
cmFtZXRlcjEpOwpAQCAtMTA0LDEyICs5NCw2IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVu
YW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CiAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0y
OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8RmlsZVRocmVhZFRhc2tJbXBsPiBjcmVhdGUoVCog
aW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZVRocmVhZFRhc2tJ
bXBsKGluc3RhbmNlLCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKLSAgICB9Ci0K
LXByaXZhdGU6CiAgICAgRmlsZVRocmVhZFRhc2syKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9k
LCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCiAgICAgICAgIDogRmlsZVRo
cmVhZDo6VGFzayhpbnN0YW5jZSkKICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCkBAIC0xMTgs
NiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzaygpCiAgICAgewogICAgICAgICAoKnN0YXRpY19jYXN0PFQqPihp
bnN0YW5jZSgpKS4qbV9tZXRob2QpKG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyKTsKQEAgLTEz
OCwxMiArMTIzLDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRU
YXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBlIFBhcmFtMjsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENy
b3NzVGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CiAKLSAgICBzdGF0aWMg
UGFzc093blB0cjxGaWxlVGhyZWFkVGFza0ltcGw+IGNyZWF0ZShUKiBpbnN0YW5jZSwgTWV0aG9k
IG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFy
YW1ldGVyMykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZVRocmVhZFRh
c2tJbXBsKGluc3RhbmNlLCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRl
cjMpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgRmlsZVRocmVhZFRhc2szKFQqIGluc3RhbmNl
LCBNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBh
cmFtMyBwYXJhbWV0ZXIzKQogICAgICAgICA6IEZpbGVUaHJlYWQ6OlRhc2soaW5zdGFuY2UpCiAg
ICAgICAgICwgbV9tZXRob2QobWV0aG9kKQpAQCAtMTUzLDYgKzEzMiw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKQog
ICAgIHsKICAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKSht
X3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsKQEAgLTE2Niw0MCArMTQ2
LDQwIEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotUGFzc093blB0cjxG
aWxlVGhyZWFkOjpUYXNrPiBjcmVhdGVGaWxlVGhyZWFkVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxG
aWxlVGhyZWFkOjpUYXNrPiBjcmVhdGVGaWxlVGhyZWFkVGFzaygKICAgICBUKiBjb25zdCBjYWxs
ZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoKSk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1Q
YXNzT3duUHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAorc3RkOjp1
bmlxdWVfcHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAogICAgIFQq
IGNvbnN0IGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKSgpKQogewotICAgIHJldHVybiBG
aWxlVGhyZWFkVGFzazA8VD46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlVGhyZWFkVGFzazA8VD4+KAogICAgICAgICBjYWxsZWUsCiAgICAgICAgIG1ldGhvZCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1QYXNz
T3duUHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAorc3RkOjp1bmlx
dWVfcHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0ZUZpbGVUaHJlYWRUYXNrKAogICAgIFQqIGNv
bnN0IGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEpLAogICAgIGNvbnN0IFAxJiBw
YXJhbWV0ZXIxKQogewotICAgIHJldHVybiBGaWxlVGhyZWFkVGFzazE8VCwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDE+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RmlsZVRocmVhZFRhc2sxPFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAxPjo6VHlwZSwgTVAxPj4oCiAgICAgICAgIGNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAg
ICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgTVAyPgotUGFzc093blB0cjxGaWxlVGhyZWFkOjpUYXNrPiBjcmVhdGVGaWxlVGhy
ZWFkVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxGaWxlVGhyZWFkOjpUYXNrPiBjcmVhdGVGaWxlVGhy
ZWFkVGFzaygKICAgICBUKiBjb25zdCBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAx
LCBNUDIpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0
ZXIyKQogewotICAgIHJldHVybiBGaWxlVGhyZWFkVGFzazI8VCwgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6
VHlwZSwgTVAyPjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVUaHJl
YWRUYXNrMjxULCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+PigKICAgICAgICAgY2FsbGVl
LAogICAgICAgICBtZXRob2QsCiAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShw
YXJhbWV0ZXIxKSwKQEAgLTIwNywxNCArMTg3LDE0IEBAIFBhc3NPd25QdHI8RmlsZVRocmVhZDo6
VGFzaz4gY3JlYXRlRmlsZVRocmVhZFRhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVu
YW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1QYXNzT3duUHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0
ZUZpbGVUaHJlYWRUYXNrKAorc3RkOjp1bmlxdWVfcHRyPEZpbGVUaHJlYWQ6OlRhc2s+IGNyZWF0
ZUZpbGVUaHJlYWRUYXNrKAogICAgIFQqIGNvbnN0IGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0
aG9kKShNUDEsIE1QMiwgTVAzKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25z
dCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICByZXR1
cm4gRmlsZVRocmVhZFRhc2szPFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlw
ZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDM+OjpjcmVhdGUoCisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVRocmVhZFRhc2szPFQsIHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5
cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDM+PigKICAg
ICAgICAgY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIENyb3NzVGhyZWFkQ29waWVy
PFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuY3BwCmluZGV4IDk2MDJiMmU2MzRmNmEzZDRmMDlkYTE4ODM3MGQxYjAxYzk3OThhN2UuLjVk
NzNiYWM3ODQ5M2FmZDNmYTViNDk0YTljMjg2NWMzM2ZlNGE2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VU
aHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgd2hpbGUgKE93blB0cjxGdW5jdGlvbjx2b2lkICgpPiA+IGZ1bmN0aW9uID0gbV9x
dWV1ZS53YWl0Rm9yTWVzc2FnZSgpKSB7CisgICAgd2hpbGUgKGF1dG8gZnVuY3Rpb24gPSBtX3F1
ZXVlLndhaXRGb3JNZXNzYWdlKCkpIHsKICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CiAg
ICAgICAgICgqZnVuY3Rpb24pKCk7CiAgICAgfQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFN0b3Jh
Z2VUaHJlYWQ6OmRpc3BhdGNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQo
KSAmJiBtX3RocmVhZElEKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChhZG9wdFB0cihuZXcgRnVuY3Rp
b248dm9pZCAoKT4oZnVuY3Rpb24pKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhy
ZWFkOjp0ZXJtaW5hdGUoKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRl
cm1pbmF0ZSgpCiAgICAgaWYgKCFtX3RocmVhZElEKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3F1ZXVlLmFwcGVuZChhZG9wdFB0cihuZXcgRnVuY3Rpb248dm9pZCAoKT4oKGJpbmQoJlN0b3Jh
Z2VUaHJlYWQ6OnBlcmZvcm1UZXJtaW5hdGUsIHRoaXMpKSkpKTsKKyAgICBtX3F1ZXVlLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihiaW5kKCZTdG9yYWdlVGhyZWFk
OjpwZXJmb3JtVGVybWluYXRlLCB0aGlzKSkpOwogICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9u
KG1fdGhyZWFkSUQpOwogICAgIEFTU0VSVChtX3F1ZXVlLmtpbGxlZCgpKTsKICAgICBtX3RocmVh
ZElEID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGZj
YzJjMDU1YjNhN2IwNGIwYWE3OTM3NjY2OTUzYjFjMTY4OGE4MDMuLmY0YTJlZmM4NjM3ZDYyZmUy
MDY2N2MzYzFjZDAwOGY5NjgyNDMwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcApAQCAtNzgsOSArNzgsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Rl
ZmF1bHRNb2RlOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBPd25QdHI8V29y
a2VyUnVuTG9vcDo6VGFzaz4mIHRhc2spIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0
IFdvcmtlclJ1bkxvb3A6OlRhc2smIHRhc2spIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9kZWZhdWx0TW9kZSB8fCBtX21vZGUgPT0gdGFzay0+bW9kZSgpOworICAgICAgICByZXR1cm4g
bV9kZWZhdWx0TW9kZSB8fCBtX21vZGUgPT0gdGFzay5tb2RlKCk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTU1LDcgKzE1NSw3IEBAIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9v
cDo6cnVuSW5Nb2RlKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zCiAgICAgaWYgKHdh
aXRNb2RlID09IFdhaXRGb3JNZXNzYWdlKQogICAgICAgICBhYnNvbHV0ZVRpbWUgPSAocHJlZGlj
YXRlLmlzRGVmYXVsdE1vZGUoKSAmJiBtX3NoYXJlZFRpbWVyLT5pc0FjdGl2ZSgpKSA/IG1fc2hh
cmVkVGltZXItPmZpcmVUaW1lKCkgOiBNZXNzYWdlUXVldWU8VGFzaz46OmluZmluaXRlVGltZSgp
OwogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwotICAgIE93blB0cjxXb3JrZXJS
dW5Mb29wOjpUYXNrPiB0YXNrID0gbV9tZXNzYWdlUXVldWUud2FpdEZvck1lc3NhZ2VGaWx0ZXJl
ZFdpdGhUaW1lb3V0KHJlc3VsdCwgcHJlZGljYXRlLCBhYnNvbHV0ZVRpbWUpOworICAgIGF1dG8g
dGFzayA9IG1fbWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlRmlsdGVyZWRXaXRoVGltZW91dChy
ZXN1bHQsIHByZWRpY2F0ZSwgYWJzb2x1dGVUaW1lKTsKIAogICAgIC8vIElmIHRoZSBjb250ZXh0
IGlzIGNsb3NpbmcsIGRvbid0IGV4ZWN1dGUgYW55IGZ1cnRoZXIgSmF2YVNjcmlwdCB0YXNrcyAo
cGVyIHNlY3Rpb24gNC4xLjEgb2YgdGhlIFdlYiBXb3JrZXJzIHNwZWMpLiAgSG93ZXZlciwgdGhl
cmUgbWF5IGJlIGltcGxlbWVudGF0aW9uIGNsZWFudXAgdGFza3MgaW4gdGhlIHF1ZXVlLCBzbyBr
ZWVwIHJ1bm5pbmcgdGhyb3VnaCBpdC4KIApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV29ya2Vy
UnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0KQogICAg
IEFTU0VSVChtX21lc3NhZ2VRdWV1ZS5raWxsZWQoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICBPd25QdHI8V29ya2VyUnVuTG9vcDo6VGFzaz4gdGFzayA9IG1fbWVzc2FnZVF1ZXVl
LnRyeUdldE1lc3NhZ2VJZ25vcmluZ0tpbGxlZCgpOworICAgICAgICBhdXRvIHRhc2sgPSBtX21l
c3NhZ2VRdWV1ZS50cnlHZXRNZXNzYWdlSWdub3JpbmdLaWxsZWQoKTsKICAgICAgICAgaWYgKCF0
YXNrKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygqdGhp
cywgY29udGV4dCk7CkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFza0Zvck1vZGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXMK
ICAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3JlYXRlKHRhc2ssIG1vZGUuaXNvbGF0
ZWRDb3B5KCkpKTsKIH0KIAotUGFzc093blB0cjxXb3JrZXJSdW5Mb29wOjpUYXNrPiBXb3JrZXJS
dW5Mb29wOjpUYXNrOjpjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyUnVu
TG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRlKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgVGFzayh0YXNrLCBtb2RlKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxUYXNrPihuZXcgVGFzayh0YXNrLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2Vy
UnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmgKaW5kZXggOTM5ZWY3NGFiYjQ4ZTVhZDM2N2ViYmE0NGE0OTVmOWUzYzExNjU5
OC4uM2RlZTVhNTNmMWRhMjVmOTdjNTIyYzViNjRjZTlhNjYzM2M3NjRjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKQEAgLTcxLDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBjbGFzcyBUYXNrIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRhc2spOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgot
ICAgICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAg
ICAgICAgICB+VGFzaygpIHsgfQogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgICAgICB2b2lkIHBlcmZvcm1UYXNrKGNvbnN0
IFdvcmtlclJ1bkxvb3AmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cg==
</data>
<flag name="review"
          id="235840"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>