<?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>221639</bug_id>
          
          <creation_ts>2021-02-09 16:01:26 -0800</creation_ts>
          <short_desc>Use CompletionHandler instead of DataCallback</short_desc>
          <delta_ts>2021-02-18 15:59:22 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221672</see_also>
          <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>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727312</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 16:01:26 -0800</bug_when>
    <thetext>Use CompletionHandler instead of DataCallback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727313</commentid>
    <comment_count>1</comment_count>
      <attachid>419779</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 16:01:53 -0800</bug_when>
    <thetext>Created attachment 419779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727342</commentid>
    <comment_count>2</comment_count>
      <attachid>419786</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 16:57:20 -0800</bug_when>
    <thetext>Created attachment 419786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727357</commentid>
    <comment_count>3</comment_count>
      <attachid>419790</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 17:23:12 -0800</bug_when>
    <thetext>Created attachment 419790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727359</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-02-09 17:24:04 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727409</commentid>
    <comment_count>5</comment_count>
      <attachid>419809</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 20:50:35 -0800</bug_when>
    <thetext>Created attachment 419809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727416</commentid>
    <comment_count>6</comment_count>
      <attachid>419812</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 21:16:44 -0800</bug_when>
    <thetext>Created attachment 419812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727418</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 21:21:26 -0800</bug_when>
    <thetext>http://trac.webkit.org/r272636</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727419</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-09 21:22:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74174432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727523</commentid>
    <comment_count>9</comment_count>
      <attachid>419812</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-10 07:02:51 -0800</bug_when>
    <thetext>Comment on attachment 419812
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp:-351
&gt; -    if (error != CallbackBase::Error::None) {
&gt; -        // This fails when the page is closed or frame is destroyed, so we can just cancel the operation.
&gt; -        g_task_return_new_error(task, G_IO_ERROR, G_IO_ERROR_CANCELLED, _(&quot;Operation was cancelled&quot;));
&gt; -        return;
&gt; -    }

We need to bring this back to fix bug #221672. I think the equivalent now would be to just null check wkData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731064</commentid>
    <comment_count>10</comment_count>
      <attachid>419812</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-18 15:59:22 -0800</bug_when>
    <thetext>Comment on attachment 419812
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2523
&gt; +        completionHandler(wrapper(*data), nil);

This was a little optimistic.  See https://bugs.webkit.org/show_bug.cgi?id=222139</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419779</attachid>
            <date>2021-02-09 16:01:53 -0800</date>
            <delta_ts>2021-02-09 16:57:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221639-20210209160152.patch</filename>
            <type>text/plain</type>
            <size>34816</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcyYmIxZTE1ZmZlMzkzNmMw
MjAxNTJmMjIyZDAxMDQzYzVlYzNiMWUuLmY5NTkzZmRmYTYwYTQ4MDc0NGY3OTA5MTI2YjUyMTkz
ZmY1MmY3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDItMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgQ29tcGxl
dGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBEYXRhQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3Bw
OgorICAgICAgICAoV0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEpOgorICAgICAgICAoV0tGcmFt
ZUdldFJlc291cmNlRGF0YSk6CisgICAgICAgIChXS0ZyYW1lR2V0V2ViQXJjaGl2ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpnZXRXZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OmdldFJlc291cmNlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06Cisg
ICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNv
bmRhcnlUaHJlYWRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQgb2YgQ29t
cHV0ZWRQYWdlc0NhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUu
Y3BwCmluZGV4IDhlNGUxYTViN2JjMzViNWFlYTY0ZDg4YWEwNzA1YWYwY2NkNjYwZjMuLjdjMzk0
ZGNjYmMzODFkZDUyODZlY2Y3ZWE1NjQxZjM2NmQ2ZGNlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBAIC0xMzksMTUgKzEzOSwyMSBAQCBXS0ZyYW1lSW5m
b1JlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiAKIHZvaWQg
V0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZUdl
dFJlc291cmNlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRv
SW1wbChmcmFtZVJlZiktPmdldE1haW5SZXNvdXJjZURhdGEodG9HZW5lcmljQ2FsbGJhY2tGdW5j
dGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldE1haW5S
ZXNvdXJjZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAg
ICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJM
UmVmIHJlc291cmNlVVJMLCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ss
IHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0UmVzb3VyY2VEYXRh
KHRvSW1wbChyZXNvdXJjZVVSTCksIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwg
Y2FsbGJhY2spKTsKKyAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRSZXNvdXJjZURhdGEodG9JbXBs
KHJlc291cmNlVVJMKSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsK
IH0KIAogdm9pZCBXS0ZyYW1lR2V0V2ViQXJjaGl2ZShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0Zy
YW1lR2V0V2ViQXJjaGl2ZUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAg
IHRvSW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlv
bihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hp
dmUoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxi
YWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGQ3ZDBiZWZlYjAzMGY0OWMxNWJj
ZjY1ZDRhYzIwYzhhMzc1OGFmYTMuLjQyMDc2NDFkMTliMDkwYjFkZDhhMTFiZjI0NjlkNTc1Y2Jj
YzIxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjU2
OCw3ICsyNTY4LDkgQEAgdm9pZCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFn
ZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXQKIAogdm9pZCBXS1BhZ2VHZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHRvR2Vu
ZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAo
QVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRy
LCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxE
YXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0Fz
TUhUTUxEYXRhRnVuY3Rpb24gY2FsbGJhY2spCkBAIC0yNjU0LDcgKzI2NTYsOSBAQCB2b2lkIFdL
UGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1ByaW50SW5mbwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXS1BhZ2VEcmF3UGFn
ZXNUb1BERihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJp
bnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdLUGFnZURyYXdUb1BERkZ1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+ZHJh
d1BhZ2VzVG9QREYodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50
SW5mbyksIGZpcnN0LCBjb3VudCwgRGF0YUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsKKyAgICB0b0ltcGwocGFnZSktPmRyYXdQ
YWdlc1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludElu
Zm8pLCBmaXJzdCwgY291bnQsIFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkg
eworICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CisgICAg
fSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggZDk1MzM1OGU3YzE4NzMwNzNjZDJiZGUwMGUwMjVhODJkNGY4MGNk
YS4uMTYwNzRhNTJiN2E1MzFmNzVhMGNiNjBlZjFkZjVhNzkwNWQ5YWE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNDg2LDE1ICsx
NDg2LDggQEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRp
b25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UKIAogLSAodm9pZCljcmVhdGVXZWJBcmNo
aXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3Ig
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21w
bGV0aW9uSGFuZGxlciBjb3B5XSk7Ci0KLSAgICBfcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUo
X3BhZ2UtPm1haW5GcmFtZSgpLCBbaGFuZGxlcl0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyQmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopID0gKHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vy
cm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQaXBlIGEgcHJv
cGVyIGVycm9yIGluIGZyb20gdGhlIFdlYlBhZ2VQcm94eS4KLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyQmxvY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOnN0YXRpY19jYXN0PGludD4oZXJyb3IpIHVzZXJJbmZvOm5pbF0pOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sod3JhcHBlcigqZGF0YSks
IG5pbCk7CisgICAgX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKF9wYWdlLT5tYWluRnJhbWUo
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0o
QVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0
YSksIG5pbCk7CiAgICAgfSk7CiB9CiAKQEAgLTI1MzQsMTUgKzI1MjcsOCBAQCBzdGF0aWMgaW5s
aW5lIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1pbGVzdG9uZXMo
X1dLUmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cgogewotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHld
KTsKLQotICAgIF9wYWdlLT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShfcGFnZS0+bWFpbkZy
YW1lKCksIFtoYW5kbGVyXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewotICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoTlNE
YXRhICosIE5TRXJyb3IgKikgPSAodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpaGFuZGxl
ci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4g
ZnJvbSB0aGUgV2ViUGFnZVByb3h5LgotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9j
ayhuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6c3RhdGlj
X2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayh3cmFwcGVyKCpkYXRhKSwgbmlsKTsKKyAgICBf
cGFnZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRh
dGEqIGRhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqZGF0YSksIG5p
bCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAKaW5kZXggZGU5ZTlkMWYzMzAwODY5MjdhNzRkMDRiMTVlNjI2NDIxNWNlZWE3Yy4uNWVmMDI5
MWI1NjRlYjczNmFmNDYwNTlmOWEwYTU1MWEyMWNiNTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTIwMywzNCArMjAzLDI1IEBAIFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5
KENvbXBsZXRpb25ICiAgICAgcmV0dXJuICptX2FjdGl2ZUxpc3RlbmVyOwogfQogCi12b2lkIFdl
YkZyYW1lUHJveHk6OmdldFdlYkFyY2hpdmUoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVQcm94
eTo6Z2V0V2ViQXJjaGl2ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNh
bGxiYWNrKQogewotICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24o
bnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBtX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKHRoaXMsIFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2sobnVsbHB0cik7CisgICAgbV9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZGcmFtZSh0aGlzLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291
cmNlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFtZVByb3h5OjpnZXRNYWluUmVzb3VyY2VE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fcGFnZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodGhpcywgV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhu
dWxscHRyKTsKKyAgICBtX3BhZ2UtPmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHRoaXMsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURh
dGEoQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFtZVByb3h5
OjpnZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghbV9wYWdlKSB7Ci0g
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BhZ2UtPmdldFJlc291cmNl
RGF0YUZyb21GcmFtZSh0aGlzLCByZXNvdXJjZVVSTCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxscHRyKTsK
KyAgICBtX3BhZ2UtPmdldFJlc291cmNlRGF0YUZyb21GcmFtZSgqdGhpcywgcmVzb3VyY2VVUkws
IFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNo
YWJsZVVSTChjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oCmluZGV4IDZjNmYxMzBiNmI3MjRmMTA4MmZjNjQ0MjhiOTM1YmE5N2U5
YzFiZGYuLjgxY2VhMjE2ODkwNWE0Yzc0MjM3ZjUxNWVjMDk5M2JmNTY4MDdkNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTEwMyw5ICsxMDMsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCgpIGNvbnN0OwogICAgIGJv
b2wgaXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0V2ViQXJj
aGl2ZShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
Ci0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6
OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRh
dGEqKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQVBJOjpEYXRhKik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJM
KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkRXhwbGljaXRP
cGVuKFVSTCYmLCBTdHJpbmcmJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA4Y2I1ZDIzYmU4Y2Q0ZTIwNTlkZTQ1Y2ViNWJjNDhiZTAxNzgw
N2Y1Li4xZDVlMjdlNjhlMGIzNDg4NGJlY2RlOGZhNmI1OGYxMTdhMzJhN2NiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQxNDAsMTYgKzQxNDAsMTcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNh
bXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCkpOwogfQogCi0jaWYgRU5BQkxFKE1IVE1M
KQotdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rpb248dm9p
ZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
K3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRh
Kik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgcmV0dXJuIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoZGF0YSkuZ2V0KCkpOworICAgIH07
Cit9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSJfcykpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCkpOworI2lm
IEVOQUJMRShNSFRNTCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCit7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxE
YXRhKCksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAjZW5kaWYK
IApAQCAtNDE2NCw0OCArNDE2NSwyOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9u
T3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxs
YmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNr
KQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRh
Il9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCksIHRvQVBJRGF0YUNhbGxiYWNr
KFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsK
LSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIWZyYW1lKSB7Ci0gICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZy
YW1lIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxscHRyKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5m
cmFtZUlEKCkpLCB0b0FQSURhdGFDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBBUEk6OlVSTCogcmVzb3VyY2VVUkwsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6
OlVSTCogcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21G
cmFtZSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZy
b21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNr
SUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291
cmNlRGF0YUZyb21GcmFtZShmcmFtZS5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSks
IHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUiX3MpKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+
ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKG51bGxwdHIpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHRvQVBJRGF0YUNh
bGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3Jj
ZVJlcGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQpAQCAtNzExMywx
NSArNzA5NCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFS
ZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0g
bV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2Fs
bGJhY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tX
aXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRh
dGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKQEAgLTg1NTMsMTYgKzg1MjUsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBQcmludEluZm8mIHByaW50SQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdS
ZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSwg
Y2FsbGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit1aW50NjRf
dCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2spKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+
ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHJldHVy
biBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZy
YW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50KSwgdG9BUElEYXRhQ2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZjZTgzM2IxYjZm
ZmIzZDdhMjAxZTM5YzUyZDdhYWQ5NjBiZTUzZTcuLmE0N2YyZGJkNzYwY2QwMWRiZjhmNTBlZWQx
ZDc2ZjE1ODI4YTMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0zNzgsNyArMzc4LDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
IDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYkNv
bnRlbnRNb2RlIDogdWludDhfdDsKIAotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRh
Kj4gRGF0YUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2ln
bmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJp
bmdDYWxsYmFjazsKIApAQCAtMTEzMCwxNSArMTEyOSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBn
ZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZv
aWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogI2VuZGlmCi0gICAgdm9pZCBn
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAo
QVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkqLCBBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEFQSTo6RGF0YSopPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJG
cmFtZVByb3h5JiwgQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSop
PiYmKTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwog
ICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgZ2V0
U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2
ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZy
YW1lUHJveHkqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmKTsKICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBB
UEk6OkNvbnRlbnRXb3JsZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRy
PEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4m
Jik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0xMjk1LDcgKzEyOTQsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgY29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZv
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8
SW1hZ2VDYWxsYmFjaz4mJik7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5
KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8
RGF0YUNhbGxiYWNrPiYmKTsKKyAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVBy
b3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGRyYXdUb1BE
RihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
PiYmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6cGFpcjxzaXplX3QsIHVp
bnQ2NF90PiBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwpAQCAtMjE1NCw3ICsyMTUzLDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhh
bmRsZWQpOwogCiAgICAgdm9pZCB2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBk
YXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBi
NDljNzk1Y2Y4NDhlYzYzYmUzZGJiOGY0NGY3NWM4YWYzYmNkZmZhLi41MDU3N2I0MWIwZTNiYTlj
YmUyM2JhYTU4ZjU0ZTZiNzEyMDMxOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjQsNyArMTY0LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKICAgICBWb2lkQ2Fs
bGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgRGF0YUNhbGxiYWNrKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBJbWFnZUNhbGxiYWNrKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgYml0bWFwSGFuZGxlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGlu
Z1ZpZXcubW0KaW5kZXggMDVmY2ZhNGJlZmI5NTViNTg5YTM3NjgyY2VlMGQ0MDBkOWNkZGQzNy4u
MjgwYzI4NDE0MGY1YTQyNGM0ZGYwMDcwZDZiNWQwZjY4NjhlNTZlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMjc4LDcgKzI3OCw3IEBA
IHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsCiAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJp
bnRpbmcoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8pOwogCiAgICAgSVBDQ2FsbGJhY2tDb250
ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gV2ViS2l0OjpEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oQVBJOjpEYXRhKiBkYXRh
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2Nv
bnRleHRdKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRl
eHREZWxldGVyKGNvbnRleHQpOwpAQCAtMjkzLDEzICsyOTMsMTAgQEAgc3RhdGljIHZvaWQgcGFn
ZURpZERyYXdUb0ltYWdlKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGlt
YWdlSGFuZGwKICAgICAgICAgICAgIHZpZXctPl9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSAwOwog
ICAgICAgICAgICAgdmlldy0+X3ByaW50aW5nQ2FsbGJhY2tDb25kaXRpb24ubm90aWZ5T25lKCk7
CiAgICAgICAgIH0KLSAgICB9KTsKLSAgICBfZXhwZWN0ZWRQcmludENhbGxiYWNrID0gY2FsbGJh
Y2stPmNhbGxiYWNrSUQoKS50b0ludGVnZXIoKTsKLQorICAgIH07CisgICAgX2V4cGVjdGVkUHJp
bnRDYWxsYmFjayA9IF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNUb1BERihfd2ViRnJhbWUu
Z2V0KCksIHByaW50SW5mbywgZmlyc3RQYWdlIC0gMSwgbGFzdFBhZ2UgLSBmaXJzdFBhZ2UgKyAx
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7Ci0K
LSAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBw
cmludEluZm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBfZXhwZWN0ZWRQcmludENh
bGxiYWNrOwogfQogCiBzdGF0aWMgdm9pZCBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0
b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFn
ZU1hcmdpbiwgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyNzM1MGFhYmM5OWY2N2NiZTM4NTM0
ODg5MTdlODI3NjRkZWJkZmU0Li5jMDEyNWVkYzZlYjM0N2QxNThlYzg1MzllNWMwN2I3MjUyM2U5
YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzYyNCw5ICszNjI0LDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENv
bnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKIH0KIAogI2lmIEVO
QUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IE1I
VE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9LCBjYWxsYmFja0lE
KSk7CisgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFn
ZS5nZXQoKSkgfSk7CiB9CiAjZW5kaWYKIApAQCAtMzY0Niw3ICszNjQ2LDcgQEAgc3RhdGljIEZy
YW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNr
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7
CkBAIC0zNjU0LDEyICszNjU0LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgICAgIGRhdGEgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0
aW9uKCk7CiAjZW5kaWYKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlOworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBD
RkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdl
dExlbmd0aChkYXRhLmdldCgpKSkgfTsKICNlbmRpZgotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKKyAgICBj
YWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25P
ckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMzY4MCw3ICszNjgw
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSog
ZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAt
MzY5NSw3ICszNjk1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWwKICAgICBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVmZmVyKQogICAg
ICAgICBkYXRhUmVmZXJlbmNlID0geyAqYnVmZmVyIH07Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOworICAg
IGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCiBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNl
VVJMKQpAQCAtMzcxMSw3ICszNzExLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKICAgICBy
ZXR1cm4gJnN1YnJlc291cmNlLT5kYXRhKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJl
c291cmNlVVJMU3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM3MjIsMTAgKzM3MjIsMTAgQEAg
dm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBkYXRhUmVmZXJlbmNl
ID0geyAqYnVmZmVyIH07Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2Fs
bGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKGRhdGFSZWZl
cmVuY2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zNzM1
LDEyICszNzM1LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJCiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lSUQpOwogI2VuZGlmCiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRh
dGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CiAjZW5kaWYKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7Cisg
ICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBh
aW50V2l0aG91dENhbGxiYWNrKCkKQEAgLTUxNzgsMTEgKzUxNzgsMTEgQEAgdm9pZCBXZWJQYWdl
OjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYgcHJpbnRJbmYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlQ2FsbGJh
Y2soaGFuZGxlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9Q
REYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1
aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJh
Y2spCiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAg
IGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRm
UGFnZURhdGEpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNr
KHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVf
dD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSwgY2FsbGJhY2tJRCkpOwor
ICAgIGNhbGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRp
Y19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90
IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZjYWYxZDU0ZTc3YWMx
ZjI2NzNhMWE5YzdiYmM3MzRkYWQ0ZGNjMzIuLmQwYzVjMGE2MmIzOGFlNjI2MjBkZGE3MjdmNjNk
NDQ0ODk0ZDg3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTk2Niw3ICs5NjYsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFBy
aW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7
CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAKQEAgLTE1ODEsMTMg
KzE1ODEsMTMgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgdm9pZCBnZXRDb250
ZW50c0FzTUhUTUxEYXRhKENhbGxiYWNrSUQpOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYp
OworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJik7CiAgICAgdm9pZCBnZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDYWxsYmFja0lEKTsKICAgICB2b2lkIGdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRXZWJB
cmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNj
cmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRl
bnRXb3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4m
Jik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdv
cmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2
b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggODVhM2RhZDk3NWU5YTBmMjM3Y2YxODc0YTlkNmQxZDg0ZWFiOWQ0ZC4uMTNjMDJhN2IzOGI0
OWFhZjgwYzRhMjg4YzhmYWRiMDE1ZWFiMDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTAsMTUgKzIxMCwx
NSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENvbnRlbnRzQXNBdHRyaWJ1dGVk
U3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkgQXN5
bmMKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRh
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNNSFRNTERh
dGEoKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBHZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkws
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVz
b3VyY2VVUkwpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZSkgQXN5bmMKICAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYwog
ICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMKIAog
ICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlm
aWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKQEAgLTQw
MCw3ICs0MDAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIENvbXB1dGVQYWdlc0Zv
clByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0
OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VS
ZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVjdEVk
Z2VzPGZsb2F0PiBjb21wdXRlZFBhZ2VNYXJnaW4pIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgRHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qs
IFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLSAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQz
Ml90IGNvdW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEcmF3UGFnZXNU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdl
Q291bnQpIFN5bmNocm9ub3VzCiAgICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3Qg
cGFnZUNvdW50KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419786</attachid>
            <date>2021-02-09 16:57:20 -0800</date>
            <delta_ts>2021-02-09 17:23:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221639-20210209165719.patch</filename>
            <type>text/plain</type>
            <size>35056</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcyYmIxZTE1ZmZlMzkzNmMw
MjAxNTJmMjIyZDAxMDQzYzVlYzNiMWUuLmI0ZjRhZTdiODE1MWNlYzFkYjcwNGFiYjA3MzA3NGZj
ZTRlZTc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDItMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgQ29tcGxl
dGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBEYXRhQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIER1bWV6LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwOgor
ICAgICAgICAoV0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEpOgorICAgICAgICAoV0tGcmFtZUdl
dFJlc291cmNlRGF0YSk6CisgICAgICAgIChXS0ZyYW1lR2V0V2ViQXJjaGl2ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5OjpnZXRXZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHk6OmdldFJlc291cmNlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06CisgICAg
ICAgICgtW1dLUHJpbnRpbmdWaWV3IF9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvbmRh
cnlUaHJlYWRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQgb2YgQ29tcHV0
ZWRQYWdlc0NhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3Bw
CmluZGV4IDhlNGUxYTViN2JjMzViNWFlYTY0ZDg4YWEwNzA1YWYwY2NkNjYwZjMuLjdjMzk0ZGNj
YmMzODFkZDUyODZlY2Y3ZWE1NjQxZjM2NmQ2ZGNlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBAIC0xMzksMTUgKzEzOSwyMSBAQCBXS0ZyYW1lSW5mb1Jl
ZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiAKIHZvaWQgV0tG
cmFtZUdldE1haW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZUdldFJl
c291cmNlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1w
bChmcmFtZVJlZiktPmdldE1haW5SZXNvdXJjZURhdGEodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlv
bihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldE1haW5SZXNv
dXJjZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAg
IGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAog
dm9pZCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVm
IHJlc291cmNlVVJMLCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZv
aWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0UmVzb3VyY2VEYXRhKHRv
SW1wbChyZXNvdXJjZVVSTCksIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2Fs
bGJhY2spKTsKKyAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRSZXNvdXJjZURhdGEodG9JbXBsKHJl
c291cmNlVVJMKSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAg
ICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXS0ZyYW1lR2V0V2ViQXJjaGl2ZShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1l
R2V0V2ViQXJjaGl2ZUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRv
SW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihj
b250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUo
W2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxiYWNr
KHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGQ3ZDBiZWZlYjAzMGY0OWMxNWJjZjY1
ZDRhYzIwYzhhMzc1OGFmYTMuLjQyMDc2NDFkMTliMDkwYjFkZDhhMTFiZjI0NjlkNTc1Y2JjYzIx
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjU2OCw3
ICsyNTY4LDkgQEAgdm9pZCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXQKIAogdm9pZCBXS1BhZ2VHZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHRvR2VuZXJp
Y0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJ
OjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBj
b250ZXh0KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRh
KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0FzTUhU
TUxEYXRhRnVuY3Rpb24gY2FsbGJhY2spCkBAIC0yNjU0LDcgKzI2NTYsOSBAQCB2b2lkIFdLUGFn
ZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1ByaW50SW5mbwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXS1BhZ2VEcmF3UGFnZXNU
b1BERihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJ
bmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdLUGFnZURyYXdUb1BERkZ1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+ZHJhd1Bh
Z2VzVG9QREYodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5m
byksIGZpcnN0LCBjb3VudCwgRGF0YUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tG
dW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsKKyAgICB0b0ltcGwocGFnZSktPmRyYXdQYWdl
c1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8p
LCBmaXJzdCwgY291bnQsIFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgewor
ICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CisgICAgfSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggZDk1MzM1OGU3YzE4NzMwNzNjZDJiZGUwMGUwMjVhODJkNGY4MGNkYS4u
MTYwNzRhNTJiN2E1MzFmNzVhMGNiNjBlZjFkZjVhNzkwNWQ5YWE3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNDg2LDE1ICsxNDg2
LDggQEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25z
KFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UKIAogLSAodm9pZCljcmVhdGVXZWJBcmNoaXZl
RGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0
aW9uSGFuZGxlciBjb3B5XSk7Ci0KLSAgICBfcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoX3Bh
Z2UtPm1haW5GcmFtZSgpLCBbaGFuZGxlcl0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
QmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopID0gKHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9y
ICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQaXBlIGEgcHJvcGVy
IGVycm9yIGluIGZyb20gdGhlIFdlYlBhZ2VQcm94eS4KLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQmxvY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOnN0YXRpY19jYXN0PGludD4oZXJyb3IpIHVzZXJJbmZvOm5pbF0pOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sod3JhcHBlcigqZGF0YSksIG5p
bCk7CisgICAgX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKF9wYWdlLT5tYWluRnJhbWUoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oQVBJ
OjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSks
IG5pbCk7CiAgICAgfSk7CiB9CiAKQEAgLTI1MzQsMTUgKzI1MjcsOCBAQCBzdGF0aWMgaW5saW5l
IE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1pbGVzdG9uZXMoX1dL
UmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsK
LQotICAgIF9wYWdlLT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShfcGFnZS0+bWFpbkZyYW1l
KCksIFtoYW5kbGVyXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewotICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoTlNEYXRh
ICosIE5TRXJyb3IgKikgPSAodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpaGFuZGxlci5n
ZXQoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJv
bSB0aGUgV2ViUGFnZVByb3h5LgotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhu
aWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6c3RhdGljX2Nh
c3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayh3cmFwcGVyKCpkYXRhKSwgbmlsKTsKKyAgICBfcGFn
ZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEq
IGRhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqZGF0YSksIG5pbCk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAK
aW5kZXggZGU5ZTlkMWYzMzAwODY5MjdhNzRkMDRiMTVlNjI2NDIxNWNlZWE3Yy4uNWVmMDI5MWI1
NjRlYjczNmFmNDYwNTlmOWEwYTU1MWEyMWNiNTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTIwMywzNCArMjAzLDI1IEBAIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENv
bXBsZXRpb25ICiAgICAgcmV0dXJuICptX2FjdGl2ZUxpc3RlbmVyOwogfQogCi12b2lkIFdlYkZy
YW1lUHJveHk6OmdldFdlYkFyY2hpdmUoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVQcm94eTo6
Z2V0V2ViQXJjaGl2ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxi
YWNrKQogewotICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVs
bHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBtX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKHRoaXMsIFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY2FsbGJh
Y2sobnVsbHB0cik7CisgICAgbV9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZGcmFtZSh0aGlzLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291cmNl
RGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFtZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAg
aWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
cGFnZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodGhpcywgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxs
cHRyKTsKKyAgICBtX3BhZ2UtPmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHRoaXMsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEo
QVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFtZVByb3h5Ojpn
ZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghbV9wYWdlKSB7Ci0gICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BhZ2UtPmdldFJlc291cmNlRGF0
YUZyb21GcmFtZSh0aGlzLCByZXNvdXJjZVVSTCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7
CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxscHRyKTsKKyAg
ICBtX3BhZ2UtPmdldFJlc291cmNlRGF0YUZyb21GcmFtZSgqdGhpcywgcmVzb3VyY2VVUkwsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJs
ZVVSTChjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCmluZGV4IDZjNmYxMzBiNmI3MjRmMTA4MmZjNjQ0MjhiOTM1YmE5N2U5YzFi
ZGYuLjgxY2VhMjE2ODkwNWE0Yzc0MjM3ZjUxNWVjMDk5M2JmNTY4MDdkNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTEwMyw5ICsxMDMsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCgpIGNvbnN0OwogICAgIGJvb2wg
aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0V2ViQXJjaGl2
ZShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0g
ICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVS
TCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
KyAgICB2b2lkIGdldFdlYkFyY2hpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEq
KT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJMKiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAKICAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkRXhwbGljaXRPcGVu
KFVSTCYmLCBTdHJpbmcmJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCA4Y2I1ZDIzYmU4Y2Q0ZTIwNTlkZTQ1Y2ViNWJjNDhiZTAxNzgwN2Y1
Li4xZDVlMjdlNjhlMGIzNDg4NGJlY2RlOGZhNmI1OGYxMTdhMzJhN2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQxNDAsMTYgKzQxNDAsMTcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBs
aW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCkpOwogfQogCi0jaWYgRU5BQkxFKE1IVE1MKQot
dm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rpb248dm9pZCAo
QVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3N0
YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+
JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgcmV0dXJuIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKSBtdXRhYmxlIHsKKyAg
ICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoZGF0YSkuZ2V0KCkpOworICAgIH07Cit9
CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSJfcykpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCkpOworI2lmIEVO
QUJMRShNSFRNTCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCit7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRh
KCksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAjZW5kaWYKIApA
QCAtNDE2NCw0OCArNDE2NSwyOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFj
a0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQog
ewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhIl9z
KSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YShjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCksIHRvQVBJRGF0YUNhbGxiYWNrKFdU
Rk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIWZyYW1lKSB7Ci0gICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
Il9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBjYWxsYmFjayhudWxscHRyKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpLCB0b0FQSURhdGFDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBBUEk6OlVSTCogcmVzb3VyY2VVUkwsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlVS
TCogcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2Fs
bGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFt
ZSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21G
cmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQp
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNl
RGF0YUZyb21GcmFtZShmcmFtZS5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSksIHRv
QVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248
dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUiX3MpKTsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJh
bWVJRCgpLCBjYWxsYmFja0lEKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKG51bGxwdHIpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHRvQVBJRGF0YUNhbGxi
YWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJl
cGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQpAQCAtNzExMywxNSAr
NzA5NCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJh
Y2spCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjppbWFnZUNh
bGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKQEAgLTg1NTMsMTYgKzg1MjUsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBQcmludEluZm8mIHByaW50SQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdSZWN0
VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSwgY2Fs
bGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwg
dWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit1aW50NjRfdCBX
ZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxi
YWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2sp
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJh
bWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIHByaW50aW5nU2Vu
ZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHJldHVybiBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1l
LT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50KSwgdG9BUElEYXRhQ2FsbGJhY2so
V1RGTW92ZShjYWxsYmFjaykpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9N
UHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluZm8sIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZjZTgzM2IxYjZmZmIz
ZDdhMjAxZTM5YzUyZDdhYWQ5NjBiZTUzZTcuLmE0N2YyZGJkNzYwY2QwMWRiZjhmNTBlZWQxZDc2
ZjE1ODI4YTMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0z
NzgsNyArMzc4LDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDog
Ym9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYkNvbnRl
bnRNb2RlIDogdWludDhfdDsKIAotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4g
RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVk
Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdD
YWxsYmFjazsKIApAQCAtMTEzMCwxNSArMTEyOSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRT
YW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQg
Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogI2VuZGlmCi0gICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkqLCBBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQ
STo6RGF0YSopPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFt
ZVByb3h5JiwgQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYm
KTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAg
IHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0U2Vs
ZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgZ2V0U291
cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1l
UHJveHkqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmKTsKICAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBBUEk6
OkNvbnRlbnRXb3JsZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+
JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CkBAIC0xMjk1LDcgKzEyOTQsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgY29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1h
Z2VDYWxsYmFjaz4mJik7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5Kiwg
Y29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0
YUNhbGxiYWNrPiYmKTsKKyAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5
KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGRyYXdUb1BERihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6cGFpcjxzaXplX3QsIHVpbnQ2
NF90PiBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwpAQCAtMjE1NCw3ICsyMTUzLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRs
ZWQpOwogCiAgICAgdm9pZCB2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkYXRh
Q2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiNDlj
Nzk1Y2Y4NDhlYzYzYmUzZGJiOGY0NGY3NWM4YWYzYmNkZmZhLi41MDU3N2I0MWIwZTNiYTljYmUy
M2JhYTU4ZjU0ZTZiNzEyMDMxOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjQsNyArMTY0LDYgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKICAgICBWb2lkQ2FsbGJh
Y2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgRGF0YUNhbGxiYWNrKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBJbWFnZUNhbGxiYWNrKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgYml0bWFwSGFuZGxlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBT
dHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBJbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQ
cmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1Zp
ZXcubW0KaW5kZXggMDVmY2ZhNGJlZmI5NTViNTg5YTM3NjgyY2VlMGQ0MDBkOWNkZGQzNy4uMjgw
YzI4NDE0MGY1YTQyNGM0ZGYwMDcwZDZiNWQwZjY4NjhlNTZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMjc4LDcgKzI3OCw3IEBAIHN0
YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBpbWFnZUhhbmRsCiAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJpbnRp
bmcoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8pOwogCiAgICAgSVBDQ2FsbGJhY2tDb250ZXh0
KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICBhdXRvIGNhbGxiYWNrID0g
V2ViS2l0OjpEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oQVBJOjpEYXRhKiBkYXRhLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2NvbnRl
eHRdKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHRE
ZWxldGVyKGNvbnRleHQpOwpAQCAtMjkzLDEzICsyOTMsMTAgQEAgc3RhdGljIHZvaWQgcGFnZURp
ZERyYXdUb0ltYWdlKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdl
SGFuZGwKICAgICAgICAgICAgIHZpZXctPl9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSAwOwogICAg
ICAgICAgICAgdmlldy0+X3ByaW50aW5nQ2FsbGJhY2tDb25kaXRpb24ubm90aWZ5T25lKCk7CiAg
ICAgICAgIH0KLSAgICB9KTsKLSAgICBfZXhwZWN0ZWRQcmludENhbGxiYWNrID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKS50b0ludGVnZXIoKTsKLQorICAgIH07CisgICAgX2V4cGVjdGVkUHJpbnRD
YWxsYmFjayA9IF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNUb1BERihfd2ViRnJhbWUuZ2V0
KCksIHByaW50SW5mbywgZmlyc3RQYWdlIC0gMSwgbGFzdFBhZ2UgLSBmaXJzdFBhZ2UgKyAxLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29udGV4
dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7Ci0KLSAg
ICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmlu
dEluZm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBfZXhwZWN0ZWRQcmludENhbGxi
YWNrOwogfQogCiBzdGF0aWMgdm9pZCBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JG
b3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1h
cmdpbiwgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyNzM1MGFhYmM5OWY2N2NiZTM4NTM0ODg5
MTdlODI3NjRkZWJkZmU0Li45ODMwODczMjE5MjAwMDA3NmM3MDg2MDA3Mzk3ZWU2NTMxNjc3MzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MzYyNCw5ICszNjI0LDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRl
bnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKIH0KIAogI2lmIEVOQUJM
RShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxs
YmFjayh7IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9LCBj
YWxsYmFja0lEKSk7CisgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxE
YXRhKG1fcGFnZS5nZXQoKSkgfSk7CiB9CiAjZW5kaWYKIApAQCAtMzY0Niw3ICszNjQ2LDcgQEAg
c3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
IGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGE7CkBAIC0zNjU0LDEyICszNjU0LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgICAgIGRhdGEg
PSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCk7CiAjZW5kaWYKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQogICAgICAgICBkYXRhUmVmZXJl
bmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKICNlbmRpZgotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQp
KTsKKyAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMzY4
MCw3ICszNjgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KSkgewpAQCAtMzY5NSw3ICszNjk1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWwKICAgICBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVm
ZmVyKQogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAqYnVmZmVyIH07Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJ
RCkpOworICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCiBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHJlc291cmNlVVJMKQpAQCAtMzcxMSw3ICszNzExLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNv
dXIKICAgICByZXR1cm4gJnN1YnJlc291cmNlLT5kYXRhKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKIHsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM3MjIsMTAgKzM3
MjIsMTAgQEAgdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBkYXRh
UmVmZXJlbmNlID0geyAqYnVmZmVyIH07Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNr
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7
CkBAIC0zNzM1LDEyICszNzM1LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJCiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogI2VuZGlmCiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKICAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CiAjZW5kaWYKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFj
a0lEKSk7CisgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Zm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCkKQEAgLTUxNzgsMTEgKzUxNzgsMTEgQEAgdm9p
ZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Oklt
YWdlQ2FsbGJhY2soaGFuZGxlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJh
d1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJp
bnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+
JiYgY2FsbGJhY2spCiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VE
YXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBj
b3VudCwgcGRmUGFnZURhdGEpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0
YUNhbGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19j
YXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSwgY2FsbGJh
Y2tJRCkpOworICAgIGNhbGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQo
KSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgp
KSkgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZjYWYx
ZDU0ZTc3YWMxZjI2NzNhMWE5YzdiYmM3MzRkYWQ0ZGNjMzIuLmQxMGNiNzA2MGYzOGMwZjMzYTM2
NGNiZTc0NGQ3OGU0NTA5ZTNhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTk2Niw3ICs5NjYsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKT4mJik7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQs
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAKQEAg
LTE1NzksMTUgKzE1NzksMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENvbnRlbnRzQXNBdHRy
aWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0cmli
dXRlZFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB2b2lkIGdl
dENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb250ZW50c0Fz
TUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYp
OworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJik7CiAgICAgdm9pZCBnZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDYWxsYmFja0lEKTsKICAgICB2b2lkIGdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRXZWJB
cmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNj
cmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRl
bnRXb3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4m
Jik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdv
cmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2
b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggODVhM2RhZDk3NWU5YTBmMjM3Y2YxODc0YTlkNmQxZDg0ZWFiOWQ0ZC4uNDI2MzBlMDhiMDA0
NTIxOGU0ZWIxMTUxNWIyNGY5OGViYTQ4YTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTAsMTUgKzIxMCwx
NSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENvbnRlbnRzQXNBdHRyaWJ1dGVk
U3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkgQXN5
bmMKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRh
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNNSFRNTERh
dGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjZW5k
aWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgR2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcg
cmVzb3VyY2VVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAg
R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZSkgQXN5bmMKICAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTZWxlY3Rpb25PckNv
bnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgR2V0U2Vs
ZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhKSBBc3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBHZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZSkgQXN5bmMKIAogICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3Qg
V2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50
V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFz
eW5jCiAKQEAgLTQwMCw3ICs0MDAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2Vi
Q29yZTo6UmVjdEVkZ2VzPGZsb2F0PiBjb21wdXRlZFBhZ2VNYXJnaW4pIEFzeW5jCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgRHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLSAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNv
dW50KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4g
KHNpemVfdCBwYWdlQ291bnQpIFN5bmNocm9ub3VzCiAgICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJ
bmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5j
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419790</attachid>
            <date>2021-02-09 17:23:12 -0800</date>
            <delta_ts>2021-02-09 20:50:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221639-20210209172311.patch</filename>
            <type>text/plain</type>
            <size>36977</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI2MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTAyLTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVyIGluc3RlYWQgb2YgRGF0YUNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzkKKworICAgICAgICBSZXZpZXdlZCBieSBD
aHJpcyBEdW1lei4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdLRnJhbWVHZXRNYWluUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdLRnJhbWVHZXRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAoV0tGcmFtZUdldFdlYkFyY2hpdmUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXS1BhZ2VEcmF3UGFnZXNUb1BERik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBjcmVhdGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVQcm94eTo6Z2V0V2ViQXJjaGl2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAg
ICAoLVtXS1ByaW50aW5nVmlldyBfcHJlcGFyZVBERkRhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5
VGhyZWFkXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKwogMjAyMS0wMi0wOSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFVQXSBSdW4gSW1hZ2VEZWNvZGVyQVZGT2JqQyBpbiB0aGUgR1BVIFByb2Nlc3MKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAy
NzI2MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAzLDM0ICsyMDMsMjUgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5JiBXZWJGcmFtZVBybwogICAgIHJldHVybiAqbV9hY3RpdmVMaXN0ZW5lcjsKIH0KIAotdm9p
ZCBXZWJGcmFtZVByb3h5OjpnZXRXZWJBcmNoaXZlKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkZyYW1l
UHJveHk6OmdldFdlYkFyY2hpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgbV9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZGcmFtZSh0aGlzLCBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKG51bGxwdHIpOworICAgIG1fcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUodGhp
cywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6OmdldE1haW5S
ZXNvdXJjZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291
cmNlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQog
ewotICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX3BhZ2UtPmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHRoaXMsIFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY2FsbGJh
Y2sobnVsbHB0cik7CisgICAgbV9wYWdlLT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh0aGlz
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0UmVzb3Vy
Y2VEYXRhKEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVQ
cm94eTo6Z2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIW1fcGFnZSkg
ewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6
OlVua25vd24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYWdlLT5nZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUodGhpcywgcmVzb3VyY2VVUkwsIFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbHB0
cik7CisgICAgbV9wYWdlLT5nZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoKnRoaXMsIHJlc291cmNl
VVJMLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c2V0VW5y
ZWFjaGFibGVVUkwoY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgJKHJldmlzaW9uIDI3MjYyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDkg
KzEwMyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpIGNvbnN0OwogCi0gICAg
dm9pZCBnZXRXZWJBcmNoaXZlKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGEoRnVuY3Rpb248dm9p
ZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0UmVz
b3VyY2VEYXRhKEFQSTo6VVJMKiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJj
ZURhdGEoQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsK
IAogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJik7CiAgICAgdm9p
ZCBkaWRFeHBsaWNpdE9wZW4oVVJMJiYsIFN0cmluZyYmIG1pbWVUeXBlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjcyNjI1KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDE0MCwxNiArNDE0MCwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9m
aWxlck91CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChjYWxsYmFja0lEKSk7CiB9CiAKLSNpZiBFTkFCTEUoTUhUTUwpCi12b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQorc3RhdGljIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKT4gdG9BUElEYXRh
Q2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpIG11dGFibGUgeworICAgICAgICBjYWxsYmFj
ayhBUEk6OkRhdGE6OmNyZWF0ZShkYXRhKS5nZXQoKSk7CisgICAgfTsKK30KIAotICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpn
ZXRDb250ZW50c0FzTUhUTUxEYXRhIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0Q29udGVudHNBc01IVE1MRGF0YShjYWxsYmFja0lEKSk7CisjaWYgRU5BQkxFKE1IVE1MKQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoKSwgdG9BUElEYXRh
Q2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpKTsKIH0KICNlbmRpZgogCkBAIC00MTY0LDQ4ICs0
MTY1LDI4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnQKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoY2Fs
bGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoY2FsbGJhY2tJRCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpLCB0b0FQSURhdGFDYWxsYmFj
ayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJl
c291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7
Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFmcmFtZSkgewotICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJjZURh
dGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKKyAgICBpZiAoIWZyYW1l
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbHB0cik7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+
ZnJhbWVJRCgpKSwgdG9BUElEYXRhQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJ
OjpVUkwqIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYm
IGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBj
YWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9t
RnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFj
a0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoZnJhbWUuZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCkp
LCB0b0FQSURhdGFDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJh
Y2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lIl9zKSk7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhudWxscHRyKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCB0b0FQSURhdGFD
YWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9y
Y2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKQEAgLTcxMTMs
MTUgKzcwOTQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNrCiAg
ICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50
YWtlPERhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5z
aXplKCkpLnB0cigpKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJpdG1hcEhhbmRsZSwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEltYWdlQ2Fs
bGJhY2s+KGNhbGxiYWNrSUQpOwpAQCAtODU1MywxNiArODUyNSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkcmF3UmVjdFRvSW1hZ2UoV2ViRnIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
cmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNp
emUsIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJp
bnRPcGVyYXRpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmIGNhbGxiYWNrKQordWlu
dDY0X3QgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwg
Y29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2stPmludmFsaWRh
dGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJh
bWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBy
ZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BE
RihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCksIHRvQVBJRGF0YUNh
bGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAjZWxpZiBQTEFURk9STShHVEspCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmIGNh
bGxiYWNrKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDI3MjYyNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50IAogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0gY2xh
c3MgV2ViQ29udGVudE1vZGUgOiB1aW50OF90OwogCi10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxB
UEk6OkRhdGEqPiBEYXRhQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50NjRf
dD4gVW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmlu
ZyY+IFN0cmluZ0NhbGxiYWNrOwogCkBAIC0xMTMwLDE1ICsxMTI5LDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICNpZiBFTkFCTEUoTUhUTUwp
Ci0gICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0
YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRN
TERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAjZW5kaWYKLSAg
ICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSosIEFQSTo6VVJMKiwgRnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQg
Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKFdlYkZyYW1lUHJveHkmLCBBUEk6OlVSTCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJ
OjpEYXRhKik+JiYpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAg
dm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0
YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAgICAg
dm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJh
bWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYp
OwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+
JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiYmKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTEyOTUsNyArMTI5NCw3IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBj
b21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBk
b3VibGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQ
cmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFJlZjxJbWFnZUNhbGxiYWNrPiYmKTsKLSAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkZy
YW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291
bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYpOworICAgIHVpbnQ2NF90IGRyYXdQYWdlc1RvUERGKFdl
YkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQg
ZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjpwYWlyPHNp
emVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CkBAIC0yMTU2LDcgKzIxNTUsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUs
IGJvb2wgaGFuZGxlZCk7CiAKICAgICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjcyNjI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDYgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKICAg
ICBWb2lkQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgRGF0YUNh
bGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbWFnZUNhbGxiYWNrKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgYml0bWFwSGFuZGxlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lLmNwcAkocmV2aXNpb24gMjcyNjI1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxNSArMTM5LDIx
IEBAIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUluZm8oV0sKIAogdm9pZCBXS0Zy
YW1lR2V0TWFpblJlc291cmNlRGF0YShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1lR2V0UmVz
b3VyY2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBs
KGZyYW1lUmVmKS0+Z2V0TWFpblJlc291cmNlRGF0YSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9u
KGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0TWFpblJlc291
cmNlRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICAgICAg
Y2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQpOworICAgIH0pOwogfQogCiB2
b2lkIFdLRnJhbWVHZXRSZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYg
cmVzb3VyY2VVUkwsIFdLRnJhbWVHZXRSZXNvdXJjZURhdGFGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRSZXNvdXJjZURhdGEodG9J
bXBsKHJlc291cmNlVVJMKSwgdG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxs
YmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldFJlc291cmNlRGF0YSh0b0ltcGwocmVz
b3VyY2VVUkwpLCBbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICAg
ICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQpOworICAgIH0pOwogfQog
CiB2b2lkIFdLRnJhbWVHZXRXZWJBcmNoaXZlKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLRnJhbWVH
ZXRXZWJBcmNoaXZlRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9J
bXBsKGZyYW1lUmVmKS0+Z2V0V2ViQXJjaGl2ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNv
bnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0V2ViQXJjaGl2ZShb
Y29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICAgICAgY2FsbGJhY2so
dG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQpOworICAgIH0pOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyNzI2MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTY4LDcgKzI1NjgsOSBAQCB2b2lkIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
V0tQCiAKIHZvaWQgV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXS1BhZ2VSZWYg
cGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxi
YWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRh
KFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgeworICAgICAgICBjYWxsYmFj
ayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV0tQ
YWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4
dCwgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YUZ1bmN0aW9uIGNhbGxiYWNrKQpAQCAtMjY1
NCw3ICsyNjU2LDkgQEAgdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZwog
I2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXS1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBm
aXJzdCwgdWludDMyX3QgY291bnQsIFdLUGFnZURyYXdUb1BERkZ1bmN0aW9uIGNhbGxiYWNrLCB2
b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+ZHJhd1BhZ2VzVG9QREYodG9JbXBs
KGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIGZpcnN0LCBjb3Vu
dCwgRGF0YUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0
LCBjYWxsYmFjaykpKTsKKyAgICB0b0ltcGwocGFnZSktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChm
cmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBmaXJzdCwgY291bnQs
IFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgeworICAgICAgICBjYWxsYmFj
ayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CisgICAgfSk7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CShyZXZpc2lvbiAyNzI2MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg2LDE1ICsxNDg2LDggQEAgLSAodm9p
ZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQRAogCiAtICh2b2lkKWNyZWF0ZVdlYkFy
Y2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJv
ciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2Nv
bXBsZXRpb25IYW5kbGVyIGNvcHldKTsKLQotICAgIF9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZGcmFt
ZShfcGFnZS0+bWFpbkZyYW1lKCksIFtoYW5kbGVyXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICB2b2lkICheY29tcGxldGlvbkhh
bmRsZXJCbG9jaykoTlNEYXRhICosIE5TRXJyb3IgKikgPSAodm9pZCAoXikoTlNEYXRhICosIE5T
RXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFBpcGUgYSBw
cm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUgV2ViUGFnZVByb3h5LgotICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXJCbG9jayhuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayh3cmFwcGVyKCpkYXRh
KSwgbmlsKTsKKyAgICBfcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFt
ZSgpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XShBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihk
YXRhKSwgbmlsKTsKICAgICB9KTsKIH0KIApAQCAtMjUzNCwxNSArMjUyNyw4IEBAIC0gKHZvaWQp
X3NldE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmUKIAogLSAodm9pZClfZ2V0TWFpblJlc291
cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3Ig
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21w
bGV0aW9uSGFuZGxlciBjb3B5XSk7Ci0KLSAgICBfcGFnZS0+Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbaGFuZGxlcl0oQVBJOjpEYXRhKiBkYXRhLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyQmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopID0gKHZvaWQgKF4pKE5TRGF0YSAq
LCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQaXBl
IGEgcHJvcGVyIGVycm9yIGluIGZyb20gdGhlIFdlYlBhZ2VQcm94eS4KLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyQmxvY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOnN0YXRpY19jYXN0PGludD4oZXJyb3IpIHVzZXJJbmZvOm5pbF0pOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sod3JhcHBlcigq
ZGF0YSksIG5pbCk7CisgICAgX3BhZ2UtPmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKF9wYWdl
LT5tYWluRnJhbWUoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHdyYXBwZXIoKmRhdGEpLCBuaWwpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiAyNzI2MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MiwxMyArMzQyLDggQEAgc3Ry
dWN0IFJlc291cmNlR2V0RGF0YUFzeW5jRGF0YSB7CiB9OwogV0VCS0lUX0RFRklORV9BU1lOQ19E
QVRBX1NUUlVDVChSZXNvdXJjZUdldERhdGFBc3luY0RhdGEpCiAKLXN0YXRpYyB2b2lkIHJlc291
cmNlRGF0YUNhbGxiYWNrKEFQSTo6RGF0YSogd2tEYXRhLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yLCBHVGFzayogdGFzaykKK3N0YXRpYyB2b2lkIHJlc291cmNlRGF0YUNhbGxiYWNrKEFQSTo6
RGF0YSogd2tEYXRhLCBHVGFzayogdGFzaykKIHsKLSAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAvLyBUaGlzIGZhaWxzIHdoZW4gdGhlIHBhZ2Ug
aXMgY2xvc2VkIG9yIGZyYW1lIGlzIGRlc3Ryb3llZCwgc28gd2UgY2FuIGp1c3QgY2FuY2VsIHRo
ZSBvcGVyYXRpb24uCi0gICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2ssIEdfSU9f
RVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJPcGVyYXRpb24gd2FzIGNhbmNlbGxlZCIp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBSZXNvdXJjZUdldERhdGFBc3luY0RhdGEq
IGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUdldERhdGFBc3luY0RhdGEqPihnX3Rhc2tfZ2V0
X3Rhc2tfZGF0YSh0YXNrKSk7CiAgICAgZGF0YS0+d2ViRGF0YSA9IHdrRGF0YTsKICAgICBpZiAo
IXdrRGF0YS0+Ynl0ZXMoKSkKQEAgLTM3NSwxMyArMzcwLDEzIEBAIHZvaWQgd2Via2l0X3dlYl9y
ZXNvdXJjZV9nZXRfZGF0YShXZWJLaXQKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRH
UmVmKGdfdGFza19uZXcocmVzb3VyY2UsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEp
KTsKICAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSh0YXNrLmdldCgpLCBjcmVhdGVSZXNvdXJjZUdl
dERhdGFBc3luY0RhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJv
eVJlc291cmNlR2V0RGF0YUFzeW5jRGF0YSkpOwogICAgIGlmIChyZXNvdXJjZS0+cHJpdi0+aXNN
YWluUmVzb3VyY2UpCi0gICAgICAgIHJlc291cmNlLT5wcml2LT5mcmFtZS0+Z2V0TWFpblJlc291
cmNlRGF0YShbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6RGF0YSogZGF0YSwgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICAgICAgcmVzb3VyY2VEYXRhQ2FsbGJhY2soZGF0
YSwgZXJyb3IsIHRhc2suZ2V0KCkpOworICAgICAgICByZXNvdXJjZS0+cHJpdi0+ZnJhbWUtPmdl
dE1haW5SZXNvdXJjZURhdGEoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OkRhdGEqIGRhdGEp
IHsKKyAgICAgICAgICAgIHJlc291cmNlRGF0YUNhbGxiYWNrKGRhdGEsIHRhc2suZ2V0KCkpOwog
ICAgICAgICB9KTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nIHVybCA9IFN0cmluZzo6ZnJv
bVVURjgocmVzb3VyY2UtPnByaXYtPnVyaS5kYXRhKCkpOwotICAgICAgICByZXNvdXJjZS0+cHJp
di0+ZnJhbWUtPmdldFJlc291cmNlRGF0YShBUEk6OlVSTDo6Y3JlYXRlKHVybCkucHRyKCksIFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpEYXRhKiBkYXRhLCBDYWxsYmFja0Jhc2U6OkVycm9y
IGVycm9yKSB7Ci0gICAgICAgICAgICByZXNvdXJjZURhdGFDYWxsYmFjayhkYXRhLCBlcnJvciwg
dGFzay5nZXQoKSk7CisgICAgICAgIHJlc291cmNlLT5wcml2LT5mcmFtZS0+Z2V0UmVzb3VyY2VE
YXRhKEFQSTo6VVJMOjpjcmVhdGUodXJsKS5wdHIoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShB
UEk6OkRhdGEqIGRhdGEpIHsKKyAgICAgICAgICAgIHJlc291cmNlRGF0YUNhbGxiYWNrKGRhdGEs
IHRhc2suZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAkocmV2aXNpb24g
MjcyNjI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNjcsNyArNDE2Nyw3IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3NhdmUoV2ViS2l0V2ViVmlldyoKICAgICBHVGFzayogdGFzayA9IGdfdGFza19uZXco
d2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7CiAgICAgZ190YXNrX3Nl
dF9zb3VyY2VfdGFnKHRhc2ssIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJf
dmlld19zYXZlKSk7CiAgICAgZ190YXNrX3NldF90YXNrX2RhdGEodGFzaywgY3JlYXRlVmlld1Nh
dmVBc3luY0RhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVZp
ZXdTYXZlQXN5bmNEYXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5nZXRDb250ZW50c0FzTUhU
TUxEYXRhKFt0YXNrXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cikgeworICAgIGdldFBhZ2Uod2ViVmlldykuZ2V0Q29udGVudHNBc01IVE1MRGF0YShbdGFza10o
QVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGdldENvbnRlbnRzQXNNSFRNTERhdGFDYWxsYmFj
ayhkYXRhLCB0YXNrKTsKICAgICB9KTsKIH0KQEAgLTQyMzIsNyArNDIzMiw3IEBAIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZShXZWJLaXQKICAgICBkYXRhLT5maWxlID0gZmlsZTsK
ICAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSh0YXNrLCBkYXRhLCByZWludGVycHJldF9jYXN0PEdE
ZXN0cm95Tm90aWZ5PihkZXN0cm95Vmlld1NhdmVBc3luY0RhdGEpKTsKIAotICAgIGdldFBhZ2Uo
d2ViVmlldykuZ2V0Q29udGVudHNBc01IVE1MRGF0YShbdGFza10oQVBJOjpEYXRhKiBkYXRhLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmdldENv
bnRlbnRzQXNNSFRNTERhdGEoW3Rhc2tdKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBnZXRD
b250ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2soZGF0YSwgdGFzayk7CiAgICAgfSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCShyZXZp
c2lvbiAyNzI2MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1Zp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3OCw3ICsyNzgsNyBAQCAtICh2b2lkKV9wcmVwYXJl
UERGRGF0YUZvclByaW50aW5nT25TZWNvCiAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJp
bnRpbmcoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8pOwogCiAgICAgSVBDQ2FsbGJhY2tDb250
ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gV2ViS2l0OjpEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oQVBJOjpEYXRhKiBkYXRh
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2Nv
bnRleHRdKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRl
eHREZWxldGVyKGNvbnRleHQpOwpAQCAtMjkzLDEzICsyOTMsMTAgQEAgLSAodm9pZClfcHJlcGFy
ZVBERkRhdGFGb3JQcmludGluZ09uU2VjbwogICAgICAgICAgICAgdmlldy0+X2V4cGVjdGVkUHJp
bnRDYWxsYmFjayA9IDA7CiAgICAgICAgICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRp
dGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgfQotICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50
Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRvSW50ZWdlcigpOwotCisgICAgfTsK
KyAgICBfZXhwZWN0ZWRQcmludENhbGxiYWNrID0gX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdQYWdl
c1RvUERGKF93ZWJGcmFtZS5nZXQoKSwgcHJpbnRJbmZvLCBmaXJzdFBhZ2UgLSAxLCBsYXN0UGFn
ZSAtIGZpcnN0UGFnZSArIDEsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBjb250ZXh0LT52aWV3
ID0gc2VsZjsKLSAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKLQotICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNUb1BERihf
d2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbywgZmlyc3RQYWdlIC0gMSwgbGFzdFBhZ2UgLSBmaXJz
dFBhZ2UgKyAxLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9
IF9leHBlY3RlZFByaW50Q2FsbGJhY2s7CiB9CiAKIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3Vi
bGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4
dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRleHQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMjcyNjI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MjcsOSArMzYyNyw5IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW4KIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQg
V2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9LCBjYWxsYmFja0lEKSk7Cisg
ICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQo
KSkgfSk7CiB9CiAjZW5kaWYKIApAQCAtMzY0OSw3ICszNjQ5LDcgQEAgc3RhdGljIEZyYW1lKiBm
cmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYlBh
Z2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM2NTcs
MTIgKzM2NTcsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYQog
ICAgICAgICBkYXRhID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihmcmFt
ZSktPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOwogI2VuZGlmCiAKLSAgICBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKICAgICAg
ICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CiAjZW5kaWYKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNl
LCBjYWxsYmFja0lEKSk7CisgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKQEAgLTM2ODMsNyArMzY4Myw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJh
bWUoRnJhbWVJZGUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxi
YWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM2OTgsNyArMzY5OCw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUKICAgICBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVmZmVyKQogICAg
ICAgICBkYXRhUmVmZXJlbmNlID0geyAqYnVmZmVyIH07Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOworICAg
IGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCiBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNl
VVJMKQpAQCAtMzcxNCw3ICszNzE0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YQogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNr
KQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAtMzcy
NSwxMCArMzcyNSwxMCBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShG
CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAg
aWYgKGJ1ZmZlcikKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNh
bGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMzczOCwxMiArMzczOCwxMiBAQCB2b2lkIFdl
YlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
SUQpOwogI2VuZGlmCiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZE
YXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRM
ZW5ndGgoZGF0YS5nZXQoKSkpIH07CiAjZW5kaWYKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CisgICAgY2Fs
bGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0
aG91dENhbGxiYWNrKCkKQEAgLTUxODQsMTEgKzUxODQsMTEgQEAgdm9pZCBXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UoRnJhbWVJZGVudAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpk
cmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJf
dCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KT4mJiBjYWxsYmFjaykKIHsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFn
ZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3Qs
IGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
YXRhQ2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9LCBjYWxs
YmFja0lEKSk7CisgICAgY2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdl
dCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0
KCkpKSB9KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURh
dGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShy
ZXZpc2lvbiAyNzI2MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2Niw3ICs5NjYsNyBAQCBwdWJsaWM6CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BE
RihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BE
RihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKT4mJik7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMy
X3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2Vu
ZGlmCiAKQEAgLTE1NzksMTUgKzE1NzksMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENvbnRl
bnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29y
ZTo6QXR0cmlidXRlZFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAg
ICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRD
b250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9pZCBn
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxi
YWNrSUQpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJik7CiAgICAg
dm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEKTsKLSAgICB2
b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFdlYkFyY2hp
dmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQg
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQo
V2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0
cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzI2MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsMTUg
KzIxMCwxNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWluCiAgICAg
R2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJp
YnV0ZWRTdHJpbmcgcmVzdWx0KSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAg
IEdldENvbnRlbnRzQXNNSFRNTERhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgR2V0Q29udGVudHNBc01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YSkgQXN5bmMKICNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKLSAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4gKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKSBBc3luYwogICAgIEdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAt
PiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAgICAgR2V0U291cmNlRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQotICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKSBBc3luYwogCiAgICAgUnVuSmF2YVNjcmlwdEluRnJh
bWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0
ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+
IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIApAQCAtNDAwLDcgKzQwMCw3IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICAgICBDb21wdXRlUGFnZXNGb3JQcmlu
dGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMs
IGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RFZGdlczxm
bG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IERyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJD
b3JlOjpJbnRTaXplIGltYWdlU2l6ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0g
ICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBj
b3VudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRHJhd1BhZ2VzVG9QREYo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5m
byBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCkgLT4gKElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKSBBc3luYwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChzaXplX3QgcGFnZUNvdW50
KSBTeW5jaHJvbm91cwogICAgIERyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgc2l6ZV90IHBhZ2VD
b3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419809</attachid>
            <date>2021-02-09 20:50:35 -0800</date>
            <delta_ts>2021-02-09 21:16:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221639-20210209205034.patch</filename>
            <type>text/plain</type>
            <size>38727</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4MWM0NGZhODFhMDZhZmNh
YWUyZDcxMDU1NzkwNGJjNGMwYmE0MDIuLjk4ZTczYjJmYjRjZGUxMjFiYzRhMDFkMmE0NjM2N2E1
OGI5ZTY4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDItMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgQ29tcGxl
dGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBEYXRhQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIER1bWV6LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwOgor
ICAgICAgICAoV0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEpOgorICAgICAgICAoV0tGcmFtZUdl
dFJlc291cmNlRGF0YSk6CisgICAgICAgIChXS0ZyYW1lR2V0V2ViQXJjaGl2ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5OjpnZXRXZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHk6OmdldFJlc291cmNlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06CisgICAg
ICAgICgtW1dLUHJpbnRpbmdWaWV3IF9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvbmRh
cnlUaHJlYWRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQgb2YgUHJpbnRG
aW5pc2hlZENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3Bw
CmluZGV4IDhlNGUxYTViN2JjMzViNWFlYTY0ZDg4YWEwNzA1YWYwY2NkNjYwZjMuLjdjMzk0ZGNj
YmMzODFkZDUyODZlY2Y3ZWE1NjQxZjM2NmQ2ZGNlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBAIC0xMzksMTUgKzEzOSwyMSBAQCBXS0ZyYW1lSW5mb1Jl
ZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiAKIHZvaWQgV0tG
cmFtZUdldE1haW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZUdldFJl
c291cmNlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1w
bChmcmFtZVJlZiktPmdldE1haW5SZXNvdXJjZURhdGEodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlv
bihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldE1haW5SZXNv
dXJjZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAg
IGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAog
dm9pZCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVm
IHJlc291cmNlVVJMLCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZv
aWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0UmVzb3VyY2VEYXRhKHRv
SW1wbChyZXNvdXJjZVVSTCksIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2Fs
bGJhY2spKTsKKyAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRSZXNvdXJjZURhdGEodG9JbXBsKHJl
c291cmNlVVJMKSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAg
ICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXS0ZyYW1lR2V0V2ViQXJjaGl2ZShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1l
R2V0V2ViQXJjaGl2ZUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRv
SW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihj
b250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUo
W2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxiYWNr
KHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGQ3ZDBiZWZlYjAzMGY0OWMxNWJjZjY1
ZDRhYzIwYzhhMzc1OGFmYTMuLjQyMDc2NDFkMTliMDkwYjFkZDhhMTFiZjI0NjlkNTc1Y2JjYzIx
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjU2OCw3
ICsyNTY4LDkgQEAgdm9pZCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXQKIAogdm9pZCBXS1BhZ2VHZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHRvR2VuZXJp
Y0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJ
OjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBj
b250ZXh0KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRh
KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0FzTUhU
TUxEYXRhRnVuY3Rpb24gY2FsbGJhY2spCkBAIC0yNjU0LDcgKzI2NTYsOSBAQCB2b2lkIFdLUGFn
ZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1ByaW50SW5mbwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXS1BhZ2VEcmF3UGFnZXNU
b1BERihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJ
bmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdLUGFnZURyYXdUb1BERkZ1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+ZHJhd1Bh
Z2VzVG9QREYodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5m
byksIGZpcnN0LCBjb3VudCwgRGF0YUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tG
dW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsKKyAgICB0b0ltcGwocGFnZSktPmRyYXdQYWdl
c1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8p
LCBmaXJzdCwgY291bnQsIFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgewor
ICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CisgICAgfSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggYTVkMTVjYjNhNDNiYWYxODA3NDIwZjQzNGJkNjI5OTkzYTJjMzRmMS4u
ZTAxNDYzMjYyZGE4ZTkxMWZlZTBiZDA5ZWMwZjA5MzdkZTc5MzU2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNDc4LDE1ICsxNDc4
LDggQEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25z
KFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UKIAogLSAodm9pZCljcmVhdGVXZWJBcmNoaXZl
RGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0
aW9uSGFuZGxlciBjb3B5XSk7Ci0KLSAgICBfcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoX3Bh
Z2UtPm1haW5GcmFtZSgpLCBbaGFuZGxlcl0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
QmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopID0gKHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9y
ICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQaXBlIGEgcHJvcGVy
IGVycm9yIGluIGZyb20gdGhlIFdlYlBhZ2VQcm94eS4KLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQmxvY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOnN0YXRpY19jYXN0PGludD4oZXJyb3IpIHVzZXJJbmZvOm5pbF0pOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sod3JhcHBlcigqZGF0YSksIG5p
bCk7CisgICAgX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKF9wYWdlLT5tYWluRnJhbWUoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oQVBJ
OjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSks
IG5pbCk7CiAgICAgfSk7CiB9CiAKQEAgLTI1MjYsMTUgKzI1MTksOCBAQCBzdGF0aWMgaW5saW5l
IE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1pbGVzdG9uZXMoX1dL
UmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsK
LQotICAgIF9wYWdlLT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShfcGFnZS0+bWFpbkZyYW1l
KCksIFtoYW5kbGVyXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewotICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoTlNEYXRh
ICosIE5TRXJyb3IgKikgPSAodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpaGFuZGxlci5n
ZXQoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJv
bSB0aGUgV2ViUGFnZVByb3h5LgotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhu
aWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6c3RhdGljX2Nh
c3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayh3cmFwcGVyKCpkYXRhKSwgbmlsKTsKKyAgICBfcGFn
ZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEq
IGRhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqZGF0YSksIG5pbCk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlJlc291cmNlLmNwcAppbmRleCA0N2M2NGEyZmU0M2U5NTExODFmZmI0MTE3
OTIwNDZmMjQ0MDgzOWMwLi44MTJmYTE2YTlkYjY2NTY1MDQ2ODZjNDUwYTY1OTk3NDk4MDU3ZjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViUmVzb3VyY2UuY3BwCkBAIC0zNDIsMTMgKzM0Miw4IEBAIHN0cnVjdCBSZXNvdXJjZUdldERh
dGFBc3luY0RhdGEgewogfTsKIFdFQktJVF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoUmVzb3Vy
Y2VHZXREYXRhQXN5bmNEYXRhKQogCi1zdGF0aWMgdm9pZCByZXNvdXJjZURhdGFDYWxsYmFjayhB
UEk6OkRhdGEqIHdrRGF0YSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvciwgR1Rhc2sqIHRhc2sp
CitzdGF0aWMgdm9pZCByZXNvdXJjZURhdGFDYWxsYmFjayhBUEk6OkRhdGEqIHdrRGF0YSwgR1Rh
c2sqIHRhc2spCiB7Ci0gICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKLSAgICAgICAgLy8gVGhpcyBmYWlscyB3aGVuIHRoZSBwYWdlIGlzIGNsb3NlZCBvciBmcmFt
ZSBpcyBkZXN0cm95ZWQsIHNvIHdlIGNhbiBqdXN0IGNhbmNlbCB0aGUgb3BlcmF0aW9uLgotICAg
ICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9S
X0NBTkNFTExFRCwgXygiT3BlcmF0aW9uIHdhcyBjYW5jZWxsZWQiKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAgICAgUmVzb3VyY2VHZXREYXRhQXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nh
c3Q8UmVzb3VyY2VHZXREYXRhQXN5bmNEYXRhKj4oZ190YXNrX2dldF90YXNrX2RhdGEodGFzaykp
OwogICAgIGRhdGEtPndlYkRhdGEgPSB3a0RhdGE7CiAgICAgaWYgKCF3a0RhdGEtPmJ5dGVzKCkp
CkBAIC0zNzUsMTMgKzM3MCwxMyBAQCB2b2lkIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGEo
V2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlLCBHQ2FuY2VsbGFibGUqIGNhbgogICAgIEdSZWZQ
dHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhyZXNvdXJjZSwgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwogICAgIGdfdGFza19zZXRfdGFza19kYXRhKHRhc2su
Z2V0KCksIGNyZWF0ZVJlc291cmNlR2V0RGF0YUFzeW5jRGF0YSgpLCByZWludGVycHJldF9jYXN0
PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95UmVzb3VyY2VHZXREYXRhQXN5bmNEYXRhKSk7CiAgICAg
aWYgKHJlc291cmNlLT5wcml2LT5pc01haW5SZXNvdXJjZSkKLSAgICAgICAgcmVzb3VyY2UtPnBy
aXYtPmZyYW1lLT5nZXRNYWluUmVzb3VyY2VEYXRhKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJ
OjpEYXRhKiBkYXRhLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgICAgICBy
ZXNvdXJjZURhdGFDYWxsYmFjayhkYXRhLCBlcnJvciwgdGFzay5nZXQoKSk7CisgICAgICAgIHJl
c291cmNlLT5wcml2LT5mcmFtZS0+Z2V0TWFpblJlc291cmNlRGF0YShbdGFzayA9IFdURk1vdmUo
dGFzayldKEFQSTo6RGF0YSogZGF0YSkgeworICAgICAgICAgICAgcmVzb3VyY2VEYXRhQ2FsbGJh
Y2soZGF0YSwgdGFzay5nZXQoKSk7CiAgICAgICAgIH0pOwogICAgIGVsc2UgewogICAgICAgICBT
dHJpbmcgdXJsID0gU3RyaW5nOjpmcm9tVVRGOChyZXNvdXJjZS0+cHJpdi0+dXJpLmRhdGEoKSk7
Ci0gICAgICAgIHJlc291cmNlLT5wcml2LT5mcmFtZS0+Z2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJM
OjpjcmVhdGUodXJsKS5wdHIoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OkRhdGEqIGRh
dGEsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgIHJlc291cmNlRGF0
YUNhbGxiYWNrKGRhdGEsIGVycm9yLCB0YXNrLmdldCgpKTsKKyAgICAgICAgcmVzb3VyY2UtPnBy
aXYtPmZyYW1lLT5nZXRSZXNvdXJjZURhdGEoQVBJOjpVUkw6OmNyZWF0ZSh1cmwpLnB0cigpLCBb
dGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6RGF0YSogZGF0YSkgeworICAgICAgICAgICAgcmVz
b3VyY2VEYXRhQ2FsbGJhY2soZGF0YSwgdGFzay5nZXQoKSk7CiAgICAgICAgIH0pOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggZTA4MWYxMDI5YTk4MmQzMzZiMDllNjBhNzAwZjU2NzA0MzYyYjc1NS4uZDFh
OWI3YmFlMTQ0ZjlhZGNkYjA5M2M2NmYxMjU1MGU4ZjQ5MDY4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTQxNjcsNyAr
NDE2Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NhdmUoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgV2ViS2l0U2F2ZU1vZGUgc2F2ZU1vZGUsIEdDYW5jCiAgICAgR1Rhc2sqIHRhc2sgPSBnX3Rh
c2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpOwogICAgIGdf
dGFza19zZXRfc291cmNlX3RhZyh0YXNrLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3ZWJr
aXRfd2ViX3ZpZXdfc2F2ZSkpOwogICAgIGdfdGFza19zZXRfdGFza19kYXRhKHRhc2ssIGNyZWF0
ZVZpZXdTYXZlQXN5bmNEYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRl
c3Ryb3lWaWV3U2F2ZUFzeW5jRGF0YSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykuZ2V0Q29udGVu
dHNBc01IVE1MRGF0YShbdGFza10oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmdldENvbnRlbnRzQXNNSFRNTERhdGEo
W3Rhc2tdKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBnZXRDb250ZW50c0FzTUhUTUxEYXRh
Q2FsbGJhY2soZGF0YSwgdGFzayk7CiAgICAgfSk7CiB9CkBAIC00MjMyLDcgKzQyMzIsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
R0ZpbGUqIGZpbGUsIFdlYktpdFNhdgogICAgIGRhdGEtPmZpbGUgPSBmaWxlOwogICAgIGdfdGFz
a19zZXRfdGFza19kYXRhKHRhc2ssIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3Rp
Znk+KGRlc3Ryb3lWaWV3U2F2ZUFzeW5jRGF0YSkpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5n
ZXRDb250ZW50c0FzTUhUTUxEYXRhKFt0YXNrXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykuZ2V0Q29udGVudHNBc01I
VE1MRGF0YShbdGFza10oQVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGdldENvbnRlbnRzQXNN
SFRNTERhdGFDYWxsYmFjayhkYXRhLCB0YXNrKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggZGU5ZTlkMWYzMzAwODY5MjdhNzRkMDRi
MTVlNjI2NDIxNWNlZWE3Yy4uNWVmMDI5MWI1NjRlYjczNmFmNDYwNTlmOWEwYTU1MWEyMWNiNTUy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTIwMywz
NCArMjAzLDI1IEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6
c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25ICiAgICAgcmV0dXJuICptX2FjdGl2
ZUxpc3RlbmVyOwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6OmdldFdlYkFyY2hpdmUoRnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0V2ViQXJjaGl2ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghbV9wYWdlKSB7Ci0g
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BhZ2UtPmdldFdlYkFyY2hp
dmVPZkZyYW1lKHRoaXMsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIGlmICghbV9w
YWdlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbHB0cik7CisgICAgbV9wYWdlLT5nZXRX
ZWJBcmNoaXZlT2ZGcmFtZSh0aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFt
ZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpE
YXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcGFnZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUodGhpcywgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgaWYgKCFtX3BhZ2UpCisg
ICAgICAgIHJldHVybiBjYWxsYmFjayhudWxscHRyKTsKKyAgICBtX3BhZ2UtPmdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKHRoaXMsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJG
cmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQordm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqIHJlc291
cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQog
ewotICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX3BhZ2UtPmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh0aGlzLCByZXNvdXJjZVVSTCwg
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhudWxscHRyKTsKKyAgICBtX3BhZ2UtPmdldFJlc291cmNlRGF0YUZyb21G
cmFtZSgqdGhpcywgcmVzb3VyY2VVUkwsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IDZjNmYxMzBiNmI3
MjRmMTA4MmZjNjQ0MjhiOTM1YmE5N2U5YzFiZGYuLjgxY2VhMjE2ODkwNWE0Yzc0MjM3ZjUxNWVj
MDk5M2JmNTY4MDdkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgK
QEAgLTEwMyw5ICsxMDMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdNYXJrdXBE
b2N1bWVudCgpIGNvbnN0OwogICAgIGJvb2wgaXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25z
dDsKIAotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2
b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3Vy
Y2VEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOworICAgIHZvaWQg
Z2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJMKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRh
dGEqKT4mJik7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYp
OwogICAgIHZvaWQgZGlkRXhwbGljaXRPcGVuKFVSTCYmLCBTdHJpbmcmJiBtaW1lVHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNTBjNTkzYjE5MTEz
ZDcyMTRlYTNkMGQ3ODQzZWRlYWZmYzdkOGFiLi5iYzY0NDdhMTVmM2I1MmY0MjFkYmY0ODMyNmFl
ZTU2OGM2ZmViYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTQxNTMsMTYgKzQxNTMsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJv
ZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCkp
OwogfQogCi0jaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRz
QXNNSFRNTERhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
cmV0dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVh
dGUoZGF0YSkuZ2V0KCkpOworICAgIH07Cit9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1M
RGF0YSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRN
TERhdGEoY2FsbGJhY2tJRCkpOworI2lmIEVOQUJMRShNSFRNTCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRh
Kik+JiYgY2FsbGJhY2spCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKCksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUo
Y2FsbGJhY2spKSk7CiB9CiAjZW5kaWYKIApAQCAtNDE3Nyw0OCArNDE3OCwyOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJy
b3I6OlVua25vd24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShjYWxsYmFja0lEKSk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKCksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6
OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwg
IWZyYW1lKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJh
Y2tJRCkpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxscHRy
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCB0b0FQSURhdGFDYWxsYmFjayhXVEZN
b3ZlKGNhbGxiYWNrKSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUEk6OlVSTCogcmVzb3VyY2VVUkwsIEZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlVSTCogcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJj
ZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS5mcmFtZUlEKCks
IHJlc291cmNlVVJMLT5zdHJpbmcoKSksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJh
Y2spKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJG
cmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJB
cmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0
V2ViQXJjaGl2ZU9mRnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRX
ZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7CisgICAgaWYg
KCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGxwdHIpOworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQpAQCAtNzE0NCwxNSArNzEyNSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2
b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
LXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUo
ZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7Ci19Ci0K
IHZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0
cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsKQEAgLTg1NTEsMTYgKzg1
MjMsOSBAQCB1aW50NjRfdCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcgogICAgIHJldHVybiBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgp
LCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSksIFdURk1vdmUoY2FsbGJhY2spLCBwcmludGlu
Z1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBS
ZWY8RGF0YUNhbGxiYWNrPiYmIGNhbGxiYWNrKQordWludDY0X3QgV2ViUGFnZVByb3h5OjpkcmF3
UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKLSAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZv
LCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJm
b3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICByZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmlu
dEluZm8sIGZpcnN0LCBjb3VudCksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2sp
KSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7
CiB9CiAjZWxpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9y
UHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RXJyb3IqKT4mJiBjYWxsYmFjaykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmNlMzU0OTdlNTIyZjg3NzEzN2Yz
Mjk5NjkyYzczMGE3NjMxMWI4Zi4uOWRkN2FlOGMzNThmOGQyZmYzZDg2NjkxNjQxYThiOWNmYTcy
ODM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM4MCw3ICsz
ODAsNiBAQCBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwog
ZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0gY2xhc3MgV2ViQ29udGVudE1vZGUg
OiB1aW50OF90OwogCi10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEqPiBEYXRhQ2Fs
bGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdDYWxs
YmFjazsKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQpAQCAtMTEyNywx
NSArMTEyNiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0
YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Cisg
ICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJ
OjpEYXRhKik+JiYpOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFt
ZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1l
UHJveHkqLCBBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZy
YW1lUHJveHkqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKKyAgICB2
b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5JiwgQVBJOjpVUkwqLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Cisg
ICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSos
IEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZy
YW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOwogICAgIHZvaWQgZm9yY2VS
ZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xMjkyLDcgKzEyOTEsNyBA
QCBwdWJsaWM6CiAgICAgdWludDY0X3QgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQ
cm94eSosIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4
dGVudCYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50NjRfdCBkcmF3UmVjdFRv
SW1hZ2UoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZvaWQgZHJh
d1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CisgICAgdWludDY0X3Qg
ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEq
KT4mJik7CiAgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdB
bmREcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKQEAg
LTIxNjAsNyArMjE1OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlRXZlbnQodWlu
dDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKTsKIAogICAgIHZvaWQgdm9pZENhbGxiYWNr
KENhbGxiYWNrSUQpOwotICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJh
Y2tJRCk7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdkYmQ5OWViN2Vh
YTg0Y2Y5ZGU1ZTJjNTU4Njk4MDk2OWJjZDllNGYuLmUyMTQ2MTViYzc0ZTdiYTQ3ZDdmMzhkMzI0
YTliYzgzMGZjM2MxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTE2NCw3ICsxNjQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogCiAgICAgIyBDYWxsYmFjayBtZXNzYWdlcwogICAgIFZvaWRDYWxsYmFjayhXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXgg
NTJjZTZlZTYxZmFkMDlkYTIzODk2MmE0YTc3OGM4ZjdhNWMzMmRjZi4uOGNhMDE0YzE0NTBiYzRm
OTA5YjNhZDcwOTQxMzM2MDhhMjRiMmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRpYyB2b2lkIHBh
Z2VEaWREcmF3VG9JbWFnZShjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBp
bWFnZUhhbmRsCiAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJpbnRpbmcoX3dlYkZyYW1l
LmdldCgpLCBwcmludEluZm8pOwogCiAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0g
bmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICBhdXRvIGNhbGxiYWNrID0gV2ViS2l0OjpEYXRh
Q2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2NvbnRleHRdKEFQSTo6RGF0
YSogZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRl
eHQpOwpAQCAtMjkzLDEzICsyOTMsMTAgQEAgc3RhdGljIHZvaWQgcGFnZURpZERyYXdUb0ltYWdl
KGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGwKICAgICAg
ICAgICAgIHZpZXctPl9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSAwOwogICAgICAgICAgICAgdmll
dy0+X3ByaW50aW5nQ2FsbGJhY2tDb25kaXRpb24ubm90aWZ5T25lKCk7CiAgICAgICAgIH0KLSAg
ICB9KTsKLSAgICBfZXhwZWN0ZWRQcmludENhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKLQorICAgIH07CisgICAgX2V4cGVjdGVkUHJpbnRDYWxsYmFjayA9IF93
ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNUb1BERihfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5m
bywgZmlyc3RQYWdlIC0gMSwgbGFzdFBhZ2UgLSBmaXJzdFBhZ2UgKyAxLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29udGV4dC0+Y2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7Ci0KLSAgICBfd2ViRnJhbWUt
PnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8sIGZpcnN0
UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBfZXhwZWN0ZWRQcmludENhbGxiYWNrOwogfQogCiBz
dGF0aWMgdm9pZCBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywg
Y29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgSVBDQ2Fs
bGJhY2tDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCA4YWFmMzM4ZmU4NjI3MDMxYmU2YzQzZmRjZWRlMjA2MDU2ZDVh
YTMwLi4yZDZlMGE1ZGY0YTU1ZGE0MmNiMGIwNzQ3MmYyYTI3YjI2NGNiYWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzYyNyw5ICszNjI3
LDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0lu
Y2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZv
aWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IE1IVE1M
QXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9LCBjYWxsYmFja0lEKSk7
CisgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5n
ZXQoKSkgfSk7CiB9CiAjZW5kaWYKIApAQCAtMzY0OSw3ICszNjQ5LDcgQEAgc3RhdGljIEZyYW1l
KiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICByZXR1cm4gMDsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQog
ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBA
IC0zNjU3LDEyICszNjU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCk7CiAjZW5kaWYKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGlmIChkYXRhKQogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRh
dGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExl
bmd0aChkYXRhLmdldCgpKSkgfTsKICNlbmRpZgotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxs
YmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNv
bnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMzY4Myw3ICszNjgzLDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCiB7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAtMzY5
OCw3ICszNjk4LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWwKICAgICBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVmZmVyKQogICAgICAg
ICBkYXRhUmVmZXJlbmNlID0geyAqYnVmZmVyIH07Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOworICAgIGNh
bGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCiBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJM
KQpAQCAtMzcxNCw3ICszNzE0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291
cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKICAgICByZXR1
cm4gJnN1YnJlc291cmNlLT5kYXRhKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlVVJMU3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJl
c291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM3MjUsMTAgKzM3MjUsMTAgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBkYXRhUmVmZXJlbmNlID0g
eyAqYnVmZmVyIH07Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJh
Y2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVu
Y2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFdl
YkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zNzM4LDEy
ICszNzM4LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJCiAgICAgVU5VU0VEX1BBUkFNKGZy
YW1lSUQpOwogI2VuZGlmCiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsg
Q0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFH
ZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CiAjZW5kaWYKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CisgICAg
Y2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50
V2l0aG91dENhbGxiYWNrKCkKQEAgLTUxODQsMTEgKzUxODQsMTEgQEAgdm9pZCBXZWJQYWdlOjpk
cmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmYKICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmRyYXdQYWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVp
bnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpPiYmIGNhbGxiYWNrKQogewogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBw
ZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBm
aXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRhdGFDYWxsYmFjayh7IENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0s
IGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayh7IENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURh
dGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0
YS5nZXQoKSkpIH0pOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbChGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQ
YWdlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA1OWQzNTQ3MWQzMDM5MmY3YWY2N2M0MjkzOWFhZTkzMmIzOGNhMjc4Li43ODljMmI0Y2FmMDk3
MjlhYzNhZmNkZDMyYTUxMzkwNjJmNTY4OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05NjksNyArOTY5LDcgQEAgcHVibGljOgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKLSAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBj
b3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSk7CiAjZW5kaWYK
IApAQCAtMTU4NSwxNSArMTU4NSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0Q29udGVudHNB
c0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpB
dHRyaWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZv
aWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRl
bnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKLSAgICB2b2lkIGdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDYWxsYmFja0lEKTsKKyAgICB2b2lk
IGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
KT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lk
IGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQpOwogICAgIHZv
aWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQpOwotICAgIHZvaWQg
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdl
dFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAgICAgdm9pZCBydW5K
YXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwg
Q29udGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5n
PiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwog
ICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgppbmRleCA0OTAyZDI1ODEzYzM1Y2FiYTkxZWY0YzlkODIyMzAwYzUwMWU5ZDBiLi4yZjBiMTEx
MWIzMTBlODk0YTkzMmJlNmI2NDFmMTU0YmJhMWIzYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxMCwxNSAr
MjEwLDE1IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdl
YktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0Q29udGVudHNBc0F0dHJp
YnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0
KSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENvbnRlbnRzQXNNSFRN
TERhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc01I
VE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMK
ICNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBHZXRS
ZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0
cmluZyByZXNvdXJjZVVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
IC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMK
KyAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlKSBBc3luYwogICAgIEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBH
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAtPiAoSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEpIEFzeW5jCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEdldFdl
YkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlKSBBc3luYwogCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0
cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNv
bnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVu
Y2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWls
cykgQXN5bmMKIApAQCAtNDAwLDcgKzQwMCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAg
ICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5n
LCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbikgQXN5bmMKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNv
cmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUpIC0+IChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwotICAgIERyYXdQYWdlc1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIERyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkg
QXN5bmMKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvbXB1dGVQYWdlc0ZvclByaW50
aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQ
cmludEluZm8gcHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMKICAg
ICBEcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419812</attachid>
            <date>2021-02-09 21:16:44 -0800</date>
            <delta_ts>2021-02-09 21:21:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221639-20210209211643.patch</filename>
            <type>text/plain</type>
            <size>39050</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4MWM0NGZhODFhMDZhZmNh
YWUyZDcxMDU1NzkwNGJjNGMwYmE0MDIuLjk4ZTczYjJmYjRjZGUxMjFiYzRhMDFkMmE0NjM2N2E1
OGI5ZTY4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDItMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgQ29tcGxl
dGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBEYXRhQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIER1bWV6LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwOgor
ICAgICAgICAoV0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEpOgorICAgICAgICAoV0tGcmFtZUdl
dFJlc291cmNlRGF0YSk6CisgICAgICAgIChXS0ZyYW1lR2V0V2ViQXJjaGl2ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5OjpnZXRXZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHk6OmdldFJlc291cmNlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06CisgICAg
ICAgICgtW1dLUHJpbnRpbmdWaWV3IF9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvbmRh
cnlUaHJlYWRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQgb2YgUHJpbnRG
aW5pc2hlZENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3Bw
CmluZGV4IDhlNGUxYTViN2JjMzViNWFlYTY0ZDg4YWEwNzA1YWYwY2NkNjYwZjMuLjdjMzk0ZGNj
YmMzODFkZDUyODZlY2Y3ZWE1NjQxZjM2NmQ2ZGNlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBAIC0xMzksMTUgKzEzOSwyMSBAQCBXS0ZyYW1lSW5mb1Jl
ZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiAKIHZvaWQgV0tG
cmFtZUdldE1haW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZUdldFJl
c291cmNlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1w
bChmcmFtZVJlZiktPmdldE1haW5SZXNvdXJjZURhdGEodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlv
bihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldE1haW5SZXNv
dXJjZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAg
IGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAog
dm9pZCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVm
IHJlc291cmNlVVJMLCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZv
aWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0UmVzb3VyY2VEYXRhKHRv
SW1wbChyZXNvdXJjZVVSTCksIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2Fs
bGJhY2spKTsKKyAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRSZXNvdXJjZURhdGEodG9JbXBsKHJl
c291cmNlVVJMKSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAg
ICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXS0ZyYW1lR2V0V2ViQXJjaGl2ZShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1l
R2V0V2ViQXJjaGl2ZUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRv
SW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihj
b250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUo
W2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxiYWNr
KHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGQ3ZDBiZWZlYjAzMGY0OWMxNWJjZjY1
ZDRhYzIwYzhhMzc1OGFmYTMuLjc2ZTA4OTQ3Y2VlMWU0NmIzMjlhMjBmMGQ0NWU2MmE1ZWYzMzY3
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjU2OCwx
MyArMjU2OCwxNyBAQCB2b2lkIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV0tQYWdl
UmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldAogCiB2b2lkIFdLUGFnZUdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQs
IFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsK
LSAgICB0b0ltcGwocGFnZVJlZiktPmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodG9HZW5l
cmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChB
UEk6OkRhdGEqIGRhdGEpIHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIs
IGNvbnRleHQpOworICAgIH0pOwogfQogCiB2b2lkIFdLUGFnZUdldENvbnRlbnRzQXNNSFRNTERh
dGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENvbnRlbnRzQXNN
SFRNTERhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5nZXRDb250ZW50c0FzTUhUTUxEYXRhKHRvR2VuZXJpY0NhbGxiYWNrRnVu
Y3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRl
bnRzQXNNSFRNTERhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKQEAgLTI2NTQsNyArMjY1OCw5IEBAIHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiB2b2lkIFdLUGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgV0tQYWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJh
bWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBE
YXRhQ2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNh
bGxiYWNrKSkpOworICAgIHRvSW1wbChwYWdlKS0+ZHJhd1BhZ2VzVG9QREYodG9JbXBsKGZyYW1l
KSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIGZpcnN0LCBjb3VudCwgW2Nv
bnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgIGNhbGxiYWNrKHRv
QVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhNWQx
NWNiM2E0M2JhZjE4MDc0MjBmNDM0YmQ2Mjk5OTNhMmMzNGYxLi5lMDE0NjMyNjJkYThlOTExZmVl
MGJkMDllYzBmMDkzN2RlNzkzNTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE0NzgsMTUgKzE0NzgsOCBAQCBpbmxpbmUgT3B0aW9u
U2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlv
biAqY29uZmlndQogCiAtICh2b2lkKWNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsK
LQotICAgIF9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZGcmFtZShfcGFnZS0+bWFpbkZyYW1lKCksIFto
YW5kbGVyXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoTlNEYXRhICosIE5T
RXJyb3IgKikgPSAodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsK
LSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkg
ewotICAgICAgICAgICAgLy8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUg
V2ViUGFnZVByb3h5LgotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhuaWwsIFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50
PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXJCbG9jayh3cmFwcGVyKCpkYXRhKSwgbmlsKTsKKyAgICBfcGFnZS0+Z2V0
V2ViQXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsKIH0K
IApAQCAtMjUyNiwxNSArMjUxOSw4IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6
OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQCiAKIC0gKHZv
aWQpX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
RGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVy
ID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwotCi0gICAgX3BhZ2UtPmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKF9wYWdlLT5tYWluRnJhbWUoKSwgW2hhbmRsZXJdKEFQSTo6
RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAg
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlckJsb2NrKShOU0RhdGEgKiwgTlNFcnJvciAqKSA9ICh2
b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAgICAgICBpZiAo
ZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogUGlwZSBhIHByb3BlciBlcnJvciBpbiBmcm9tIHRoZSBXZWJQYWdlUHJveHku
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2NrKG5pbCwgW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpzdGF0aWNfY2FzdDxpbnQ+KGVycm9yKSB1c2Vy
SW5mbzpuaWxdKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
ckJsb2NrKHdyYXBwZXIoKmRhdGEpLCBuaWwpOworICAgIF9wYWdlLT5nZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZShfcGFnZS0+bWFpbkZyYW1lKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKCpkYXRhKSwgbmlsKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3Vy
Y2UuY3BwCmluZGV4IDQ3YzY0YTJmZTQzZTk1MTE4MWZmYjQxMTc5MjA0NmYyNDQwODM5YzAuLjgx
MmZhMTZhOWRiNjY1NjUwNDY4NmM0NTBhNjU5OTc0OTgwNTdmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKQEAg
LTM0MiwxMyArMzQyLDggQEAgc3RydWN0IFJlc291cmNlR2V0RGF0YUFzeW5jRGF0YSB7CiB9Owog
V0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVDVChSZXNvdXJjZUdldERhdGFBc3luY0RhdGEp
CiAKLXN0YXRpYyB2b2lkIHJlc291cmNlRGF0YUNhbGxiYWNrKEFQSTo6RGF0YSogd2tEYXRhLCBD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yLCBHVGFzayogdGFzaykKK3N0YXRpYyB2b2lkIHJlc291
cmNlRGF0YUNhbGxiYWNrKEFQSTo6RGF0YSogd2tEYXRhLCBHVGFzayogdGFzaykKIHsKLSAgICBp
ZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAvLyBUaGlz
IGZhaWxzIHdoZW4gdGhlIHBhZ2UgaXMgY2xvc2VkIG9yIGZyYW1lIGlzIGRlc3Ryb3llZCwgc28g
d2UgY2FuIGp1c3QgY2FuY2VsIHRoZSBvcGVyYXRpb24uCi0gICAgICAgIGdfdGFza19yZXR1cm5f
bmV3X2Vycm9yKHRhc2ssIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJPcGVy
YXRpb24gd2FzIGNhbmNlbGxlZCIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBSZXNv
dXJjZUdldERhdGFBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUdldERhdGFB
c3luY0RhdGEqPihnX3Rhc2tfZ2V0X3Rhc2tfZGF0YSh0YXNrKSk7CiAgICAgZGF0YS0+d2ViRGF0
YSA9IHdrRGF0YTsKICAgICBpZiAoIXdrRGF0YS0+Ynl0ZXMoKSkKQEAgLTM3NSwxMyArMzcwLDEz
IEBAIHZvaWQgd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YShXZWJLaXRXZWJSZXNvdXJjZSog
cmVzb3VyY2UsIEdDYW5jZWxsYWJsZSogY2FuCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFk
b3B0R1JlZihnX3Rhc2tfbmV3KHJlc291cmNlLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJE
YXRhKSk7CiAgICAgZ190YXNrX3NldF90YXNrX2RhdGEodGFzay5nZXQoKSwgY3JlYXRlUmVzb3Vy
Y2VHZXREYXRhQXN5bmNEYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRl
c3Ryb3lSZXNvdXJjZUdldERhdGFBc3luY0RhdGEpKTsKICAgICBpZiAocmVzb3VyY2UtPnByaXYt
PmlzTWFpblJlc291cmNlKQotICAgICAgICByZXNvdXJjZS0+cHJpdi0+ZnJhbWUtPmdldE1haW5S
ZXNvdXJjZURhdGEoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OkRhdGEqIGRhdGEsIENhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgIHJlc291cmNlRGF0YUNhbGxiYWNr
KGRhdGEsIGVycm9yLCB0YXNrLmdldCgpKTsKKyAgICAgICAgcmVzb3VyY2UtPnByaXYtPmZyYW1l
LT5nZXRNYWluUmVzb3VyY2VEYXRhKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpEYXRhKiBk
YXRhKSB7CisgICAgICAgICAgICByZXNvdXJjZURhdGFDYWxsYmFjayhkYXRhLCB0YXNrLmdldCgp
KTsKICAgICAgICAgfSk7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBTdHJpbmc6
OmZyb21VVEY4KHJlc291cmNlLT5wcml2LT51cmkuZGF0YSgpKTsKLSAgICAgICAgcmVzb3VyY2Ut
PnByaXYtPmZyYW1lLT5nZXRSZXNvdXJjZURhdGEoQVBJOjpVUkw6OmNyZWF0ZSh1cmwpLnB0cigp
LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6RGF0YSogZGF0YSwgQ2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewotICAgICAgICAgICAgcmVzb3VyY2VEYXRhQ2FsbGJhY2soZGF0YSwgZXJy
b3IsIHRhc2suZ2V0KCkpOworICAgICAgICByZXNvdXJjZS0+cHJpdi0+ZnJhbWUtPmdldFJlc291
cmNlRGF0YShBUEk6OlVSTDo6Y3JlYXRlKHVybCkucHRyKCksIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0oQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgICAgICByZXNvdXJjZURhdGFDYWxsYmFjayhk
YXRhLCB0YXNrLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBlMDgxZjEw
MjlhOTgyZDMzNmIwOWU2MGE3MDBmNTY3MDQzNjJiNzU1Li5kMWE5YjdiYWUxNDRmOWFkY2RiMDkz
YzY2ZjEyNTUwZThmNDkwNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNDE2Nyw3ICs0MTY3LDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2F2ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTYXZlTW9kZSBz
YXZlTW9kZSwgR0NhbmMKICAgICBHVGFzayogdGFzayA9IGdfdGFza19uZXcod2ViVmlldywgY2Fu
Y2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7CiAgICAgZ190YXNrX3NldF9zb3VyY2VfdGFn
KHRhc2ssIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19zYXZlKSk7
CiAgICAgZ190YXNrX3NldF90YXNrX2RhdGEodGFzaywgY3JlYXRlVmlld1NhdmVBc3luY0RhdGEo
KSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVZpZXdTYXZlQXN5bmNE
YXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5nZXRDb250ZW50c0FzTUhUTUxEYXRhKFt0YXNr
XShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdl
dFBhZ2Uod2ViVmlldykuZ2V0Q29udGVudHNBc01IVE1MRGF0YShbdGFza10oQVBJOjpEYXRhKiBk
YXRhKSB7CiAgICAgICAgIGdldENvbnRlbnRzQXNNSFRNTERhdGFDYWxsYmFjayhkYXRhLCB0YXNr
KTsKICAgICB9KTsKIH0KQEAgLTQyMzIsNyArNDIzMiw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3
X3NhdmVfdG9fZmlsZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHRmlsZSogZmlsZSwgV2ViS2l0
U2F2CiAgICAgZGF0YS0+ZmlsZSA9IGZpbGU7CiAgICAgZ190YXNrX3NldF90YXNrX2RhdGEodGFz
aywgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVZpZXdTYXZl
QXN5bmNEYXRhKSk7CiAKLSAgICBnZXRQYWdlKHdlYlZpZXcpLmdldENvbnRlbnRzQXNNSFRNTERh
dGEoW3Rhc2tdKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7
CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5nZXRDb250ZW50c0FzTUhUTUxEYXRhKFt0YXNrXShBUEk6
OkRhdGEqIGRhdGEpIHsKICAgICAgICAgZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKGRh
dGEsIHRhc2spOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcAppbmRleCBkZTllOWQxZjMzMDA4NjkyN2E3NGQwNGIxNWU2MjY0MjE1Y2VlYTdjLi41
ZWYwMjkxYjU2NGViNzM2YWY0NjA1OWY5YTBhNTUxYTIxY2I1NTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMjAzLDM0ICsyMDMsMjUgQEAgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5JiBXZWJGcmFtZVByb3h5OjpzZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkoQ29tcGxldGlvbkgKICAgICByZXR1cm4gKm1fYWN0aXZlTGlzdGVuZXI7CiB9CiAKLXZv
aWQgV2ViRnJhbWVQcm94eTo6Z2V0V2ViQXJjaGl2ZShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFt
ZVByb3h5OjpnZXRXZWJBcmNoaXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+
JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUodGhpcywgV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhudWxscHRyKTsKKyAgICBtX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKHRo
aXMsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRNYWlu
UmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lUHJveHk6OmdldE1haW5SZXNv
dXJjZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIs
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbV9wYWdlLT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh0aGlzLCBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKG51bGxwdHIpOworICAgIG1fcGFnZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodGhp
cywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6OmdldFJlc291
cmNlRGF0YShBUEk6OlVSTCogcmVzb3VyY2VVUkwsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkZyYW1l
UHJveHk6OmdldFJlc291cmNlRGF0YShBUEk6OlVSTCogcmVzb3VyY2VVUkwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX3BhZ2Up
IHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcGFnZS0+Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKHRoaXMsIHJlc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGxw
dHIpOworICAgIG1fcGFnZS0+Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKCp0aGlzLCByZXNvdXJj
ZVVSTCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYkZyYW1lUHJveHk6OnNldFVu
cmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggNmM2ZjEzMGI2YjcyNGYxMDgyZmM2NDQyOGI5MzVi
YTk3ZTljMWJkZi4uODFjZWEyMTY4OTA1YTRjNzQyMzdmNTE1ZWMwOTkzYmY1NjgwN2Q0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMTAzLDkgKzEwMyw5IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBnZXRX
ZWJBcmNoaXZlKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRh
KEFQSTo6VVJMKiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQ
STo6RGF0YSopPiYmKTsKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZURhdGEoQVBJ
OjpVUkwqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKIAogICAgIHZv
aWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRFeHBs
aWNpdE9wZW4oVVJMJiYsIFN0cmluZyYmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM1MGM1OTNiMTkxMTNkNzIxNGVhM2QwZDc4NDNlZGVh
ZmZjN2Q4YWIuLmJjNjQ0N2ExNWYzYjUyZjQyMWRiZjQ4MzI2YWVlNTY4YzZmZWJhNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDE1MywxNiArNDE1Mywx
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSk7CiB9CiAKLSNpZiBFTkFCTEUo
TUhUTUwpCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQorc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhKT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6
OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsK
LSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpV
bmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICByZXR1cm4gW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpIG11dGFi
bGUgeworICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0ZShkYXRhKS5nZXQoKSk7Cisg
ICAgfTsKK30KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eSgiV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhIl9zKSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc01IVE1MRGF0YShjYWxsYmFja0lEKSk7
CisjaWYgRU5BQkxFKE1IVE1MKQordm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRN
TERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKK3sK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNN
SFRNTERhdGEoKSwgdG9BUElEYXRhQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpKTsKIH0KICNl
bmRpZgogCkBAIC00MTc3LDQ4ICs0MTc4LDI4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2Fs
bGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSwgdG9BUElEYXRhQ2Fs
bGJhY2soV1RGTW92ZShjYWxsYmFjaykpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNr
KQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhZnJhbWUpIHsKLSAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGxwdHIpOworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJh
bWUtPmZyYW1lSUQoKSksIHRvQVBJRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSYgZnJhbWUs
IEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEq
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3du
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2Fs
bGJhY2tJRCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0
UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmlu
ZygpKSwgdG9BUElEYXRhQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNh
bGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSJf
cykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZy
YW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm4gY2FsbGJhY2sobnVsbHB0cik7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgdG9BUElE
YXRhQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCkBAIC03
MTQ0LDE1ICs3MTI1LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayhDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX2NhbGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgaWYg
KCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxs
YmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEo
KSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6
OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5n
Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpAQCAtODU1MSwxNiArODUyMyw5IEBAIHVpbnQ2NF90IFdl
YlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQ
cmludEluZm8mIHByCiAgICAgcmV0dXJuIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwg
aW1hZ2VTaXplKSwgV1RGTW92ZShjYWxsYmFjayksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1Bl
cmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCit1aW50NjRfdCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNh
bGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxs
YmFjay0+aW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3
UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2Fs
bGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbikpOworICAgIHJldHVybiBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50
KSwgdG9BUElEYXRhQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpLCBwcmludGluZ1NlbmRPcHRp
b25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JN
KEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQVBJOjpFcnJvciopPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA2Y2UzNTQ5N2U1MjJmODc3MTM3ZjMyOTk2OTJjNzMwYTc2MzExYjhm
Li45ZGQ3YWU4YzM1OGY4ZDJmZjNkODY2OTE2NDFhOGI5Y2ZhNzI4MzVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzgwLDcgKzM4MCw2IEBAIGVudW0gY2xhc3Mg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVuZG9PclJl
ZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6IHVpbnQ4X3Q7CiAKLXR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwogCiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCkBAIC0xMTI3LDE1ICsxMTI2LDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICNpZiBFTkFCTEUo
TUhUTUwpCi0gICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldENvbnRlbnRz
QXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAjZW5k
aWYKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAg
dm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSosIEFQSTo6VVJMKiwg
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKFdlYkZyYW1lUHJveHkmLCBBUEk6OlVSTCosIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlv
bkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7
CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9p
ZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2
ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRh
Kik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVm
UHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4mJik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiYmKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTEyOTIsNyArMTI5MSw3IEBAIHB1YmxpYzoKICAgICB1aW50
NjRfdCBjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJ
bmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mLCBkb3VibGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IGRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5
KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmKT4mJik7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFt
ZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50
LCBSZWY8RGF0YUNhbGxiYWNrPiYmKTsKKyAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJG
cmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNv
dW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGRy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpPiYmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6cGFpcjxzaXpl
X3QsIHVpbnQ2NF90PiBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwpAQCAtMjE2MCw3ICsyMTU5LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpOwogCiAgICAgdm9pZCB2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsKICNpZiBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggN2RiZDk5ZWI3ZWFhODRjZjlkZTVlMmM1NTg2OTgw
OTY5YmNkOWU0Zi4uZTIxNDYxNWJjNzRlN2JhNDdkN2YzOGQzMjRhOWJjODMwZmMzYzFjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMTY0LDcgKzE2NCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIENh
bGxiYWNrIG1lc3NhZ2VzCiAgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQotICAgIERhdGFDYWxsYmFjayhJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
cmVzdWx0RGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU3RyaW5nQ2Fs
bGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCA1MmNlNmVlNjFmYWQwOWRhMjM4
OTYyYTRhNzc4YzhmN2E1YzMyZGNmLi44Y2EwMTRjMTQ1MGJjNGY5MDliM2FkNzA5NDEzMzYwOGEy
NGIyZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGlu
Z1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3
Lm1tCkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIHZvaWQgcGFnZURpZERyYXdUb0ltYWdlKGNv
bnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGwKICAgICBfd2Vi
RnJhbWUtPnBhZ2UoKS0+YmVnaW5QcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbyk7
CiAKICAgICBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250
ZXh0OwotICAgIGF1dG8gY2FsbGJhY2sgPSBXZWJLaXQ6OkRhdGFDYWxsYmFjazo6Y3JlYXRlKFtj
b250ZXh0XShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewor
ICAgIGF1dG8gY2FsbGJhY2sgPSBbY29udGV4dF0oQVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQ
Q0NhbGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIoY29udGV4dCk7CkBAIC0yOTMsMTMgKzI5
MywxMCBAQCBzdGF0aWMgdm9pZCBwYWdlRGlkRHJhd1RvSW1hZ2UoY29uc3QgV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbAogICAgICAgICAgICAgdmlldy0+X2V4cGVj
dGVkUHJpbnRDYWxsYmFjayA9IDA7CiAgICAgICAgICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFj
a0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgfQotICAgIH0pOwotICAgIF9leHBlY3Rl
ZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRvSW50ZWdlcigpOwotCisg
ICAgfTsKKyAgICBfZXhwZWN0ZWRQcmludENhbGxiYWNrID0gX3dlYkZyYW1lLT5wYWdlKCktPmRy
YXdQYWdlc1RvUERGKF93ZWJGcmFtZS5nZXQoKSwgcHJpbnRJbmZvLCBmaXJzdFBhZ2UgLSAxLCBs
YXN0UGFnZSAtIGZpcnN0UGFnZSArIDEsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBjb250ZXh0
LT52aWV3ID0gc2VsZjsKLSAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxi
YWNrSUQoKS50b0ludGVnZXIoKTsKLQotICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNU
b1BERihfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbywgZmlyc3RQYWdlIC0gMSwgbGFzdFBhZ2Ug
LSBmaXJzdFBhZ2UgKyAxLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgY29udGV4dC0+Y2FsbGJh
Y2tJRCA9IF9leHBlY3RlZFByaW50Q2FsbGJhY2s7CiB9CiAKIHN0YXRpYyB2b2lkIHBhZ2VEaWRD
b21wdXRlUGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3Rz
LCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9h
dEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDhhYWYzMzhmZTg2MjcwMzFiZTZjNDNmZGNlZGUyMDYwNTZkNWFhMzAuLjJkNmUwYTVkZjRhNTVk
YTQyY2IwYjA3NDcyZjJhMjdiMjY0Y2JhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNjI3LDkgKzM2MjcsOSBAQCB2b2lkIFdlYlBhZ2U6
OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBp
bmNsdWRlQ2hpbAogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlOjpnZXRDb250
ZW50c0FzTUhUTUxEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKHsgTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1I
VE1MRGF0YShtX3BhZ2UuZ2V0KCkpIH0sIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayh7IE1I
VE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9KTsKIH0KICNlbmRp
ZgogCkBAIC0zNjQ5LDcgKzM2NDksNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlv
bihQYWdlKiBwYWdlKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM2NTcsMTIgKzM2NTcsMTIg
QEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICAgICAgZGF0YSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21T
ZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKICNlbmRpZgogCi0gICAg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYg
KGRhdGEpCiAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5n
ZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9
OwogI2VuZGlmCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2so
ZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2Up
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCkBAIC0zNjgzLDcgKzM2ODMsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhy
ZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zNjk4LDcgKzM2OTgsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDYWxsYmFja0lEIGNhbAogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7
ICpidWZmZXIgfTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFj
ayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CisgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5j
ZSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFt
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCkBAIC0zNzE0LDcgKzM3MTQs
NyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRh
dGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5n
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShm
cmFtZUlEKSkgewpAQCAtMzcyNSwxMCArMzcyNSwxMCBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZQogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogICAg
IGlmIChidWZmZXIpCiAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBj
YWxsYmFja0lEKSk7CisgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM3MzgsMTIgKzM3MzgsMTIgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0kKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKIAot
ICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGlmIChkYXRhKQogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRh
dGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgp
KSkgfTsKICNlbmRpZgotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxi
YWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayhkYXRhUmVmZXJl
bmNlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKQpA
QCAtNTE4NCwxMSArNTE4NCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRy
YXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFn
ZURhdGEpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKHsg
Q0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4o
Q0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSwgY2FsbGJhY2tJRCkpOworICAg
IGNhbGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19j
YXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSk7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNv
dW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDU5ZDM1NDcxZDMwMzkyZjdh
ZjY3YzQyOTM5YWFlOTMyYjM4Y2EyNzguLjc4OWMyYjRjYWYwOTcyOWFjM2FmY2RkMzJhNTEzOTA2
MmY1Njg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTk2OSw3ICs5NjksNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJik+JiYpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogICAg
IHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
UHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNlbmRpZgogCkBAIC0xNTg1LDE1ICsxNTg1
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmKT4m
Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgdm9pZCBnZXRDb250ZW50c0FzTUhU
TUxEYXRhKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYp
PiYmIGNhbGxiYWNrKTsKICNlbmRpZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJl
c291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VVUkwsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNv
bnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFy
Y2hpdmVEYXRhKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
KTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUq
LCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb250ZW50V29ybGRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0
ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFp
bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ5MDJkMjU4MTNj
MzVjYWJhOTFlZjRjOWQ4MjIzMDBjNTAxZTlkMGIuLjJmMGIxMTExYjMxMGU4OTRhOTMyYmU2YjY0
MWYxNTRiYmExYjNjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjEwLDE1ICsyMTAsMTUgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICAgICBHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpIC0+IChz
dHJ1Y3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyByZXN1bHQpIEFzeW5jCiAjZW5kaWYKICNp
ZiBFTkFCTEUoTUhUTUwpCi0gICAgR2V0Q29udGVudHNBc01IVE1MRGF0YShXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKCkgLT4gKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYwogI2VuZGlmCi0gICAgR2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKSBBc3luYworICAgIEdldFJlc291cmNlRGF0
YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291
cmNlVVJMKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2Up
IEFzeW5jCiAgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YSgpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKICAg
ICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAKICAg
ICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmll
ciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogCkBAIC00MDAs
NyArNDAwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDb21wdXRlUGFnZXNGb3JQ
cmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVj
dHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RFZGdl
czxmbG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIERyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBX
ZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaW1hZ2UpIEFzeW5jCi0gICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQz
Ml90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJf
dCBjb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8p
IC0+IChzaXplX3QgcGFnZUNvdW50KSBTeW5jaHJvbm91cwogICAgIERyYXdUb1BERmlPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgc2l6ZV90IHBhZ2VDb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBB
c3luYwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>