<?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>179503</bug_id>
          
          <creation_ts>2017-11-09 12:02:00 -0800</creation_ts>
          <short_desc>Make CachedResource::redirectReceived asynchronous</short_desc>
          <delta_ts>2017-11-15 09:37:48 -0800</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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1369999</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-09 12:02:00 -0800</bug_when>
    <thetext>Make CachedResource::redirectReceived asynchronous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370001</commentid>
    <comment_count>1</comment_count>
      <attachid>326475</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-09 12:04:56 -0800</bug_when>
    <thetext>Created attachment 326475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370015</commentid>
    <comment_count>2</comment_count>
      <attachid>326479</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-09 12:55:17 -0800</bug_when>
    <thetext>Created attachment 326479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370415</commentid>
    <comment_count>3</comment_count>
      <attachid>326479</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-11-10 10:55:12 -0800</bug_when>
    <thetext>Comment on attachment 326479
Patch

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

&gt; Source/WebCore/loader/SubresourceLoader.cpp:186
&gt; +    auto callSuper = [this, protectedThis = makeRef(*this), redirectResponse] (CompletionHandler&lt;void(ResourceRequest&amp;&amp;)&gt;&amp;&amp; completionHandler, ResourceRequest&amp;&amp; newRequest) mutable {

&quot;callSuper&quot; is not a great name. Can you name this with something that describes what it is actually trying to accomplish?

&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:119
&gt; +static void iterate(CachedResourceHandle&lt;CachedRawResource&gt;&amp;&amp; handle, CachedRawResourceClient&amp; client, Vector&lt;std::pair&lt;ResourceRequest, ResourceResponse&gt;&gt;&amp;&amp; redirectsInReverseOrder, CompletionHandler&lt;void(ResourceRequest&amp;&amp;)&gt;&amp;&amp; completionHandler)

iterate over what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370427</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-10 11:24:13 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; &quot;callSuper&quot; is not a great name. Can you name this with something that
&gt; describes what it is actually trying to accomplish?
I renamed this to continueWillSendRequest.

&gt; iterate over what?
I renamed these to iterateClients and iterateRedirects.

http://trac.webkit.org/r224699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371921</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:37:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562097&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326475</attachid>
            <date>2017-11-09 12:04:56 -0800</date>
            <delta_ts>2017-11-09 12:55:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179503-20171109120455.patch</filename>
            <type>text/plain</type>
            <size>28385</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTExLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBDYWNo
ZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCBhc3luY2hyb25vdXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTUwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIHdlcmUgYSBmZXcgbG9vcHMg
d2hlcmUgd2UgY2FsbGVkIHJlZGlyZWN0UmVjZWl2ZWQgbWFueSB0aW1lcyBpbiBhIHJvdywKKyAg
ICAgICAgYW5kIHRoZXNlIGFyZSByZXBsYWNlZCB3aXRoIGEgY29tcGxldGlvbiBoYW5kbGVyIHRo
YXQgcmVjdXJzaXZlbHkgY2FsbHMgdGhlIG5leHQKKyAgICAgICAgcmVkaXJlY3RSZWNlaXZlZCBv
ciB0aGUgY29kZSBhZnRlciB0aGUgbG9vcC4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNl
dExhc3RDaGVja2VkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAg
KiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oml0ZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6cmVkaXJlY3RSZWNl
aXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2Vp
dmVkKToKKwogMjAxNy0xMS0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSYXdSZXNvdXJjZSBzaG91bGQg
bm90IGFzc2VydCB3aGVuIGRlc3RpbmF0aW9uIGlzIHNldCBpbiB0aGUgY29udGV4dCBvZiBhIHNl
cnZpY2Ugd29ya2VyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAJKHJldmlzaW9uIDIyNDUyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NywxMCArNDY3LDExIEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXQKICAgICAgICAgc3RhcnREYXRhTG9hZFRpbWVy
KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIERvY3VtZW50TG9hZGVyOjpyZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNl
KTsKICAgICB3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjI0NTIyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgdHJpZ2dlcmluZ0FjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcmluZ0FjdGlvbjsgfQogICAgIHZvaWQgc2V0VHJp
Z2dlcmluZ0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgdm9pZCBzZXRPdmVy
cmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpIHsgbV9vdmVycmlkZUVuY29kaW5n
ID0gZW5jb2Rpbmc7IH0KLSAgICB2b2lkIHNldExhc3RDaGVja2VkUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsgbV9sYXN0Q2hlY2tlZFJlcXVlc3QgPSByZXF1ZXN0OyB9
CisgICAgdm9pZCBzZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkgeyBtX2xhc3RDaGVja2VkUmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7IH0KICAgICBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGxhc3RDaGVja2VkUmVxdWVzdCgpICB7IHJldHVybiBtX2xhc3RD
aGVja2VkUmVxdWVzdDsgfQogCiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CkBA
IC0zMjcsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoKTsKICAgICB2b2lkIG1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyNDUyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNs
ZWFyUmVzbwogICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
LXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKQEAgLTI0OCwxOCArMjQ4LDE4IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFIKICAgICBpZiAoIXJlcXVlc3Qu
dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIG1fb3B0aW9ucy5pbml0aWF0b3IgPT0g
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKSB7CiAgICAgICAgIHJlcG9y
dFJlZGlyZWN0aW9uV2l0aEJhZFNjaGVtZShyZXF1ZXN0LnVybCgpKTsKICAgICAgICAgY2xlYXJS
ZXNvdXJjZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB9CiAKICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29u
dGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2UuaXNOdWxs
KCkgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8g
OiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVzKSkg
ewogICAgICAgICByZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lFcnJvcihyZWRpcmVjdFJlc3Bv
bnNlLnVybCgpKTsKICAgICAgICAgY2xlYXJSZXNvdXJjZSgpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB9
CiAKICAgICAvLyBBbGxvdyBzYW1lIG9yaWdpbiByZXF1ZXN0cyB0byBjb250aW51ZSBhZnRlciBh
bGxvd2luZyBjbGllbnRzIHRvIGF1ZGl0IHRoZSByZWRpcmVjdC4KICAgICBpZiAoaXNBbGxvd2Vk
UmVkaXJlY3QocmVxdWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogCiAgICAgLy8gRm9yY2UgYW55
IHN1YnNlcXVlbnQgcmVxdWVzdCB0byB1c2UgdGhlc2UgY2hlY2tzLgogICAgIG1fc2FtZU9yaWdp
blJlcXVlc3QgPSBmYWxzZTsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6cmVkaXJlY3RSCiAgICAgLy8gRXhjZXB0IGluIGNhc2Ugd2hlcmUgcHJlZmxp
Z2h0IGlzIG5lZWRlZCwgbG9hZGluZyBzaG91bGQgYmUgYWJsZSB0byBjb250aW51ZSBvbiBpdHMg
b3duLgogICAgIC8vIEJ1dCB3ZSBhbHNvIGhhbmRsZSBjcmVkZW50aWFscyBoZXJlIGlmIGl0IGlz
IHJlc3RyaWN0ZWQgdG8gU2FtZU9yaWdpbi4KICAgICBpZiAobV9vcHRpb25zLmNyZWRlbnRpYWxz
ICE9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW4gJiYgbV9zaW1wbGVSZXF1
ZXN0ICYmIGlzU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KHJlcXVlc3QuaHR0cE1ldGhv
ZCgpLCAqbV9vcmlnaW5hbEhlYWRlcnMpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIAogICAgIG1fb3B0aW9ucy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZTsKIApAQCAtMjg5LDYgKzI4OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpy
ZWRpcmVjdFIKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMoKm1fb3JpZ2luYWxIZWFk
ZXJzKTsKIAogICAgIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0K
IAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFTZW50KENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDIyNDUyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODMsNyArODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGF0
YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICAgICAgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwogICAgICAgICB2b2lk
IGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25zdCBSZXNvdXJjZVRpbWluZyYpOwogICAg
ICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyMjQ1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCwxMyArMTc0LDE1IEBAIGJvb2wgTWVkaWFSZXNv
dXJjZTo6c2hvdWxkQ2FjaGVSZXNwb25zZSgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBN
ZWRpYVJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5yZWRp
cmVjdFJlY2VpdmVkKCp0aGlzLCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAgICAgIG1fY2xpZW50
LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNl
bnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMjQ1MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjI0NTIyKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWMKICAgICAvLyBUaGlzIGF2b2lkcyBjb25mdXNpb24gb24gdGhlIHBhcnQgb2YgdGhlIGNsaWVu
dC4KICAgICBpZiAoZXF1YWxJZ25vcmluZ0hlYWRlckZpZWxkcyhyZXF1ZXN0LCBsb2FkZXItPmxh
c3RDaGVja2VkUmVxdWVzdCgpKSB8fCAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwo
KS5pc0VtcHR5KCkpKSB7CiAgICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIG51bGxwdHIsIHRydWUp
OwotICAgICAgICBsb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAg
ICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOworICAgIGxvYWRl
ci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSk7CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBBbHdheXMgYWxsb3cgUXVpY2tMb29rLWdlbmVyYXRl
ZCBVUkxzIGJhc2VkIG9uIHRoZSBwcm90b2NvbCBzY2hlbWUuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyNDUyMikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4Myw2ICsxODMsMjUgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SQogICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3Vy
Y2VMb2FkaW5nKG1fZnJhbWUuZ2V0KCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwog
ICAgIH0KIAorICAgIGF1dG8gY2FsbFN1cGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVkaXJlY3RSZXNwb25zZV0gKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwg
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKKworICAgICAgICBSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWwoV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVkaXJlY3RSZXNwb25zZV0gKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHJlYWNoZWRU
ZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkg
eworICAgICAgICAgICAgICAgIGNhbmNlbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291
cmNlICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIG1fZG9j
dW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHJl
cXVlc3QpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
CisgICAgICAgIH0pOworICAgIH07CisKICAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkp
OwogICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewogICAgICAgICBpZiAob3B0
aW9ucygpLnJlZGlyZWN0ICE9IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdykgewpAQCAt
MjM0LDI1ICsyNTMsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
SQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVz
dCkpOwogICAgICAgICB9CiAgICAgICAgIG1fbG9hZFRpbWluZy5hZGRSZWRpcmVjdChyZWRpcmVj
dFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+
cmVkaXJlY3RSZWNlaXZlZChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAg
bV9yZXNvdXJjZS0+cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVj
dFJlc3BvbnNlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgY2FsbFN1cGVyID0gV1RGTW92ZShjYWxsU3VwZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsU3VwZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpIHx8IHJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1Jl
cXVlc3QpKTsKLQotICAgIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChX
VEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCByZWRpcmVjdFJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAgICAgICAK
LSAgICAgICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNhbmNlbCgpOwot
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgpID09IENh
Y2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkp
Ci0gICAgICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT53aWxsQ29udGludWVNYWluUmVzb3VyY2VM
b2FkQWZ0ZXJSZWRpcmVjdChyZXF1ZXN0KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXF1ZXN0KSk7Ci0gICAgfSk7CisgICAgY2FsbFN1cGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIAogdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkocmV2aXNpb24gMjI0NTIyKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVy
LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTUsNDIgKzExNiw0
OSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0CiAgICAgICAgIGMt
PmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKIH0KIAorc3RhdGljIHZvaWQgaXRl
cmF0ZShDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50JiBjbGllbnQsIFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VS
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlPj4mJiByZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFoYW5kbGUtPmhhc0NsaWVudChjbGllbnQpIHx8IHJlZGlyZWN0c0lu
UmV2ZXJzZU9yZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CisgICAgYXV0byByZWRpcmVjdFBhaXIgPSByZWRpcmVjdHNJblJldmVyc2VPcmRlci50
YWtlTGFzdCgpOworICAgIGNsaWVudC5yZWRpcmVjdFJlY2VpdmVkKCpoYW5kbGUsIFdURk1vdmUo
cmVkaXJlY3RQYWlyLmZpcnN0KSwgV1RGTW92ZShyZWRpcmVjdFBhaXIuc2Vjb25kKSwgW2hhbmRs
ZSA9IFdURk1vdmUoaGFuZGxlKSwgY2xpZW50LCByZWRpcmVjdHNJblJldmVyc2VPcmRlciA9IFdU
Rk1vdmUocmVkaXJlY3RzSW5SZXZlcnNlT3JkZXIpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYpIG11dGFibGUgeworICAg
ICAgICAvLyBJZ25vcmUgdGhlIG5ldyByZXF1ZXN0IGJlY2F1c2Ugd2UgY2FuJ3QgZG8gYW55dGhp
bmcgd2l0aCBpdC4KKyAgICAgICAgLy8gV2UncmUganVzdCByZXBseWluZyBhIHJlZGlyZWN0IGNo
YWluIHRoYXQgaGFzIGFscmVhZHkgaGFwcGVuZWQuCisgICAgICAgIGl0ZXJhdGUoV1RGTW92ZSho
YW5kbGUpLCBjbGllbnQsIFdURk1vdmUocmVkaXJlY3RzSW5SZXZlcnNlT3JkZXIpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykKIHsKLSAgICBpZiAoIWhh
c0NsaWVudChjKSkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIFRoZSBjYWxscyB0byB0aGUgY2xp
ZW50IGNhbiByZXN1bHQgaW4gZXZlbnRzIHJ1bm5pbmcsIHBvdGVudGlhbGx5IGNhdXNpbmcKLSAg
ICAvLyB0aGlzIHJlc291cmNlIHRvIGJlIGV2aWN0ZWQgZnJvbSB0aGUgY2FjaGUgYW5kIGFsbCBj
bGllbnRzIHRvIGJlIHJlbW92ZWQsCi0gICAgLy8gc28gYSBwcm90ZWN0b3IgaXMgbmVjZXNzYXJ5
LgotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50JiBjbGllbnQgPSBzdGF0aWNf
Y2FzdDxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCY+KGMpOwogICAgIHNpemVfdCByZWRpcmVjdENv
dW50ID0gbV9yZWRpcmVjdENoYWluLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlZGlyZWN0Q291bnQ7IGkrKykgewotICAgICAgICBSZWRpcmVjdFBhaXIgcmVkaXJlY3QgPSBt
X3JlZGlyZWN0Q2hhaW5baV07Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlZGly
ZWN0Lm1fcmVxdWVzdCk7Ci0gICAgICAgIGNsaWVudC5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBy
ZXF1ZXN0LCByZWRpcmVjdC5tX3JlZGlyZWN0UmVzcG9uc2UpOwotICAgICAgICBpZiAoIWhhc0Ns
aWVudChjKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlc291
cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZT4+IHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyOwor
ICAgIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVkaXJl
Y3RDb3VudCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWRpcmVjdENvdW50OyArK2kp
IHsKKyAgICAgICAgY29uc3QgYXV0byYgcGFpciA9IG1fcmVkaXJlY3RDaGFpbltyZWRpcmVjdENv
dW50IC0gaSAtIDFdOworICAgICAgICByZWRpcmVjdHNJblJldmVyc2VPcmRlci51bmNoZWNrZWRB
cHBlbmQoc3RkOjptYWtlX3BhaXIocGFpci5tX3JlcXVlc3QsIHBhaXIubV9yZWRpcmVjdFJlc3Bv
bnNlKSk7CiAgICAgfQotICAgIEFTU0VSVChyZWRpcmVjdENvdW50ID09IG1fcmVkaXJlY3RDaGFp
bi5zaXplKCkpOwotCi0gICAgaWYgKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9yZXNwb25zZSk7Ci0gICAgICAgIGlmICh2YWxpZGF0
aW9uQ29tcGxldGluZygpKQotICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNl
UmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGVBZnRlclZhbGlkYXRpb24pOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIEFTU0VSVCghdmFsaWRhdGlvbkluUHJvZ3Jlc3MoKSk7Ci0gICAg
ICAgICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1v
cnlDYWNoZSk7CisgICAgaXRlcmF0ZShDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4odGhpcyksIGNsaWVudCwgV1RGTW92ZShyZWRpcmVjdHNJblJldmVyc2VPcmRlciksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHRoaXMpLCBjbGllbnQgPSAmY2xpZW50XSAoUmVzb3VyY2VSZXF1ZXN0JiYpIG11dGFibGUg
eworICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVzcG9uc2UpOworICAgICAgICAgICAgaWYgKHZhbGlkYXRp
b25Db21wbGV0aW5nKCkpCisgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291
cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGVBZnRlclZhbGlkYXRpb24pOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF2YWxpZGF0aW9uSW5Qcm9ncmVz
cygpKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25z
ZTo6U291cmNlOjpNZW1vcnlDYWNoZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbGll
bnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlKTsKICAgICAgICAgfQotICAgICAg
ICBjbGllbnQucmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UpOwotICAgIH0KLSAgICBp
ZiAoIWhhc0NsaWVudChjKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2RhdGEpCi0gICAg
ICAgIGNsaWVudC5kYXRhUmVjZWl2ZWQoKnRoaXMsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSk7Ci0gICAgaWYgKCFoYXNDbGllbnQoYykpCi0gICAgICAgcmV0dXJuOwotICAgIENhY2hl
ZFJlc291cmNlOjpkaWRBZGRDbGllbnQoY2xpZW50KTsKKyAgICAgICAgaWYgKCFoYXNDbGllbnQo
KmNsaWVudCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX2RhdGEpCisgICAg
ICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgbV9kYXRhLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoKmNsaWVudCk7
CisgICAgfSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFsbENsaWVudHNSZW1vdmVk
KCkKQEAgLTE1OSwxNiArMTY3LDI3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFsbENsaWVu
dHNSZW1vdmUKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbElmTm90RmluaXNoaW5nKCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3N0YXRpYyB2b2lk
IGl0ZXJhdGUoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQ+JiYgd2Fsa2VyLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBo
YW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZVJlc3BvbnNlPiYmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAoIXJlc3Bv
bnNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7Ci0gICAgICAgIHdoaWxlIChDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICAgICAgYy0+cmVkaXJlY3RS
ZWNlaXZlZCgqdGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpOworICAgIGF1dG8gY2xpZW50ID0gd2Fs
a2VyLm5leHQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlUmVmZXJlbmNlID0gKnJlc3BvbnNlOworICAgIGNsaWVudC0+cmVkaXJlY3RSZWNlaXZl
ZCgqaGFuZGxlLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZVJlZmVyZW5jZSwgW3dhbGtlciA9
IFdURk1vdmUod2Fsa2VyKSwgaGFuZGxlID0gV1RGTW92ZShoYW5kbGUpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgIGl0
ZXJhdGUoV1RGTW92ZSh3YWxrZXIpLCBXVEZNb3ZlKGhhbmRsZSksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6
OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlIHsKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFw
cGVuZChSZWRpcmVjdFBhaXIocmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICAgICAgaXRlcmF0ZShD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4obV9jbGll
bnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3BvbnNl
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVl
c3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9KTsK
ICAgICB9Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQocmVxdWVzdCwgcmVz
cG9uc2UpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHJldmlzaW9uIDIyNDUyMikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVI
VFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCShyZXZpc2lvbiAyMjQ1MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
Y2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KICNpZiBVU0UoU09VUCkKICAg
ICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSYsIHNp
emVfdCAvKiByZXF1ZXN0ZWRTaXplICovLCBzaXplX3QmIC8qIGFjdHVhbFNpemUgKi8pIHsgcmV0
dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMjI0NTIyKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUzLDEzICs0
NTMsMTQgQEAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBDYWNoZWRSZXNvdXJjZQogICAgIHJl
dHVybiBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jl
c3BvbnNlVGltZXN0YW1wKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNl
aXZlZChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA9IHRydWU7CiAgICAgaWYgKHJlc3BvbnNl
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIAogICAgIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMo
bV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMsIHJlc3BvbnNlKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0UmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjI0NTIyKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAKICAgICBTaGFyZWRCdWZmZXIqIHJl
c291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dm9pZCBzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjI0NTIyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIHsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQkocmV2aXNpb24gMjI0NTIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQg
IlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtMzQ5LDcgKzM1MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
Y2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7CkBAIC0zODEsOSAr
MzgyLDEwIEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjoKICAgICBb
bV90YXNrIHJlc291cmNlOnJlc291cmNlIHJlY2VpdmVkRGF0YTpkYXRhIGxlbmd0aDpsZW5ndGhd
OwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFttX3Rhc2sgcmVzb3VyY2U6
cmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDpyZXNwb25zZSByZXF1ZXN0OnJlcXVlc3RdOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326479</attachid>
            <date>2017-11-09 12:55:17 -0800</date>
            <delta_ts>2017-11-10 10:55:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179503-20171109125516.patch</filename>
            <type>text/plain</type>
            <size>28393</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTExLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBDYWNo
ZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCBhc3luY2hyb25vdXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTUwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIHdlcmUgYSBmZXcgbG9vcHMg
d2hlcmUgd2UgY2FsbGVkIHJlZGlyZWN0UmVjZWl2ZWQgbWFueSB0aW1lcyBpbiBhIHJvdywKKyAg
ICAgICAgYW5kIHRoZXNlIGFyZSByZXBsYWNlZCB3aXRoIGEgY29tcGxldGlvbiBoYW5kbGVyIHRo
YXQgcmVjdXJzaXZlbHkgY2FsbHMgdGhlIG5leHQKKyAgICAgICAgcmVkaXJlY3RSZWNlaXZlZCBv
ciB0aGUgY29kZSBhZnRlciB0aGUgbG9vcC4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNl
dExhc3RDaGVja2VkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAg
KiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oml0ZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6cmVkaXJlY3RSZWNl
aXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2Vp
dmVkKToKKwogMjAxNy0xMS0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSYXdSZXNvdXJjZSBzaG91bGQg
bm90IGFzc2VydCB3aGVuIGRlc3RpbmF0aW9uIGlzIHNldCBpbiB0aGUgY29udGV4dCBvZiBhIHNl
cnZpY2Ugd29ya2VyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAJKHJldmlzaW9uIDIyNDUyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NywxMCArNDY3LDExIEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXQKICAgICAgICAgc3RhcnREYXRhTG9hZFRpbWVy
KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIERvY3VtZW50TG9hZGVyOjpyZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNl
KTsKICAgICB3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjI0NTIyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgdHJpZ2dlcmluZ0FjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcmluZ0FjdGlvbjsgfQogICAgIHZvaWQgc2V0VHJp
Z2dlcmluZ0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgdm9pZCBzZXRPdmVy
cmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpIHsgbV9vdmVycmlkZUVuY29kaW5n
ID0gZW5jb2Rpbmc7IH0KLSAgICB2b2lkIHNldExhc3RDaGVja2VkUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsgbV9sYXN0Q2hlY2tlZFJlcXVlc3QgPSByZXF1ZXN0OyB9
CisgICAgdm9pZCBzZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkgeyBtX2xhc3RDaGVja2VkUmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7IH0KICAgICBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGxhc3RDaGVja2VkUmVxdWVzdCgpICB7IHJldHVybiBtX2xhc3RD
aGVja2VkUmVxdWVzdDsgfQogCiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CkBA
IC0zMjcsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoKTsKICAgICB2b2lkIG1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyNDUyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNs
ZWFyUmVzbwogICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
LXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKQEAgLTI0OCwxOCArMjQ4LDE4IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFIKICAgICBpZiAoIXJlcXVlc3Qu
dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIG1fb3B0aW9ucy5pbml0aWF0b3IgPT0g
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKSB7CiAgICAgICAgIHJlcG9y
dFJlZGlyZWN0aW9uV2l0aEJhZFNjaGVtZShyZXF1ZXN0LnVybCgpKTsKICAgICAgICAgY2xlYXJS
ZXNvdXJjZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB9CiAKICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29u
dGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2UuaXNOdWxs
KCkgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8g
OiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVzKSkg
ewogICAgICAgICByZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lFcnJvcihyZWRpcmVjdFJlc3Bv
bnNlLnVybCgpKTsKICAgICAgICAgY2xlYXJSZXNvdXJjZSgpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB9
CiAKICAgICAvLyBBbGxvdyBzYW1lIG9yaWdpbiByZXF1ZXN0cyB0byBjb250aW51ZSBhZnRlciBh
bGxvd2luZyBjbGllbnRzIHRvIGF1ZGl0IHRoZSByZWRpcmVjdC4KICAgICBpZiAoaXNBbGxvd2Vk
UmVkaXJlY3QocmVxdWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogCiAgICAgLy8gRm9yY2UgYW55
IHN1YnNlcXVlbnQgcmVxdWVzdCB0byB1c2UgdGhlc2UgY2hlY2tzLgogICAgIG1fc2FtZU9yaWdp
blJlcXVlc3QgPSBmYWxzZTsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6cmVkaXJlY3RSCiAgICAgLy8gRXhjZXB0IGluIGNhc2Ugd2hlcmUgcHJlZmxp
Z2h0IGlzIG5lZWRlZCwgbG9hZGluZyBzaG91bGQgYmUgYWJsZSB0byBjb250aW51ZSBvbiBpdHMg
b3duLgogICAgIC8vIEJ1dCB3ZSBhbHNvIGhhbmRsZSBjcmVkZW50aWFscyBoZXJlIGlmIGl0IGlz
IHJlc3RyaWN0ZWQgdG8gU2FtZU9yaWdpbi4KICAgICBpZiAobV9vcHRpb25zLmNyZWRlbnRpYWxz
ICE9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW4gJiYgbV9zaW1wbGVSZXF1
ZXN0ICYmIGlzU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KHJlcXVlc3QuaHR0cE1ldGhv
ZCgpLCAqbV9vcmlnaW5hbEhlYWRlcnMpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIAogICAgIG1fb3B0aW9ucy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZTsKIApAQCAtMjg5LDYgKzI4OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpy
ZWRpcmVjdFIKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMoKm1fb3JpZ2luYWxIZWFk
ZXJzKTsKIAogICAgIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0K
IAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFTZW50KENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDIyNDUyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODMsNyArODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGF0
YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICAgICAgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwogICAgICAgICB2b2lk
IGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25zdCBSZXNvdXJjZVRpbWluZyYpOwogICAg
ICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyMjQ1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCwxMyArMTc0LDE1IEBAIGJvb2wgTWVkaWFSZXNv
dXJjZTo6c2hvdWxkQ2FjaGVSZXNwb25zZSgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBN
ZWRpYVJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5yZWRp
cmVjdFJlY2VpdmVkKCp0aGlzLCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAgICAgIG1fY2xpZW50
LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNl
bnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMjQ1MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjI0NTIyKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWMKICAgICAvLyBUaGlzIGF2b2lkcyBjb25mdXNpb24gb24gdGhlIHBhcnQgb2YgdGhlIGNsaWVu
dC4KICAgICBpZiAoZXF1YWxJZ25vcmluZ0hlYWRlckZpZWxkcyhyZXF1ZXN0LCBsb2FkZXItPmxh
c3RDaGVja2VkUmVxdWVzdCgpKSB8fCAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwo
KS5pc0VtcHR5KCkpKSB7CiAgICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIG51bGxwdHIsIHRydWUp
OwotICAgICAgICBsb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAg
ICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOworICAgIGxvYWRl
ci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSk7CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBBbHdheXMgYWxsb3cgUXVpY2tMb29rLWdlbmVyYXRl
ZCBVUkxzIGJhc2VkIG9uIHRoZSBwcm90b2NvbCBzY2hlbWUuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyNDUyMikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4Myw2ICsxODMsMjUgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SQogICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3Vy
Y2VMb2FkaW5nKG1fZnJhbWUuZ2V0KCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwog
ICAgIH0KIAorICAgIGF1dG8gY2FsbFN1cGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVkaXJlY3RSZXNwb25zZV0gKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwg
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKKworICAgICAgICBSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWwoV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZWRpcmVjdFJlc3BvbnNl
XSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0Lmlz
TnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY2FuY2VsKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpN
YWluUmVzb3VyY2UgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpCisgICAgICAgICAgICAg
ICAgbV9kb2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVk
aXJlY3QocmVxdWVzdCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgfSk7CisgICAgfTsKKwogICAgIEFTU0VSVCghbmV3UmVxdWVzdC5p
c051bGwoKSk7CiAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAg
IGlmIChvcHRpb25zKCkucmVkaXJlY3QgIT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9sbG93
KSB7CkBAIC0yMzQsMjUgKzI1MywxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3RJCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShu
ZXdSZXF1ZXN0KSk7CiAgICAgICAgIH0KICAgICAgICAgbV9sb2FkVGltaW5nLmFkZFJlZGlyZWN0
KHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIG5ld1JlcXVlc3QudXJsKCkpOwotICAgICAgICBtX3Jl
c291cmNlLT5yZWRpcmVjdFJlY2VpdmVkKG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgICAgICBtX3Jlc291cmNlLT5yZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUobmV3UmVxdWVzdCks
IHJlZGlyZWN0UmVzcG9uc2UsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBjYWxsU3VwZXIgPSBXVEZNb3ZlKGNhbGxTdXBlcildIChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxTdXBlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwgcmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUobmV3UmVxdWVzdCkpOwotCi0gICAgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdElu
dGVybmFsKFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHJlZGlyZWN0UmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7Ci0g
ICAgICAgIAotICAgICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgY2Fu
Y2VsKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChtX3Jlc291cmNlLT50eXBl
KCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSAmJiAhcmVkaXJlY3RSZXNwb25zZS5p
c051bGwoKSkKLSAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5S
ZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHJlcXVlc3QpOwotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICB9KTsKKyAgICBjYWxsU3VwZXIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUobmV3UmVxdWVzdCkpOwogfQogCiB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAy
MjQ1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRl
ck5hbWVzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3Vy
Y2VMb2FkZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExNSw0
MiArMTE2LDQ5IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXQKICAg
ICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBsZW5ndGgpOwogfQogCitzdGF0aWMg
dm9pZCBpdGVyYXRlKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhh
bmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxS
ZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9y
ZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhbmRsZS0+aGFzQ2xpZW50KGNsaWVudCkgfHwgcmVk
aXJlY3RzSW5SZXZlcnNlT3JkZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICBhdXRvIHJlZGlyZWN0UGFpciA9IHJlZGlyZWN0c0luUmV2ZXJz
ZU9yZGVyLnRha2VMYXN0KCk7CisgICAgY2xpZW50LnJlZGlyZWN0UmVjZWl2ZWQoKmhhbmRsZSwg
V1RGTW92ZShyZWRpcmVjdFBhaXIuZmlyc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UGFpci5zZWNvbmQp
LCBbaGFuZGxlID0gV1RGTW92ZShoYW5kbGUpLCBjbGllbnQsIHJlZGlyZWN0c0luUmV2ZXJzZU9y
ZGVyID0gV1RGTW92ZShyZWRpcmVjdHNJblJldmVyc2VPcmRlciksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJikgbXV0YWJs
ZSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgbmV3IHJlcXVlc3QgYmVjYXVzZSB3ZSBjYW4ndCBk
byBhbnl0aGluZyB3aXRoIGl0LgorICAgICAgICAvLyBXZSdyZSBqdXN0IHJlcGx5aW5nIGEgcmVk
aXJlY3QgY2hhaW4gdGhhdCBoYXMgYWxyZWFkeSBoYXBwZW5lZC4KKyAgICAgICAgaXRlcmF0ZShX
VEZNb3ZlKGhhbmRsZSksIGNsaWVudCwgV1RGTW92ZShyZWRpcmVjdHNJblJldmVyc2VPcmRlciks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjKQogewotICAg
IGlmICghaGFzQ2xpZW50KGMpKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gVGhlIGNhbGxzIHRv
IHRoZSBjbGllbnQgY2FuIHJlc3VsdCBpbiBldmVudHMgcnVubmluZywgcG90ZW50aWFsbHkgY2F1
c2luZwotICAgIC8vIHRoaXMgcmVzb3VyY2UgdG8gYmUgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBh
bmQgYWxsIGNsaWVudHMgdG8gYmUgcmVtb3ZlZCwKLSAgICAvLyBzbyBhIHByb3RlY3RvciBpcyBu
ZWNlc3NhcnkuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQmIGNsaWVudCA9
IHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50Jj4oYyk7CiAgICAgc2l6ZV90IHJl
ZGlyZWN0Q291bnQgPSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVkaXJlY3RDb3VudDsgaSsrKSB7Ci0gICAgICAgIFJlZGlyZWN0UGFpciByZWRp
cmVjdCA9IG1fcmVkaXJlY3RDaGFpbltpXTsKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QocmVkaXJlY3QubV9yZXF1ZXN0KTsKLSAgICAgICAgY2xpZW50LnJlZGlyZWN0UmVjZWl2ZWQo
KnRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0Lm1fcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAgIGlm
ICghaGFzQ2xpZW50KGMpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxzdGQ6OnBh
aXI8UmVzb3VyY2VSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlPj4gcmVkaXJlY3RzSW5SZXZlcnNl
T3JkZXI7CisgICAgcmVkaXJlY3RzSW5SZXZlcnNlT3JkZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZWRpcmVjdENvdW50KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZGlyZWN0Q291
bnQ7ICsraSkgeworICAgICAgICBjb25zdCBhdXRvJiBwYWlyID0gbV9yZWRpcmVjdENoYWluW3Jl
ZGlyZWN0Q291bnQgLSBpIC0gMV07CisgICAgICAgIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihwYWlyLm1fcmVxdWVzdCwgcGFpci5tX3JlZGly
ZWN0UmVzcG9uc2UpKTsKICAgICB9Ci0gICAgQVNTRVJUKHJlZGlyZWN0Q291bnQgPT0gbV9yZWRp
cmVjdENoYWluLnNpemUoKSk7Ci0KLSAgICBpZiAoIW1fcmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX3Jlc3BvbnNlKTsKLSAgICAgICAgaWYg
KHZhbGlkYXRpb25Db21wbGV0aW5nKCkpCi0gICAgICAgICAgICByZXNwb25zZS5zZXRTb3VyY2Uo
UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNoZUFmdGVyVmFsaWRhdGlvbik7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKCF2YWxpZGF0aW9uSW5Qcm9ncmVzcygp
KTsKLSAgICAgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3Vy
Y2U6Ok1lbW9yeUNhY2hlKTsKKyAgICBpdGVyYXRlKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPih0aGlzKSwgY2xpZW50LCBXVEZNb3ZlKHJlZGlyZWN0c0luUmV2ZXJzZU9y
ZGVyKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4odGhpcyksIGNsaWVudCA9ICZjbGllbnRdIChSZXNvdXJjZVJlcXVlc3QmJikg
bXV0YWJsZSB7CisgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAoIW1fcmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9yZXNwb25zZSk7CisgICAgICAgICAgICBpZiAo
dmFsaWRhdGlvbkNvbXBsZXRpbmcoKSkKKyAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTb3Vy
Y2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNoZUFmdGVyVmFsaWRhdGlvbik7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXZhbGlkYXRpb25J
blByb2dyZXNzKCkpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UpOwogICAgICAgICB9
Ci0gICAgICAgIGNsaWVudC5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSk7Ci0gICAg
fQotICAgIGlmICghaGFzQ2xpZW50KGMpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fZGF0
YSkKLSAgICAgICAgY2xpZW50LmRhdGFSZWNlaXZlZCgqdGhpcywgbV9kYXRhLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpKTsKLSAgICBpZiAoIWhhc0NsaWVudChjKSkKLSAgICAgICByZXR1cm47Ci0g
ICAgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChjbGllbnQpOworICAgICAgICBpZiAoIWhh
c0NsaWVudCgqY2xpZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fZGF0
YSkKKyAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCgq
Y2xpZW50KTsKKyAgICB9KTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6YWxsQ2xpZW50
c1JlbW92ZWQoKQpAQCAtMTU5LDE2ICsxNjcsMjcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
YWxsQ2xpZW50c1JlbW92ZQogICAgICAgICBtX2xvYWRlci0+Y2FuY2VsSWZOb3RGaW5pc2hpbmco
KTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorc3Rh
dGljIHZvaWQgaXRlcmF0ZShDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudD4mJiB3YWxrZXIsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiYmIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRy
PFJlc291cmNlUmVzcG9uc2U+JiYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlm
ICghcmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKLSAgICAgICAgd2hpbGUg
KENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgICAgICBjLT5y
ZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAgYXV0byBjbGll
bnQgPSB3YWxrZXIubmV4dCgpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2VSZWZlcmVuY2UgPSAqcmVzcG9uc2U7CisgICAgY2xpZW50LT5yZWRpcmVj
dFJlY2VpdmVkKCpoYW5kbGUsIFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlUmVmZXJlbmNlLCBb
d2Fsa2VyID0gV1RGTW92ZSh3YWxrZXIpLCBoYW5kbGUgPSBXVEZNb3ZlKGhhbmRsZSksIHJlc3Bv
bnNlID0gV1RGTW92ZShyZXNwb25zZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAg
ICAgICAgaXRlcmF0ZShXVEZNb3ZlKHdhbGtlciksIFdURk1vdmUoaGFuZGxlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICB9KTsKK30KKwordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICBDYWNoZWRS
ZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UgewogICAgICAgICBtX3JlZGlyZWN0
Q2hhaW4uYXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25zZSkpOworICAgICAgICBp
dGVyYXRlKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhp
cyksIFdURk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4o
cmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1v
dmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIH0pOwogICAgIH0KLSAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChyZXF1
ZXN0LCByZXNwb25zZSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkocmV2aXNpb24gMjI0
NTIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3Vs
ZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDIyNDUy
MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hl
UmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZFRpbWluZ0Zvcldvcmtlckxv
YWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYpIHsgfQogI2lmIFVTRShT
T1VQKQogICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291
cmNlJiwgc2l6ZV90IC8qIHJlcXVlc3RlZFNpemUgKi8sIHNpemVfdCYgLyogYWN0dWFsU2l6ZSAq
LykgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAyMjQ1MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NTMsMTMgKzQ1MywxNCBAQCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIENhY2hlZFJlc291cmNl
CiAgICAgcmV0dXJuIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9u
c2UsIG1fcmVzcG9uc2VUaW1lc3RhbXApOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpyZWRp
cmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgbV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyID0gdHJ1ZTsKICAgICBpZiAo
cmVzcG9uc2UuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogCiAgICAgdXBkYXRlUmVkaXJlY3RDaGFp
blN0YXR1cyhtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgcmVzcG9uc2UpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNl
OjpzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAy
MjQ1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKIAogICAgIFNoYXJlZEJ1
ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZENhY2hlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMjQ1MjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25n
LCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgeyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCShyZXZpc2lvbiAyMjQ1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgog
I2ltcG9ydCAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJTdWJyZXNv
dXJjZUxvYWRlci5oIgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zNDksNyArMzUwLDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSBvdmVycmlkZTsKQEAg
LTM4MSw5ICszODIsMTAgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OgogICAgIFttX3Rhc2sgcmVzb3VyY2U6cmVzb3VyY2UgcmVjZWl2ZWREYXRhOmRhdGEgbGVuZ3Ro
Omxlbmd0aF07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpy
ZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lk
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgW21fdGFzayBy
ZXNvdXJjZTpyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6cmVxdWVz
dF07CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQg
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWls
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCg==
</data>
<flag name="review"
          id="345794"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>