<?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>163747</bug_id>
          
          <creation_ts>2016-10-20 12:09:11 -0700</creation_ts>
          <short_desc>Many WebGL functions which don&apos;t throw are marked as possibly throwing</short_desc>
          <delta_ts>2016-10-20 18:56:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1242512</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-10-20 12:09:11 -0700</bug_when>
    <thetext>Many WebGL functions which don&apos;t throw are marked as possibly throwing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242513</commentid>
    <comment_count>1</comment_count>
      <attachid>292235</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-10-20 12:09:44 -0700</bug_when>
    <thetext>Created attachment 292235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242550</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-20 13:01:56 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 292235:

compositing/iframes/page-cache-layer-tree.html bug 163754 (authors: joepeck@webkit.org, rniwa@webkit.org, and simon.fraser@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242551</commentid>
    <comment_count>3</comment_count>
      <attachid>292235</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-20 13:02:16 -0700</bug_when>
    <thetext>Comment on attachment 292235
Patch

Rejecting attachment 292235 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 292235, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
eff94d147dca4bd625c1c6942375821a8b1
r207631 = b3a30c1cbe706dab34de75060cd4276f5776f3fb
r207632 = 82407bc8a514f65288e255174797bdd77abef16c
r207633 = 306a5ea1ea0285ac81d2352a9c655d968eea57ed
r207634 = 563b9b84eb222d852cae9d2a699821050aa6c081
r207635 = 87b66b0c37271fe01e794614314072171c46f9ab
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/2332887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242581</commentid>
    <comment_count>4</comment_count>
      <attachid>292251</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-10-20 13:55:35 -0700</bug_when>
    <thetext>Created attachment 292251
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242585</commentid>
    <comment_count>5</comment_count>
      <attachid>292251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-20 13:56:53 -0700</bug_when>
    <thetext>Comment on attachment 292251
Patch for committing

Rejecting attachment 292251 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 292251, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/2333219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242642</commentid>
    <comment_count>6</comment_count>
      <attachid>292276</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-10-20 16:18:52 -0700</bug_when>
    <thetext>Created attachment 292276
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242666</commentid>
    <comment_count>7</comment_count>
      <attachid>292276</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-20 16:54:11 -0700</bug_when>
    <thetext>Comment on attachment 292276
Patch for committing

Clearing flags on attachment: 292276

Committed r207644: &lt;http://trac.webkit.org/changeset/207644&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292235</attachid>
            <date>2016-10-20 12:09:44 -0700</date>
            <delta_ts>2016-10-20 13:02:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163747-20161020120606.patch</filename>
            <type>text/plain</type>
            <size>81184</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTViNzI1NDI0NTE4NTE2
MzA5MThmN2U2ZjQ1YjY0ZTViZjk4MmVkZi4uNTI5YmQ1OTkxNGMwOTFjYmZlMDk4MTJhZWZhMDNi
NGUzNjc1YjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFueSBXZWJH
TCBmdW5jdGlvbnMgd2hpY2ggZG9uJ3QgdGhyb3cgYXJlIG1hcmtlZCBhcyBwb3NzaWJseSB0aHJv
d2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVj
aGFuaWNhbGx5IHJlbW92ZSB0aGUgZXhjZXB0aW9uIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmYpOgorICAgICAg
ICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uaSk6CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rp
b25NYXRyaXgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1h
Z2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3RpdmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5k
QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRB
Y3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbUluZm9M
b2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2aWRlb0ZyYW1lVG9JbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0y
aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
Mml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVQcm9ncmFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYlBvaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVzdG9y
ZUN1cnJlbnRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpyZXN0b3JlQ3VycmVudFRleHR1cmUyRCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsOgorCiAyMDE2LTEwLTE5ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDYwMjUpOiBBbGwg
WW91VHViZSB2aWRlb3MgcGxheSB3aXRoIGJsYWNrIGJhcnMgb24gYWxsIGZvdXIgc2lkZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4IGQ1M2EzYjg0MDBkNWU0NTQ0NzRhZGQ3
MmU4ZjI0NmQ2NTkwNjlhYTUuLjU3YjdhNTJmOGJkMDk2NzVjNDI0ODYwODdjZGRhNDMxZTVhNTcw
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcApAQCAtMjA1LDE3ICsyMDUsMTcg
QEAgc3RhdGljIEpTVmFsdWUgZ2V0T2JqZWN0UGFyYW1ldGVyKEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSogb2JqLCBFeGVjU3RhdGUmIHMKICAgICBXZWJHTEdldEluZm8gaW5mbzsKICAgICBz
d2l0Y2ggKG9iamVjdFR5cGUpIHsKICAgICBjYXNlIGtCdWZmZXI6Ci0gICAgICAgIGluZm8gPSBj
b250ZXh0LmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGlu
Zm8gPSBjb250ZXh0LmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBrUmVuZGVyYnVmZmVyOgotICAgICAgICBpbmZvID0gY29udGV4dC5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBpbmZv
ID0gY29udGV4dC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2Uga1RleHR1cmU6Ci0gICAgICAgIGluZm8gPSBjb250ZXh0Lmdl
dFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGluZm8gPSBjb250ZXh0
LmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBrVmVydGV4QXR0cmliOgogICAgICAgICAvLyB0YXJnZXQgPT4gaW5kZXgKLSAgICAgICAgaW5m
byA9IGNvbnRleHQuZ2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAg
aW5mbyA9IGNvbnRleHQuZ2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMzEwLDcg
KzMxMCw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hl
ZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdMU2hh
ZGVyPj4gc2hhZGVyczsKLSAgICBib29sIHN1Y2NlZWQgPSBjb250ZXh0LmdldEF0dGFjaGVkU2hh
ZGVycyhwcm9ncmFtLCBzaGFkZXJzLCBlYyk7CisgICAgYm9vbCBzdWNjZWVkID0gY29udGV4dC5n
ZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgc2hhZGVycyk7CiAgICAgaWYgKGVjKSB7CiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OwpAQCAtNDAyLDcgKzQwMiw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQcm9ncmFtUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4
dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAgV2ViR0xHZXRJ
bmZvIGluZm8gPSBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcG5hbWUpOwog
ICAgIGlmIChlYykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNDMwLDcgKzQzMCw3IEBAIEpTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRlcjo6dG9XcmFwcGVk
KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4
dC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSwgZWMpOworICAgIFdlYkdMR2V0SW5m
byBpbmZvID0gY29udGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSk7CiAgICAg
aWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00NzEsNyArNDcxLDcgQEAgSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICghbG9jYXRpb24g
JiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKLSAgICBXZWJHTEdldElu
Zm8gaW5mbyA9IGNvbnRleHQuZ2V0VW5pZm9ybShwcm9ncmFtLCBsb2NhdGlvbiwgZWMpOworICAg
IFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC5nZXRVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9u
KTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU1OCwxNiArNTU4LDE2IEBAIHN0YXRp
YyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uZihEYXRhRnVuY3Rpb25Ub0NhbGwgZiwgSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBXCiAgICAgaWYgKHdlYkdMQXJyYXkpIHsKICAgICAgICAgc3dpdGNo
IChmKSB7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtMXY6Ci0gICAgICAgICAgICBjb250ZXh0LnVu
aWZvcm0xZnYobG9jYXRpb24sICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0
LnVuaWZvcm0xZnYobG9jYXRpb24sICp3ZWJHTEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIGZfdW5pZm9ybTJ2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMmZ2
KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3Jt
MmZ2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBmX3VuaWZvcm0zdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTNmdihsb2NhdGlv
biwgKndlYkdMQXJyYXksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTNmdihsb2Nh
dGlvbiwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91
bmlmb3JtNHY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm00ZnYobG9jYXRpb24sICp3ZWJH
TEFycmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm00ZnYobG9jYXRpb24sICp3
ZWJHTEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdmVydGV4QXR0
cmliMXY6CiAgICAgICAgICAgICBjb250ZXh0LnZlcnRleEF0dHJpYjFmdihpbmRleCwgKndlYkdM
QXJyYXkpOwpAQCAtNTkzLDE2ICs1OTMsMTYgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVu
Y3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFcKICAg
ICAKICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgotICAgICAgICBjb250
ZXh0LnVuaWZvcm0xZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgpLCBlYyk7
CisgICAgICAgIGNvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJh
eS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTJ2OgotICAgICAg
ICBjb250ZXh0LnVuaWZvcm0yZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgp
LCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTJmdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgp
LCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTN2Ogot
ICAgICAgICBjb250ZXh0LnVuaWZvcm0zZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXku
c2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXku
ZGF0YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9y
bTR2OgotICAgICAgICBjb250ZXh0LnVuaWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwg
YXJyYXkuc2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTRmdihsb2NhdGlvbiwg
YXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZf
dmVydGV4QXR0cmliMXY6CiAgICAgICAgIGNvbnRleHQudmVydGV4QXR0cmliMWZ2KGluZGV4LCBh
cnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CkBAIC02NDAsMTYgKzY0MCwxNiBAQCBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1bmN0aW9uVG9DYWxsIGYsIEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgVwogICAgIGlmICh3ZWJHTEFycmF5KSB7CiAgICAgICAgIHN3aXRjaCAo
ZikgewogICAgICAgICBjYXNlIGZfdW5pZm9ybTF2OgotICAgICAgICAgICAgY29udGV4dC51bmlm
b3JtMWl2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51
bmlmb3JtMWl2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBmX3VuaWZvcm0ydjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTJpdihs
b2NhdGlvbiwgKndlYkdMQXJyYXksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTJp
dihsb2NhdGlvbiwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgZl91bmlmb3JtM3Y6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0zaXYobG9jYXRpb24s
ICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0zaXYobG9jYXRp
b24sICp3ZWJHTEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5p
Zm9ybTR2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtNGl2KGxvY2F0aW9uLCAqd2ViR0xB
cnJheSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3JtNGl2KGxvY2F0aW9uLCAqd2Vi
R0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNjY2LDE2ICs2NjYsMTYgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRh
RnVuY3Rpb25pKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFcK
ICAgICAKICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgotICAgICAgICBj
b250ZXh0LnVuaWZvcm0xaXYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgpLCBl
Yyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBh
cnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTJ2OgotICAg
ICAgICBjb250ZXh0LnVuaWZvcm0yaXYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6
ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTJpdihsb2NhdGlvbiwgYXJyYXkuZGF0
YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTN2
OgotICAgICAgICBjb250ZXh0LnVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJy
YXkuc2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTNpdihsb2NhdGlvbiwgYXJy
YXkuZGF0YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5p
Zm9ybTR2OgotICAgICAgICBjb250ZXh0LnVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LmRhdGEo
KSwgYXJyYXkuc2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTRpdihsb2NhdGlv
biwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKQEAgLTcwMSwyMSArNzAxLDIxIEBAIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJpeFRvQ2FsbCBmLCBKU0M6
OkV4ZWNTdGF0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAg
ICAKICAgICBSZWZQdHI8RmxvYXQzMkFycmF5PiB3ZWJHTEFycmF5ID0gdG9GbG9hdDMyQXJyYXko
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworCiAgICAgaWYgKHdlYkdMQXJyYXkpIHsKICAgICAgICAgc3dpdGNoIChmKSB7CiAgICAg
ICAgIGNhc2UgZl91bmlmb3JtTWF0cml4MmZ2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3Jt
TWF0cml4MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAg
ICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdM
QXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtTWF0cml4
M2Z2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCB0cmFu
c3Bvc2UsICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtTWF0cml4NGZ2OgotICAgICAgICAgICAgY29udGV4
dC51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsICp3ZWJHTEFycmF5LCBlYyk7
CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9z
ZSwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg
CisKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAt
NzI2LDE2ICs3MjYsMTcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgo
RGF0YUZ1bmN0aW9uTWF0cml4VG9DYWxsIGYsIEpTQzo6RXhlY1N0YXQKICAgICAKICAgICBzd2l0
Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDJmdjoKLSAgICAgICAgY29udGV4dC51
bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEoKSwgYXJyYXku
c2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwg
dHJhbnNwb3NlLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgZl91bmlmb3JtTWF0cml4M2Z2OgotICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVj
KTsKKyAgICAgICAgY29udGV4dC51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBm
X3VuaWZvcm1NYXRyaXg0ZnY6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDRmdihsb2Nh
dGlvbiwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSwgZWMpOworICAgICAg
ICBjb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgYXJyYXkuZGF0
YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDdjMDkxOTdjMzVmN2Nj
YTMwZWI4ZTc3NzVhNWU1YTRjZDY5ZWE0ZTcuLmIxMGE3NGJjZDVhNWMyNmFhY2NkZTY4ZmFjY2U3
MTE4N2Y5MTFiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMTc1LDcgKzExNzUsNyBAQCB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaQogICAgICAgICB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJbWFnZTJE
IiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxWaWRlb0VsZW1lbnQsIHRhcmdldCwgbGV2ZWwsIEdy
YXBoaWNzQ29udGV4dDNEOjpOT05FLCB2aWRlby0+dmlkZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9I
ZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0KSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSB2aWRlb0ZyYW1lVG9JbWFnZSh2
aWRlbywgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCksIGVjKTsKKyAgICBSZWZQdHI8
SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFtZVRvSW1hZ2UodmlkZW8sIEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAg
dGV4U3ViSW1hZ2UyREltcGwodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgZm9ybWF0
LCB0eXBlLCBpbWFnZS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6Okh0bWxEb21WaWRlbywgbV91
bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBlYyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAy
YTVhYWIxZTIxZDEzZTA3ODAwNzdmNTZjOGYxNTE4M2Q1ODg5OTA1Li40NGFhZGM3ODZjM2UzNjY0
ZDk0MmFhNDY1N2VhZTY3NTAwYzc1YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbgogICAgICAgICB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhT
dWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxWaWRlb0VsZW1lbnQsIHRhcmdldCwg
bGV2ZWwsIGZvcm1hdCwgdmlkZW8tPnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCks
IDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFtZVRvSW1hZ2UodmlkZW8sIElt
YWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpLCBlYyk7CisgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLCBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFn
ZU1vZGUoKSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIHRleFN1Yklt
YWdlMkRJbXBsKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGZvcm1hdCwgdHlwZSwg
aW1hZ2UuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tVmlkZW8sIG1fdW5wYWNrRmxp
cFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA5
ZGU3MWRkYTAzZDI4YmIwNjVmMDUzMTUwZDgxMDM4NTBjMjczMTQ0Li44NDBmZTMyMDNiYTlmODE0
MDE0NGU2NzIwNWQyZDVmMWQ5ZWE0MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtODQ1LDcgKzg0
NSw3IEBAIHVuc2lnbmVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpemVJbkJ5dGVzKEdD
M0RlbnVtIHR5cGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJikK
K3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0
ZXh0dXJlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSwgRXhjZXB0aW9uQ29kZSYpCiAgICAgbV9j
b250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hh
ZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjphdHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hh
ZGVyKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2Vi
R0xPYmplY3QoImF0dGFjaFNoYWRlciIsIHByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0
KCJhdHRhY2hTaGFkZXIiLCBzaGFkZXIpKQogICAgICAgICByZXR1cm47CkBAIC04NjksNyArODY5
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphdHRhY2hTaGFkZXIoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlcioKICAgICBzaGFkZXItPm9uQXR0YWNoZWQoKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQXR0cmliTG9jYXRpb24o
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEF0
dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVdlYkdMT2JqZWN0KCJiaW5kQXR0cmliTG9jYXRpb24iLCBwcm9ncmFtKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTAzLDcgKzkwMyw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Ymlu
ZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNv
ZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDM0RlbnVt
IHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGRlbGV0ZWQ7CiAgICAg
aWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgiYmluZEJ1ZmZlciIsIGJ1ZmZlciwgZGVsZXRlZCkp
CkBAIC05MjgsNyArOTI4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5k
QnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlciwKICAgICAgICAgYnVm
ZmVyLT5zZXRUYXJnZXQodGFyZ2V0KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
aW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIp
CiB7CiAgICAgYm9vbCBkZWxldGVkOwogICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJp
bmRGcmFtZWJ1ZmZlciIsIGJ1ZmZlciwgZGVsZXRlZCkpCkBAIC05NDYsNyArOTQ2LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFy
Z2V0LCBXZWJHTEZyYW1lYnVmZmUKICAgICBhcHBseVN0ZW5jaWxUZXN0KCk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJn
ZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiByZW5kZXJCdWZmZXIsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRh
cmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlckJ1ZmZlcikKIHsKICAgICBib29sIGRlbGV0
ZWQ7CiAgICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgiYmluZFJlbmRlcmJ1ZmZlciIsIHJl
bmRlckJ1ZmZlciwgZGVsZXRlZCkpCkBAIC05NjMsNyArOTYzLDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xS
ZW5kZXJidWYKICAgICAgICAgcmVuZGVyQnVmZmVyLT5zZXRIYXNFdmVyQmVlbkJvdW5kKCk7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRleHR1cmUoR0MzRGVudW0g
dGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFdlYkdM
VGV4dHVyZSogdGV4dHVyZSkKIHsKICAgICBib29sIGRlbGV0ZWQ7CiAgICAgaWYgKCFjaGVja09i
amVjdFRvQmVCb3VuZCgiYmluZFRleHR1cmUiLCB0ZXh0dXJlLCBkZWxldGVkKSkKQEAgLTEwNDUs
NyArMTA0NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmxlbmRGdW5jU2Vw
YXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSCiAgICAgbV9jb250ZXh0LT5ibGVu
ZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgbG9uZyBsb25nIHNpemUsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBzaXplLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xMDc1LDcgKzEwNzUsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25n
IGxvbmcgc2l6ZSwgR0MzRAogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXImIGRhdGEsIEdDM0Rl
bnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyJiBkYXRhLCBHQzNEZW51
bSB1c2FnZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlciYgZGF0YSwgRwogICAg
IH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0Rl
bnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3JiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0
aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEx
MTksNyArMTExOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0
YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyYgZGF0CiAgICAgfQogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0
LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFy
Z2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xMTQ3LDcgKzExNDcs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LAogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25n
IG9mZnNldCwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhLCBFeGNlcHRpb25Db2RlJikK
K3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0
YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0YSkK
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBA
IC0xMjQxLDcgKzEyNDEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbG9y
TWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQwogICAgIG1fY29udGV4
dC0+Y29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4
Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hh
ZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiY29tcGlsZVNoYWRlciIsIHNoYWRlcikpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE0MzcsNyArMTQzNyw3IEBAIFJlZlB0cjxXZWJHTFJlbmRlcmJ1
ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKICAg
ICByZXR1cm4gV1RGTW92ZShidWZmZXIpOwogfQogCi1SZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlLCBFeGNlcHRp
b25Db2RlJikKK1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTYyLDcgKzE1NjIsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlcHRoUmFuZ2UoR0MzRGZsb2F0IHpOZWFy
LCBHQzNEZmxvYXQgekZhcikKICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIp
OwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFjaFNoYWRlcihXZWJH
TFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hhZGVyKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImRldGFjaFNoYWRlciIsIHByb2dy
YW0pIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZXRhY2hTaGFkZXIiLCBzaGFkZXIpKQogICAg
ICAgICByZXR1cm47CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogICAgIG1fY29udGV4dC0+ZGlzYWJsZShj
YXApOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRl
eCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47
CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgRwogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdBcnJheXMo
R0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50LCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0FycmF5cyhHQzNEZW51
bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCiB7CiAgICAgaWYgKCF2YWxp
ZGF0ZURyYXdBcnJheXMoImRyYXdBcnJheXMiLCBtb2RlLCBmaXJzdCwgY291bnQsIDApKQogICAg
ICAgICByZXR1cm47CkBAIC0xOTUzLDcgKzE5NTMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNp
egogICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdD
M0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNp
emVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0KQogewogICAgIHVuc2ln
bmVkIG51bUVsZW1lbnRzID0gMDsKICAgICBpZiAoIXZhbGlkYXRlRHJhd0VsZW1lbnRzKCJkcmF3
RWxlbWVudHMiLCBtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBudW1FbGVtZW50cywgMCkpCkBA
IC0xOTk1LDcgKzE5OTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuYWJs
ZShHQzNEZW51bSBjYXApCiAgICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWlu
dCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMjQsNyArMjAyNCw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Zmx1c2goKQogICAgIG1fY29udGV4
dC0+Zmx1c2goKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdD
M0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZlciwgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciogYnVmZmVyKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlRnJhbWVidWZmZXJGdW5j
UGFyYW1ldGVycygiZnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLCB0YXJnZXQsIGF0dGFjaG1lbnQp
KQogICAgICAgICByZXR1cm47CkBAIC0yMDU2LDcgKzIwNTYsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudQogICAgIGFwcGx5U3RlbmNpbFRlc3QoKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJl
LCBHQzNEaW50IGxldmVsLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBh
dHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgR0Mz
RGludCBsZXZlbCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgdGFy
Z2V0LCBhdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzNyw3ICsyMTM3LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0
YXJnZXQpCiAgICAgdGV4LT5nZW5lcmF0ZU1pcG1hcExldmVsSW5mbygpOwogfQogCi1SZWZQdHI8
V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVBdHRy
aWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYp
CitSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRB
Y3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJn
ZXRBY3RpdmVBdHRyaWIiLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MTUwLDcgKzIxNTAsNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKgogICAgIHJldHVybiBXZWJH
TEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5zaXplKTsKIH0K
IAotUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBFeGNl
cHRpb25Db2RlJikKK1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBp
bmRleCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdl
YkdMT2JqZWN0KCJnZXRBY3RpdmVVbmlmb3JtIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjE2Niw3ICsyMTY2LDcgQEAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0KICAg
ICByZXR1cm4gV2ViR0xBY3RpdmVJbmZvOjpjcmVhdGUoaW5mby5uYW1lLCBpbmZvLnR5cGUsIGlu
Zm8uc2l6ZSk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNo
ZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgVmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRl
cj4+JiBzaGFkZXJPYmplY3RzLCBFeGNlcHRpb25Db2RlJikKK2Jvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgVmVj
dG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+JiBzaGFkZXJPYmplY3RzKQogewogICAgIHNoYWRlck9i
amVjdHMuY2xlYXIoKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVdlYkdMT2JqZWN0KCJnZXRBdHRhY2hlZFNoYWRlcnMiLCBwcm9ncmFtKSkKQEAgLTIyMDEs
NyArMjIwMSw3IEBAIEdDM0RpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0cmli
TG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zCiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0QXR0cmliTG9jYXRpb24ob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBuYW1lKTsKIH0KIAot
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRl
cihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikKK1dlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0ZXIoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0yMjQ3LDcgKzIy
NDcsNyBAQCBHQzNEZW51bSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRFcnJvcigpCiAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKIH0KIAotV2ViR0xHZXRJbmZvIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIEdDM0RlbnVtIHBuYW1lKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFByb2dyYW1QYXJhbWV0ZXIiLCBwcm9n
cmFtKSkKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwpAQCAtMjI3NCwxNCArMjI3NCwx
NCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBh
cmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYQogICAgIH0KIH0KIAotU3RyaW5nIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgRXhjZXB0aW9uQ29kZSYpCitTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFByb2dyYW1JbmZv
TG9nIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5z
dXJlTm90TnVsbChtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKG9iamVjdE9yWmVybyhwcm9n
cmFtKSkpOwogfQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4
Y2VwdGlvbkNvZGUmKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKQEAgLTIzNDYsNyArMjM0Niw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0
CiAgICAgfQogfQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEdDM0RlbnVtIHBuYW1lLCBFeGNl
cHRpb25Db2RlJikKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRT
aGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgR0MzRGVudW0gcG5hbWUpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgi
Z2V0U2hhZGVyUGFyYW1ldGVyIiwgc2hhZGVyKSkKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOwpAQCAtMjM2NiwxNCArMjM2NiwxNCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsCiAgICAg
fQogfQogCi1TdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVySW5mb0xv
ZyhXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJikKK1N0cmluZyBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVj
dCgiZ2V0U2hhZGVySW5mb0xvZyIsIHNoYWRlcikpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICByZXR1cm4gZW5zdXJlTm90TnVsbChtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2cob2Jq
ZWN0T3JaZXJvKHNoYWRlcikpKTsKIH0KIAotUmVmUHRyPFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9y
bWF0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0MzRGVudW0gc2hhZGVyVHlwZSwgR0MzRGVudW0gcHJlY2lzaW9uVHlwZSwgRXhjZXB0aW9uQ29k
ZSYpCitSZWZQdHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51bSBzaGFkZXJUeXBlLCBH
QzNEZW51bSBwcmVjaXNpb25UeXBlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQwNCwxNCArMjQwNCwxNCBAQCBSZWZQ
dHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFNoYWRlclByZWNpc2lvbgogICAgIHJldHVybiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1h
dDo6Y3JlYXRlKHJhbmdlWzBdLCByYW5nZVsxXSwgcHJlY2lzaW9uKTsKIH0KIAotU3RyaW5nIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciogc2hh
ZGVyLCBFeGNlcHRpb25Db2RlJikKK1N0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqIHNoYWRlcikKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRTaGFkZXJTb3VyY2Ui
LCBzaGFkZXIpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGVuc3VyZU5v
dE51bGwoc2hhZGVyLT5nZXRTb3VyY2UoKSk7CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbygpOwpAQCAtMjQzOSw3ICsyNDM5LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnUKICAgICB9CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIHVuaWZvcm1Mb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYpCitXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB1bmlmb3JtTG9jYXRpb24pCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0VW5pZm9y
bSIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0yNTY2LDcg
KzI1NjYsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5p
Zm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOwogfQogCi1SZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRp
b24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRVbmlmb3JtTG9jYXRp
b24iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjA0LDcgKzI2MDQs
NyBAQCBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1X
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdD
M0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGlu
ZGV4LCBHQzNEZW51bSBwbmFtZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0yNzUxLDcgKzI3NTEsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmVXaWR0aChHQzNEZmxvYXQgd2lkdGgp
CiAgICAgbV9jb250ZXh0LT5saW5lV2lkdGgod2lkdGgpOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0
aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJsaW5rUHJvZ3JhbSIsIHByb2dyYW0pKQogICAgICAg
ICByZXR1cm47CkBAIC0yODExLDcgKzI4MTEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZsb2F0IHVuaXRzKQog
ICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkxOSw3ICsyOTE5LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzY2lzc29yKEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEcKICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwgeSwg
d2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2hh
ZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFeGNl
cHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2hhZGVyU291cmNl
KFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoInNoYWRlclNv
dXJjZSIsIHNoYWRlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTMyNDEsNyArMzI0MSw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiB9CiAKICNpZiBFTkFCTEUoVklERU8pCi1SZWZQdHI8SW1h
Z2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpZGVvRnJhbWVUb0ltYWdlKEhUTUxWaWRl
b0VsZW1lbnQqIHZpZGVvLCBCYWNraW5nU3RvcmVDb3B5IGJhY2tpbmdTdG9yZUNvcHksIEV4Y2Vw
dGlvbkNvZGUmKQorUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2aWRl
b0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgQmFja2luZ1N0b3JlQ29weSBi
YWNraW5nU3RvcmVDb3B5KQogewogICAgIEludFNpemUgc2l6ZSh2aWRlby0+dmlkZW9XaWR0aCgp
LCB2aWRlby0+dmlkZW9IZWlnaHQoKSk7CiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fZ2VuZXJh
dGVkSW1hZ2VDYWNoZS5pbWFnZUJ1ZmZlcihzaXplKTsKQEAgLTMyODAsNyArMzI4MCw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiAgICAgfQogCiAgICAgLy8gTm9ybWFsIHB1cmUgU1cgcGF0
aC4KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFtZVRvSW1hZ2UodmlkZW8sIElt
YWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpLCBlYyk7CisgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLCBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFn
ZU1vZGUoKSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIHRleEltYWdl
MkRJbXBsKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUsIGltYWdl
LmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6SHRtbERvbVZpZGVvLCBtX3VucGFja0ZsaXBZLCBt
X3VucGFja1ByZW11bHRpcGx5QWxwaGEsIGVjKTsKQEAgLTMzMzUsNyArMzMzNSw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBuYW1lLCBHCiAgICAgdGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUsIDAsIHBh
cmFtLCBmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTFmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEV4
Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0
dXJuOwpAQCAtMzM0OCw3ICszMzQ4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2
IiwgbG9jYXRpb24sIHYsIDEpKQogICAgICAgICByZXR1cm47CkBAIC0zMzU2LDcgKzMzNTYsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTFmdihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSwgdi5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2Rl
JikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAxKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzM2NCw3ICszMzY0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUsIHYpOwog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaShjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaShjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMzM4Miw3ICsz
MzgyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWkoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTFp
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
SW50MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJ
bnQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgdiwgMSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTMzOTksNyArMzM5OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxl
bmd0aCgpLCB2LmRhdGEoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQq
IHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBs
b2NhdGlvbiwgdiwgc2l6ZSwgMSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0MTUsNyArMzQxNSw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCBzaXplLCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTM0Mjgs
NyArMzQyOCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmKGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZv
cm0yZihsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBGbG9hdDMyQXJyYXkmIHYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9u
LCB2LCAyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQzNiw3ICszNDM2LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIHNpemUsIDIpKQogICAgICAgICByZXR1cm47
CkBAIC0zNDQ0LDcgKzM0NDQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDIsIHYpOwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaShjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHkpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJl
dHVybjsKQEAgLTM0NTcsNyArMzQ1Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBt
X2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSk7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2
IiwgbG9jYXRpb24sIHYsIDIpKQogICAgICAgICByZXR1cm47CkBAIC0zNDY1LDcgKzM0NjUsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNv
ZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAyKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzQ3Myw3ICszNDczLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyAyLCB2
KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2YoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHks
IEdDM0RmbG9hdCB6LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0Mz
RGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeikKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4Niw3
ICszNDg2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2YoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9y
bTNmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRp
b24sIHYsIDMpKQogICAgICAgICByZXR1cm47CkBAIC0zNDk0LDcgKzM0OTQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgc2l6ZSwgMykpCiAgICAgICAgIHJldHVy
bjsKQEAgLTM1MDIsNyArMzUwMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9j
b250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gMywgdik7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpKGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQg
eiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEaW50IHopCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTM1MTUsNyArMzUxNSw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaShsb2NhdGlvbi0+bG9j
YXRpb24oKSwgeCwgeSwgeik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJy
YXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJh
eSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zNTIzLDcgKzM1MjMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAg
IG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAv
IDMsIHYuZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwg
R0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0MzRGludCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0
aW9uLCB2LCBzaXplLCAzKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzUzMSw3ICszNTMxLDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHNpemUgLyAzLCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdywgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00Zihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxv
YXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0zNTQ0LDcgKzM1
NDQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00Zihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHosIHcpOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgRmxvYXQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00ZnYiLCBsb2NhdGlv
biwgdiwgNCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1NTIsNyArMzU1Miw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdi5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1l
dGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCA0KSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzU2MCw3ICszNTYwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyA0LCB2KTsKIH0K
IAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6
LCBHQzNEaW50IHcsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTM1
NzMsNyArMzU3Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRp
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVu
aWZvcm00aShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSwgeiwgdyk7CiB9CiAKLXZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIHYsIDQpKQogICAgICAgICByZXR1cm47CkBAIC0zNTgxLDcgKzM1ODEsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1l
dGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2LCBzaXplLCA0KSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzU4OSw0OSArMzU4OSw0OSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDQsIHYpOwog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2Us
IEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNE
ZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24s
IHRyYW5zcG9zZSwgdiwgc2l6ZSwgNCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyA0LCB0cmFuc3Bv
c2UsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRy
aXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdikK
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwg
diwgOSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA5LCB0cmFuc3Bvc2UsIHYuZGF0YSgp
KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0
KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6ZSwgOSkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyA5
LCB0cmFuc3Bvc2UsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
Ym9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJB
cnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRy
YW5zcG9zZSwgdiwgMTYpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMTYsIHRyYW5zcG9z
ZSwgdi5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNv
ZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplLCAxNikpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHNpemUgLyAxNiwgdHJhbnNwb3NlLCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29k
ZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtKQogewogICAgIGJvb2wgZGVsZXRlZDsKICAgICBpZiAoIWNoZWNrT2JqZWN0
VG9CZUJvdW5kKCJ1c2VQcm9ncmFtIiwgcHJvZ3JhbSwgZGVsZXRlZCkpCkBAIC0zNjUyLDcgKzM2
NTIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0oV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJgogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJ2YWxpZGF0ZVByb2dyYW0iLCBw
cm9ncmFtKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzcxOSw3ICszNzE5LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdD
M0RmbG9hdCogdiwgR0MKICAgICB2ZXJ0ZXhBdHRyaWJmdkltcGwoInZlcnRleEF0dHJpYjRmdiIs
IGluZGV4LCB2LCBzaXplLCA0KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0Rl
bnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdD
M0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIGxv
bmcgbG9uZyBvZmZzZXQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDk3NSwxNSArNDk3NSwxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNldEJhY2tEcmF3QnVmZmVyKEdDM0RlbnVtIGJ1ZikKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlQ3VycmVudEZyYW1lYnVmZmVyKCkKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpLCBlYyk7CisgICAgYmlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZl
ckJpbmRpbmcuZ2V0KCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJl
c3RvcmVDdXJyZW50VGV4dHVyZTJEKCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgIGF1
dG8gdGV4dHVyZSA9IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLnRleHR1cmUy
REJpbmRpbmcuZ2V0KCk7Ci0gICAgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIHRleHR1cmUsIGVjKTsKKyAgICBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgdGV4dHVyZSk7CiAgICAgaWYgKHRleHR1cmUgJiYgdGV4dHVyZS0+bmVlZFRv
VXNlQmxhY2tUZXh0dXJlKHRleHR1cmVFeHRlbnNpb25GbGFncygpKSkKICAgICAgICAgbV91bnJl
bmRlcmFibGVUZXh0dXJlVW5pdHMuYWRkKG1fYWN0aXZlVGV4dHVyZVVuaXQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oCmluZGV4IDg0ZWVlYWFjMjIwMTA4YTgzYmUxMjg2NmM5ZjFiZjM5NWJlMmVmMzAuLmM2OTMz
MzA5Mjg1MGQwMTU2MmVmYTUyNTRhN2VkOGUwMjg1ODhkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEy
NSwyNCArMTI1LDI0IEBAIHB1YmxpYzoKICAgICBpbnQgZHJhd2luZ0J1ZmZlcldpZHRoKCkgY29u
c3Q7CiAgICAgaW50IGRyYXdpbmdCdWZmZXJIZWlnaHQoKSBjb25zdDsKIAotICAgIHZvaWQgYWN0
aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBh
dHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiwgV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYmluZEJ1
ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlcios
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFy
Z2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGJpbmRU
ZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlKiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKTsKKyAgICB2b2lkIGF0dGFj
aFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciopOworICAgIHZvaWQgYmluZEF0dHJp
YkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKik7
CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVm
ZmVyKik7CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xS
ZW5kZXJidWZmZXIqKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgV2Vi
R0xUZXh0dXJlKik7CiAgICAgdm9pZCBibGVuZENvbG9yKEdDM0RmbG9hdCByZWQsIEdDM0RmbG9h
dCBncmVlbiwgR0MzRGZsb2F0IGJsdWUsIEdDM0RmbG9hdCBhbHBoYSk7CiAgICAgdm9pZCBibGVu
ZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpOwogICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRl
KEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSk7CiAgICAgdm9pZCBibGVuZEZ1
bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3Rvcik7CiAgICAgdm9pZCBibGVuZEZ1
bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3Jj
QWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKTsKIAotICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51
bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyJiBkYXRh
LCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYnVmZmVyRGF0YShH
QzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyYgZGF0YSwgR0MzRGVudW0gdXNhZ2UsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBs
b25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIFJl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNEZW51bSB1c2Fn
ZSk7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXImIGRh
dGEsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0
LCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZl
clN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciog
ZGF0YSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25n
IG9mZnNldCwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhKTsKIAogICAgIEdDM0RlbnVt
IGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spID0gMDsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhckRlcHRoKEdDM0RmbG9hdCk7CiAgICAgdm9pZCBjbGVhclN0ZW5j
aWwoR0MzRGludCk7CiAgICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9v
bGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpOwotICAgIHZv
aWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IGNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqKTsKIAogICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwg
QXJyYXlCdWZmZXJWaWV3JiBkYXRhKTsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEpOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoK
ICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICBS
ZWZQdHI8V2ViR0xQcm9ncmFtPiBjcmVhdGVQcm9ncmFtKCk7CiAgICAgUmVmUHRyPFdlYkdMUmVu
ZGVyYnVmZmVyPiBjcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICBSZWZQdHI8V2ViR0xTaGFkZXI+
IGNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRy
PFdlYkdMU2hhZGVyPiBjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSk7CiAgICAgUmVmUHRyPFdl
YkdMVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpOwogCiAgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51
bSBtb2RlKTsKQEAgLTE3Nyw0MyArMTc3LDQzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcHRoRnVu
YyhHQzNEZW51bSk7CiAgICAgdm9pZCBkZXB0aE1hc2soR0MzRGJvb2xlYW4pOwogICAgIHZvaWQg
ZGVwdGhSYW5nZShHQzNEZmxvYXQgek5lYXIsIEdDM0RmbG9hdCB6RmFyKTsKLSAgICB2b2lkIGRl
dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIGRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciopOwogICAg
IHZvaWQgZGlzYWJsZShHQzNEZW51bSBjYXApOwotICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBkcmF3QXJy
YXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXpl
aSBjb3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KTsKKyAg
ICB2b2lkIGRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVp
IGNvdW50KTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkg
Y291bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQpOwogCiAgICAgdm9pZCBlbmFi
bGUoR0MzRGVudW0gY2FwKTsKLSAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1
aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQzNEdWludCBpbmRleCk7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lkIGZsdXNo
KCk7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5k
ZXJidWZmZXIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUy
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdl
dCwgV2ViR0xUZXh0dXJlKiwgR0MzRGludCBsZXZlbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRh
Y2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKik7
CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgV2ViR0xUZXh0dXJlKiwgR0MzRGludCBs
ZXZlbCk7CiAgICAgdm9pZCBmcm9udEZhY2UoR0MzRGVudW0gbW9kZSk7CiAgICAgdm9pZCBnZW5l
cmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpOwogCi0gICAgUmVmUHRyPFdlYkdMQWN0aXZlSW5m
bz4gZ2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSosIEdDM0R1aW50IGluZGV4LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gZ2V0QWN0aXZlVW5pZm9ybShX
ZWJHTFByb2dyYW0qLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJvb2wg
Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSosIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFk
ZXI+PiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRB
Y3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgaW5kZXgpOworICAgIFJlZlB0cjxX
ZWJHTEFjdGl2ZUluZm8+IGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQg
aW5kZXgpOworICAgIGJvb2wgZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSosIFZlY3Rv
cjxSZWZQdHI8V2ViR0xTaGFkZXI+PiYpOwogICAgIEdDM0RpbnQgZ2V0QXR0cmliTG9jYXRpb24o
V2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBXZWJHTEdldEluZm8gZ2V0
QnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0QnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gcG5hbWUpOwogICAgIFJlZlB0cjxXZWJHTENvbnRleHRBdHRyaWJ1dGVz
PiBnZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAgIEdDM0RlbnVtIGdldEVycm9yKCk7CiAgICAg
dmlydHVhbCBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgV2ViR0xHZXRJbmZvIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBu
YW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgV2ViR0xHZXRJbmZvIGdldFBh
cmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICBXZWJHTEdl
dEluZm8gZ2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qLCBHQzNEZW51bSBwbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dy
YW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV2ViR0xHZXRJbmZvIGdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgV2ViR0xHZXRJbmZvIGdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciosIEdDM0Rl
bnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2co
V2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUmVmUHRyPFdlYkdMU2hhZGVyUHJl
Y2lzaW9uRm9ybWF0PiBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0MzRGVudW0gc2hhZGVyVHlw
ZSwgR0MzRGVudW0gcHJlY2lzaW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmluZyBn
ZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgV2ViR0xH
ZXRJbmZvIGdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiwgR0MzRGVudW0gcG5hbWUp
OworICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qKTsKKyAgICBXZWJH
TEdldEluZm8gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gcG5hbWUpOworICAgIFdlYkdMR2V0SW5mbyBnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFk
ZXIqLCBHQzNEZW51bSBwbmFtZSk7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xT
aGFkZXIqKTsKKyAgICBSZWZQdHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IGdldFNoYWRl
clByZWNpc2lvbkZvcm1hdChHQzNEZW51bSBzaGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNpb25U
eXBlKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKik7CiAgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgPSAwOwotICAgIFdl
YkdMR2V0SW5mbyBnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFt
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdlYkdMR2V0SW5mbyBnZXRVbmlmb3JtKFdlYkdMUHJv
Z3JhbSosIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJv
Z3JhbSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXZWJHTEdldEluZm8g
Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFdlYkdMR2V0SW5mbyBnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBwbmFtZSk7CisgICAgV2ViR0xHZXRJbmZvIGdldFVuaWZvcm0oV2ViR0xQcm9n
cmFtKiwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qKTsKKyAgICBSZWZQdHI8V2ViR0xVbmlm
b3JtTG9jYXRpb24+IGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJp
bmcmKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBH
QzNEZW51bSBwbmFtZSk7CiAgICAgbG9uZyBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUpOwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBtb2RlKSA9IDA7CkBAIC0yMjcsMTUgKzIyNywxNSBAQCBw
dWJsaWM6CiAgICAgR0MzRGJvb2xlYW4gaXNUZXh0dXJlKFdlYkdMVGV4dHVyZSopOwogCiAgICAg
dm9pZCBsaW5lV2lkdGgoR0MzRGZsb2F0KTsKLSAgICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJv
Z3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3Jh
bSopOwogICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0p
OwogICAgIHZvaWQgcG9seWdvbk9mZnNldChHQzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQgdW5p
dHMpOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUs
IEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZWFk
UGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBw
aXhlbHMpOwogICAgIHZvaWQgcmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdm9p
ZCBzYW1wbGVDb3ZlcmFnZShHQzNEZmxvYXQgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCk7CiAg
ICAgdm9pZCBzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQpOwotICAgIHZvaWQgc2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2hhZGVyU291cmNlKFdlYkdM
U2hhZGVyKiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdGVuY2lsRnVuYyhHQzNEZW51bSBm
dW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzayk7CiAgICAgdm9pZCBzdGVuY2lsRnVuY1Nl
cGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWlu
dCBtYXNrKTsKICAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDM0R1aW50KTsKQEAgLTI3NCwzOSArMjc0
LDM5IEBAIHB1YmxpYzoKICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBI
VE1MVmlkZW9FbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICNlbmRpZgogCi0gICAgdm9p
ZCB1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9y
bTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVp
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMWkoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBHQzNEaW50IHgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0x
aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
R0MzRGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3Jt
MmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHks
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVu
aWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQqIHYsIEdDM0Rz
aXplaSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGludCB4LCBHQzNEaW50IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIHVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5
JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdm9pZCB1bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQg
eCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1
bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5JiB2LCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIHVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEaW50IHosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCB1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0Mz
RGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdD
M0RmbG9hdCB6LCBHQzNEZmxvYXQgdywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9y
bTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1
bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50IHgsIEdDM0RpbnQg
eSwgR0MzRGludCB6LCBHQzNEaW50IHcsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZv
cm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiwgR0MzRGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlm
b3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBGbG9hdDMyQXJyYXkmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1
bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwg
R0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICB2b2lkIHVzZVByb2dyYW0oV2ViR0xQ
cm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFdlYkdM
UHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0xZihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyQXJyYXkmIHYpOworICAgIHZvaWQgdW5p
Zm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNp
emVpKTsKKyAgICB2b2lkIHVuaWZvcm0xaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdD
M0RpbnQgeCk7CisgICAgdm9pZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiwgSW50MzJBcnJheSYgdik7CisgICAgdm9pZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm0yZihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSk7Cisg
ICAgdm9pZCB1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFy
cmF5JiB2KTsKKyAgICB2b2lkIHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSk7CisgICAgdm9pZCB1bmlmb3JtMmkoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50IHgsIEdDM0RpbnQgeSk7CisgICAgdm9pZCB1bmlm
b3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJBcnJheSYgdik7CisgICAg
dm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwg
R0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm0zZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdW5p
Zm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdik7Cisg
ICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0
KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQgdW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeik7CisgICAgdm9pZCB1bmlm
b3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJBcnJheSYgdik7CisgICAg
dm9pZCB1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwg
R0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsK
KyAgICB2b2lkIHVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMy
QXJyYXkmIHYpOworICAgIHZvaWQgdW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm00aShjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdD
M0RpbnQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiwgSW50MzJBcnJheSYgdik7CisgICAgdm9pZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2Us
IEZsb2F0MzJBcnJheSYgdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2
YWx1ZSwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFs
dWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpKTsK
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFsdWUpOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRy
YW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpKTsKKworICAgIHZvaWQgdXNlUHJv
Z3JhbShXZWJHTFByb2dyYW0qKTsKKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dy
YW0qKTsKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9h
dCB4KTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFy
cmF5JiB2YWx1ZXMpOwpAQCAtMzIxLDcgKzMyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZlcnRl
eEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5JiB2YWx1ZXMpOwogICAgIHZv
aWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcywgR0Mz
RHNpemVpIHNpemUpOwogICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRl
eCwgR0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlLCBsb25nIGxvbmcg
b2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIEdDM0RzaXplaSBzdHJpZGUsIGxvbmcg
bG9uZyBvZmZzZXQpOwogCiAgICAgdm9pZCB2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKIApAQCAtNDI5LDcgKzQyOSw3IEBA
IHByb3RlY3RlZDoKICAgICBSZWZQdHI8SW1hZ2U+IGRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2Um
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICNpZiBF
TkFCTEUoVklERU8pCi0gICAgUmVmUHRyPEltYWdlPiB2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlk
ZW9FbGVtZW50KiwgQmFja2luZ1N0b3JlQ29weSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0
cjxJbWFnZT4gdmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIEJhY2tpbmdTdG9y
ZUNvcHkpOwogI2VuZGlmCiAKICAgICBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbGFn
IHRleHR1cmVFeHRlbnNpb25GbGFncygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbAppbmRleCBlMWFm
MGFhNWFmZWNkNzA4M2M1ZDE1YzMyODUxODNmMmRmMTA2NzEyLi4wNTdiNjY5ZWFiOTU5MGJhMmFk
ZDJiMTFhY2YyZTE1MzAzMDk0ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbApAQCAtNDcyLDIzICs0NzIs
MjMgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxvYXQgR0xjbGFtcGY7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEdMc2l6ZWkgZHJhd2luZ0J1ZmZlcldpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBHTHNpemVpIGRyYXdpbmdCdWZmZXJIZWlnaHQ7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgYWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSk7Ci0gICAgW01heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0/IHByb2dy
YW0sIFdlYkdMU2hhZGVyPyBzaGFkZXIpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
dm9pZCBiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVpbnQgaW5k
ZXgsIERPTVN0cmluZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
YmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlcj8gYnVmZmVyKTsKLSAgICBbTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQs
IFdlYkdMRnJhbWVidWZmZXI/IGZyYW1lYnVmZmVyKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1
ZmZlcj8gcmVuZGVyYnVmZmVyKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
YmluZFRleHR1cmUoR0xlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlPyB0ZXh0dXJlKTsKKyAgICB2
b2lkIGFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpOworICAgIHZvaWQgYXR0YWNoU2hhZGVy
KFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAgdm9pZCBi
aW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIERP
TVN0cmluZyBuYW1lKTsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0xlbnVtIHRhcmdldCwgV2ViR0xC
dWZmZXI/IGJ1ZmZlcik7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwg
V2ViR0xGcmFtZWJ1ZmZlcj8gZnJhbWVidWZmZXIpOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZl
cihHTGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsKKyAgICB2
b2lkIGJpbmRUZXh0dXJlKEdMZW51bSB0YXJnZXQsIFdlYkdMVGV4dHVyZT8gdGV4dHVyZSk7CiAg
ICAgdm9pZCBibGVuZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBm
IGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKICAgICB2b2lkIGJsZW5kRXF1YXRpb24oR0xlbnVtIG1v
ZGUpOwogICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVu
dW0gbW9kZUFscGhhKTsKICAgICB2b2lkIGJsZW5kRnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVt
IGRmYWN0b3IpOwogICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0xlbnVtIHNyY1JHQiwgR0xl
bnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpOwotICAgIFtNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEFycmF5
QnVmZmVyIGRhdGEsIEdMZW51bSB1c2FnZSk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9u
XSB2b2lkIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3IGRhdGEsIEdM
ZW51bSB1c2FnZSk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGJ1ZmZlckRh
dGEoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBHTGVudW0gdXNhZ2UpOwotICAgIFtN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQs
IEdMaW50cHRyIG9mZnNldCwgQXJyYXlCdWZmZXI/IGRhdGEpOwotICAgIFtNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbl0gdm9pZCBidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9m
ZnNldCwgQXJyYXlCdWZmZXJWaWV3PyBkYXRhKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0xlbnVt
IHRhcmdldCwgQXJyYXlCdWZmZXIgZGF0YSwgR0xlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZl
ckRhdGEoR0xlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3IGRhdGEsIEdMZW51bSB1c2FnZSk7
CisgICAgdm9pZCBidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xl
bnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRw
dHIgb2Zmc2V0LCBBcnJheUJ1ZmZlcj8gZGF0YSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdM
ZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3PyBkYXRhKTsKIAog
ICAgIEdMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpOwogICAgIHZv
aWQgY2xlYXIoR0xiaXRmaWVsZCBtYXNrKTsKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHR5cGVkZWYg
dW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIHZvaWQgY2xlYXJEZXB0aChHTGNsYW1w
ZiBkZXB0aCk7CiAgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0xpbnQgcyk7CiAgICAgdm9pZCBjb2xv
ck1hc2soR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xi
b29sZWFuIGFscGhhKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgY29tcGls
ZVNoYWRlcihXZWJHTFNoYWRlcj8gc2hhZGVyKTsKKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIoV2Vi
R0xTaGFkZXI/IHNoYWRlcik7CiAKICAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3IGRh
dGEpOwogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCi0gICBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwor
ICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgQXJy
YXlCdWZmZXJWaWV3IGRhdGEpOwogICAgIAogICAgIHZvaWQgY29weVRleEltYWdlMkQoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlcik7CiAgICAg
dm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVk
IGZsb2F0IEdMY2xhbXBmOwogICAgIFdlYkdMRnJhbWVidWZmZXIgY3JlYXRlRnJhbWVidWZmZXIo
KTsKICAgICBXZWJHTFByb2dyYW0gY3JlYXRlUHJvZ3JhbSgpOwogICAgIFdlYkdMUmVuZGVyYnVm
ZmVyIGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
V2ViR0xTaGFkZXIgY3JlYXRlU2hhZGVyKEdMZW51bSB0eXBlKTsKKyAgICBXZWJHTFNoYWRlciBj
cmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpOwogICAgIFdlYkdMVGV4dHVyZSBjcmVhdGVUZXh0dXJl
KCk7CiAKICAgICB2b2lkIGN1bGxGYWNlKEdMZW51bSBtb2RlKTsKQEAgLTUyNSwyMyArNTI1LDIz
IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIHZvaWQgZGVwdGhG
dW5jKEdMZW51bSBmdW5jKTsKICAgICB2b2lkIGRlcHRoTWFzayhHTGJvb2xlYW4gZmxhZyk7CiAg
ICAgdm9pZCBkZXB0aFJhbmdlKEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKTsKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbT8g
cHJvZ3JhbSwgV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAgdm9pZCBkZXRhY2hTaGFkZXIoV2Vi
R0xQcm9ncmFtPyBwcm9ncmFtLCBXZWJHTFNoYWRlcj8gc2hhZGVyKTsKICAgICB2b2lkIGRpc2Fi
bGUoR0xlbnVtIGNhcCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gdm9pZCBkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXpl
aSBjb3VudCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGRyYXdFbGVtZW50
cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIG9mZnNl
dCk7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KTsKKyAg
ICB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50
KTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsIEdMaW50cHRyIG9mZnNldCk7CiAKICAgICB2b2lkIGVuYWJsZShHTGVudW0gY2Fw
KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoR0x1aW50IGluZGV4KTsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdM
dWludCBpbmRleCk7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lkIGZsdXNoKCk7Ci0gICAg
W01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0
LCBXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZT8gdGV4dHVyZSwgR0xp
bnQgbGV2ZWwpOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVu
ZGVyYnVmZmVyPyByZW5kZXJidWZmZXIpOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIFdlYkdM
VGV4dHVyZT8gdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwogICAgIHZvaWQgZnJvbnRGYWNlKEdMZW51
bSBtb2RlKTsKICAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdMZW51bSB0YXJnZXQpOwogICAgIAot
ICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gV2ViR0xBY3RpdmVJbmZvIGdldEFjdGl2ZUF0
dHJpYihXZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMdWludCBpbmRleCk7Ci0gICAgW01heVRocm93
TGVnYWN5RXhjZXB0aW9uXSBXZWJHTEFjdGl2ZUluZm8gZ2V0QWN0aXZlVW5pZm9ybShXZWJHTFBy
b2dyYW0/IHByb2dyYW0sIEdMdWludCBpbmRleCk7CisgICAgV2ViR0xBY3RpdmVJbmZvIGdldEFj
dGl2ZUF0dHJpYihXZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMdWludCBpbmRleCk7CisgICAgV2Vi
R0xBY3RpdmVJbmZvIGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVp
bnQgaW5kZXgpOwogCiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CiAKQEAgLTU1OSwxNSAr
NTU5LDE1IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIFtDdXN0
b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhbnkgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcG5hbWUp
OwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhbnkgZ2V0UGFyYW1ldGVy
KEdMZW51bSBwbmFtZSk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGFu
eSBnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgR0xlbnVtIHBuYW1l
KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIERPTVN0cmluZz8gZ2V0UHJvZ3JhbUlu
Zm9Mb2coV2ViR0xQcm9ncmFtPyBwcm9ncmFtKTsKKyAgICBET01TdHJpbmc/IGdldFByb2dyYW1J
bmZvTG9nKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIGFueSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lKTsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYW55
IGdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlcj8gc2hhZGVyLCBHTGVudW0gcG5hbWUpOwog
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBET01TdHJpbmc/IGdldFNoYWRlckluZm9M
b2coV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAgRE9NU3RyaW5nPyBnZXRTaGFkZXJJbmZvTG9n
KFdlYkdMU2hhZGVyPyBzaGFkZXIpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBX
ZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0xlbnVt
IHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlKTsKKyAgICBXZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0xlbnVtIHNoYWRlcnR5cGUsIEdM
ZW51bSBwcmVjaXNpb250eXBlKTsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gRE9N
U3RyaW5nPyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAgRE9NU3Ry
aW5nPyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXI/IHNoYWRlcik7CiAKICAgICBbQ3VzdG9t
XSBzZXF1ZW5jZTxET01TdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKIApAQCAtNTc1
LDcgKzU3NSw3IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogCiAgICAg
W0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGFueSBnZXRVbmlmb3JtKFdlYkdMUHJv
Z3JhbT8gcHJvZ3JhbSwgV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uKTsKIAotICAgIFtN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gV2ViR0xVbmlmb3JtTG9jYXRpb24gZ2V0VW5pZm9ybUxv
Y2F0aW9uKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgRE9NU3RyaW5nIG5hbWUpOworICAgIFdlYkdM
VW5pZm9ybUxvY2F0aW9uIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0/IHByb2dyYW0s
IERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9u
XSBhbnkgZ2V0VmVydGV4QXR0cmliKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lKTsKIApAQCAt
NTkxLDE3ICs1OTEsMTcgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxvYXQgR0xjbGFtcGY7CiAg
ICAgR0xib29sZWFuIGlzU2hhZGVyKFdlYkdMU2hhZGVyPyBzaGFkZXIpOwogICAgIEdMYm9vbGVh
biBpc1RleHR1cmUoV2ViR0xUZXh0dXJlPyB0ZXh0dXJlKTsKICAgICB2b2lkIGxpbmVXaWR0aChH
TGZsb2F0IHdpZHRoKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgbGlua1By
b2dyYW0oV2ViR0xQcm9ncmFtPyBwcm9ncmFtKTsKKyAgICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdM
UHJvZ3JhbT8gcHJvZ3JhbSk7CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtKTsKICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0xmbG9hdCBmYWN0b3IsIEdMZmxv
YXQgdW5pdHMpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHJlYWRQaXhl
bHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKTsKKyAgICB2b2lk
IHJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKTsK
ICAgICAKICAgICB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpOwogICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZShHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdMY2xh
bXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKICAgICB2b2lkIHNjaXNzb3IoR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotICAgIFtNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXI/IHNoYWRlciwgRE9N
U3RyaW5nIHN0cmluZyk7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXI/IHNoYWRl
ciwgRE9NU3RyaW5nIHN0cmluZyk7CiAgICAgdm9pZCBzdGVuY2lsRnVuYyhHTGVudW0gZnVuYywg
R0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CiAgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdM
ZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CiAgICAgdm9p
ZCBzdGVuY2lsTWFzayhHTHVpbnQgbWFzayk7CkBAIC02NDAsMjkgKzY0MCwyOSBAQCB0eXBlZGVm
IHVucmVzdHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgSFRNTFZpZGVvRWxlbWVudD8gdmlkZW8pOwogI2VuZGlmCiAKLSAgICBbTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTFmKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlv
biwgR0xmbG9hdCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8g
bG9jYXRpb24sIEdMZmxvYXQgeCk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIHZvaWQgdW5pZm9ybTFmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEZsb2F0
MzJBcnJheSB2KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTFp
KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xpbnQgeCk7CisgICAgdm9pZCB1bmlm
b3JtMWkoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGludCB4KTsKICAgICBbQ3Vz
dG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtMWl2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uPyBsb2NhdGlvbiwgSW50MzJBcnJheSB2KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgdW5pZm9ybTJmKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwg
R0xmbG9hdCB4LCBHTGZsb2F0IHkpOworICAgIHZvaWQgdW5pZm9ybTJmKFdlYkdMVW5pZm9ybUxv
Y2F0aW9uPyBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwogICAgIFtDdXN0b20sIE1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0yZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24/IGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkgdik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0
aW9uXSB2b2lkIHVuaWZvcm0yaShXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMaW50
IHgsIEdMaW50IHkpOworICAgIHZvaWQgdW5pZm9ybTJpKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBs
b2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgdW5pZm9ybTJpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24s
IEludDMyQXJyYXkgdik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZv
cm0zZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHopOworICAgIHZvaWQgdW5pZm9ybTNmKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBs
b2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CiAgICAgW0N1c3RvbSwg
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTNmdihXZWJHTFVuaWZvcm1Mb2Nh
dGlvbj8gbG9jYXRpb24sIEZsb2F0MzJBcnJheSB2KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHZvaWQgdW5pZm9ybTNpKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xp
bnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7CisgICAgdm9pZCB1bmlmb3JtM2koV2ViR0xVbmlmb3Jt
TG9jYXRpb24/IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKICAgICBbQ3Vz
dG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtM2l2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uPyBsb2NhdGlvbiwgSW50MzJBcnJheSB2KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgdW5pZm9ybTRmKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwg
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKKyAgICB2b2lkIHVu
aWZvcm00ZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgdW5pZm9ybTRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24s
IEZsb2F0MzJBcnJheSB2KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5p
Zm9ybTRpKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xpbnQgeiwgR0xpbnQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGkoV2ViR0xVbmlmb3JtTG9jYXRp
b24/IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKICAgICBb
Q3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtNGl2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgSW50MzJBcnJheSB2KTsKIAogICAgIFtDdXN0b20sIE1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkgYXJy
YXkpOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm1N
YXRyaXgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyQXJyYXkgYXJyYXkpOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhj
ZXB0aW9uXSB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0
aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkgYXJyYXkpOwogCi0gICAgW01h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVzZVByb2dyYW0oV2ViR0xQcm9ncmFtPyBwcm9n
cmFtKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdmFsaWRhdGVQcm9ncmFt
KFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CisgICAgdm9pZCB1c2VQcm9ncmFtKFdlYkdMUHJvZ3Jh
bT8gcHJvZ3JhbSk7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtPyBwcm9n
cmFtKTsKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0x1aW50IGluZHgsIEdMZmxvYXQgeCk7
CiAgICAgW0N1c3RvbV0gdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0x1aW50IGluZHgsIEZsb2F0MzJB
cnJheSB2YWx1ZXMpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZs
b2F0IEdMY2xhbXBmOwogICAgIFtDdXN0b21dIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdMdWludCBp
bmR4LCBGbG9hdDMyQXJyYXkgdmFsdWVzKTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdMdWlu
dCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwogICAg
IFtDdXN0b21dIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmR4LCBGbG9hdDMyQXJyYXkg
dmFsdWVzKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdmVydGV4QXR0cmli
UG9pbnRlcihHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBu
b3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYlBvaW50ZXIoR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
TGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIEdMaW50cHRyIG9mZnNldCk7CiAK
ICAgICB2b2lkIHZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKIH07Cg==
</data>
<flag name="review"
          id="315327"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="315328"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292251</attachid>
            <date>2016-10-20 13:55:35 -0700</date>
            <delta_ts>2016-10-20 16:18:10 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-163747-20161020135158.patch</filename>
            <type>text/plain</type>
            <size>81199</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY3ZTVkMDYzYzk5YmFl
ZDNiN2UwMDhkYjFhZmMyNjIzNTRjNDkwOC4uZTZiMzg0NjI0MjE1OTk0OTgyMjIyZmI2NTZmMTll
NGE5ZmFhNjA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFueSBXZWJH
TCBmdW5jdGlvbnMgd2hpY2ggZG9uJ3QgdGhyb3cgYXJlIG1hcmtlZCBhcyBwb3NzaWJseSB0aHJv
d2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVj
aGFuaWNhbGx5IHJlbW92ZSB0aGUgZXhjZXB0aW9uIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmYpOgorICAgICAg
ICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uaSk6CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rp
b25NYXRyaXgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1h
Z2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3RpdmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5k
QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRB
Y3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbUluZm9M
b2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2aWRlb0ZyYW1lVG9JbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0y
aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
Mml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVQcm9ncmFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYlBvaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVzdG9y
ZUN1cnJlbnRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpyZXN0b3JlQ3VycmVudFRleHR1cmUyRCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsOgorCiAyMDE2LTEwLTIwICBEYXZlIEh5YXR0ICA8
aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2VyXSBNYWtlIHN1cmUgdG8gaGFu
ZGxlIHByZWZpeGVkIHRyYW5zZm9ybS1zdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5j
cHAKaW5kZXggZDUzYTNiODQwMGQ1ZTQ1NDQ3NGFkZDcyZThmMjQ2ZDY1OTA2OWFhNS4uNTdiN2E1
MmY4YmQwOTY3NWM0MjQ4NjA4N2NkZGE0MzFlNWE1NzBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2VDdXN0b20uY3BwCkBAIC0yMDUsMTcgKzIwNSwxNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRPYmpl
Y3RQYXJhbWV0ZXIoSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBvYmosIEV4ZWNTdGF0ZSYg
cwogICAgIFdlYkdMR2V0SW5mbyBpbmZvOwogICAgIHN3aXRjaCAob2JqZWN0VHlwZSkgewogICAg
IGNhc2Uga0J1ZmZlcjoKLSAgICAgICAgaW5mbyA9IGNvbnRleHQuZ2V0QnVmZmVyUGFyYW1ldGVy
KHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgaW5mbyA9IGNvbnRleHQuZ2V0QnVmZmVyUGFy
YW1ldGVyKHRhcmdldCwgcG5hbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtSZW5kZXJi
dWZmZXI6Ci0gICAgICAgIGluZm8gPSBjb250ZXh0LmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcih0
YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGluZm8gPSBjb250ZXh0LmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrVGV4
dHVyZToKLSAgICAgICAgaW5mbyA9IGNvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKHRhcmdldCwgcG5h
bWUsIGVjKTsKKyAgICAgICAgaW5mbyA9IGNvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKHRhcmdldCwg
cG5hbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtWZXJ0ZXhBdHRyaWI6CiAgICAgICAg
IC8vIHRhcmdldCA9PiBpbmRleAotICAgICAgICBpbmZvID0gY29udGV4dC5nZXRWZXJ0ZXhBdHRy
aWIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBpbmZvID0gY29udGV4dC5nZXRWZXJ0ZXhB
dHRyaWIodGFyZ2V0LCBwbmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0zMTAsNyArMzEwLDcgQEAgSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRl
ZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiBzaGFkZXJzOwotICAgIGJvb2wg
c3VjY2VlZCA9IGNvbnRleHQuZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIHNoYWRlcnMsIGVj
KTsKKyAgICBib29sIHN1Y2NlZWQgPSBjb250ZXh0LmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFt
LCBzaGFkZXJzKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNOdWxsKCk7CkBAIC00MDIsNyArNDAyLDcgQEAgSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bnQzMigmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIocHJv
Z3JhbSwgcG5hbWUsIGVjKTsKKyAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihwcm9ncmFtLCBwbmFtZSk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CkBAIC00MzAsNyArNDMwLDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFNoYWRlclBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogICAgIFdlYkdMU2hhZGVyKiBz
aGFkZXIgPSBKU1dlYkdMU2hhZGVyOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bnQzMigmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcihzaGFk
ZXIsIHBuYW1lLCBlYyk7CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LmdldFNoYWRl
clBhcmFtZXRlcihzaGFkZXIsIHBuYW1lKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTQ3MSw3ICs0NzEsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VW5pZm9ybShFeGVjU3RhdGUmIHN0YXRlKQogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgxKSk7CiAgICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgc2NvcGUpOwotICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC5nZXRVbmlm
b3JtKHByb2dyYW0sIGxvY2F0aW9uLCBlYyk7CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250
ZXh0LmdldFVuaWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24pOwogICAgIGlmIChlYykgewogICAgICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpAQCAtNTU4LDE2ICs1NTgsMTYgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rp
b25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFcKICAgICBp
ZiAod2ViR0xBcnJheSkgewogICAgICAgICBzd2l0Y2ggKGYpIHsKICAgICAgICAgY2FzZSBmX3Vu
aWZvcm0xdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwgKndlYkdM
QXJyYXksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwgKndl
YkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtMnY6
Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0yZnYobG9jYXRpb24sICp3ZWJHTEFycmF5LCBl
Yyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0yZnYobG9jYXRpb24sICp3ZWJHTEFycmF5
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybTN2OgotICAgICAg
ICAgICAgY29udGV4dC51bmlmb3JtM2Z2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOworICAg
ICAgICAgICAgY29udGV4dC51bmlmb3JtM2Z2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBmX3VuaWZvcm00djoKLSAgICAgICAgICAgIGNv
bnRleHQudW5pZm9ybTRmdihsb2NhdGlvbiwgKndlYkdMQXJyYXksIGVjKTsKKyAgICAgICAgICAg
IGNvbnRleHQudW5pZm9ybTRmdihsb2NhdGlvbiwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWIxdjoKICAgICAgICAgICAgIGNvbnRl
eHQudmVydGV4QXR0cmliMWZ2KGluZGV4LCAqd2ViR0xBcnJheSk7CkBAIC01OTMsMTYgKzU5Mywx
NiBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1bmN0aW9uVG9DYWxs
IGYsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVwogICAgIAogICAgIHN3aXRjaCAoZikgewogICAg
IGNhc2UgZl91bmlmb3JtMXY6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwg
YXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAgICAgY29udGV4dC51bmlmb3Jt
MWZ2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgZl91bmlmb3JtMnY6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybTJmdihsb2Nh
dGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAgICAgY29udGV4dC51
bmlmb3JtMmZ2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgZl91bmlmb3JtM3Y6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybTNm
dihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAgICAgY29u
dGV4dC51bmlmb3JtM2Z2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgZl91bmlmb3JtNHY6Ci0gICAgICAgIGNvbnRleHQudW5p
Zm9ybTRmdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAg
ICAgY29udGV4dC51bmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWIxdjoKICAgICAgICAg
Y29udGV4dC52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgp
KTsKQEAgLTY0MCwxNiArNjQwLDE2IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9u
aShEYXRhRnVuY3Rpb25Ub0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBXCiAgICAgaWYg
KHdlYkdMQXJyYXkpIHsKICAgICAgICAgc3dpdGNoIChmKSB7CiAgICAgICAgIGNhc2UgZl91bmlm
b3JtMXY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0xaXYobG9jYXRpb24sICp3ZWJHTEFy
cmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0xaXYobG9jYXRpb24sICp3ZWJH
TEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybTJ2Ogot
ICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMml2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMp
OworICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMml2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBmX3VuaWZvcm0zdjoKLSAgICAgICAg
ICAgIGNvbnRleHQudW5pZm9ybTNpdihsb2NhdGlvbiwgKndlYkdMQXJyYXksIGVjKTsKKyAgICAg
ICAgICAgIGNvbnRleHQudW5pZm9ybTNpdihsb2NhdGlvbiwgKndlYkdMQXJyYXkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtNHY6Ci0gICAgICAgICAgICBjb250
ZXh0LnVuaWZvcm00aXYobG9jYXRpb24sICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAgICAgICBj
b250ZXh0LnVuaWZvcm00aXYobG9jYXRpb24sICp3ZWJHTEFycmF5KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC02NjYsMTYgKzY2
NiwxNiBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1bmN0aW9uVG9D
YWxsIGYsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVwogICAgIAogICAgIHN3aXRjaCAoZikgewog
ICAgIGNhc2UgZl91bmlmb3JtMXY6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybTFpdihsb2NhdGlv
biwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAgICAgY29udGV4dC51bmlm
b3JtMWl2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgZl91bmlmb3JtMnY6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybTJpdihs
b2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAgICAgY29udGV4
dC51bmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgZl91bmlmb3JtM3Y6Ci0gICAgICAgIGNvbnRleHQudW5pZm9y
bTNpdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAgICAg
Y29udGV4dC51bmlmb3JtM2l2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgZl91bmlmb3JtNHY6Ci0gICAgICAgIGNvbnRleHQu
dW5pZm9ybTRpdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAg
ICAgICAgY29udGV4dC51bmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheS5kYXRhKCksIGFycmF5LnNp
emUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAt
NzAxLDIxICs3MDEsMjEgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgo
RGF0YUZ1bmN0aW9uTWF0cml4VG9DYWxsIGYsIEpTQzo6RXhlY1N0YXQKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgIAogICAgIFJlZlB0cjxGbG9hdDMyQXJy
YXk+IHdlYkdMQXJyYXkgPSB0b0Zsb2F0MzJBcnJheShzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgy
KSk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisKICAgICBpZiAod2ViR0xBcnJh
eSkgewogICAgICAgICBzd2l0Y2ggKGYpIHsKICAgICAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXgy
ZnY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHRyYW5z
cG9zZSwgKndlYkdMQXJyYXksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJp
eDJmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXgzZnY6Ci0gICAgICAgICAgICBjb250ZXh0
LnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXksIGVjKTsK
KyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJhbnNwb3Nl
LCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBmX3VuaWZv
cm1NYXRyaXg0ZnY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRp
b24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCAqd2ViR0xBcnJheSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKKworICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC03MjYsMTYgKzcyNiwxNyBAQCBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rpb25NYXRyaXhUb0NhbGwg
ZiwgSlNDOjpFeGVjU3RhdAogICAgIAogICAgIHN3aXRjaCAoZikgewogICAgIGNhc2UgZl91bmlm
b3JtTWF0cml4MmZ2OgotICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IHRyYW5zcG9zZSwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAgICAgICAgY29u
dGV4dC51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEoKSwg
YXJyYXkuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXgz
ZnY6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJhbnNwb3Nl
LCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSwgZWMpOworICAgICAgICBjb250ZXh0LnVuaWZv
cm1NYXRyaXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXpl
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDRmdjoKLSAgICAg
ICAgY29udGV4dC51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGFycmF5LmRh
dGEoKSwgYXJyYXkuc2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgdHJhbnNwb3NlLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICAKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggN2MwOTE5N2MzNWY3Y2NhMzBlYjhlNzc3NWE1ZTVhNGNkNjllYTRl
Ny4uYjEwYTc0YmNkNWE1YzI2YWFjY2RlNjhmYWNjZTcxMTg3ZjkxMWJkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTExNzUsNyArMTE3NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpCiAgICAgICAgIHx8
ICF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFnZSwgU291cmNlSFRN
TFZpZGVvRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIHZp
ZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUs
IHhvZmZzZXQsIHlvZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPElt
YWdlPiBpbWFnZSA9IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLCBJbWFnZUJ1ZmZlcjo6ZmFzdENv
cHlJbWFnZU1vZGUoKSwgZWMpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSB2aWRlb0ZyYW1l
VG9JbWFnZSh2aWRlbywgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOwogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICB0ZXhTdWJJbWFnZTJESW1wbCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBmb3JtYXQsIHR5cGUsIGltYWdlLmdldCgpLCBHcmFw
aGljc0NvbnRleHQzRDo6SHRtbERvbVZpZGVvLCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11
bHRpcGx5QWxwaGEsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDJhNWFhYjFlMjFkMTNlMDc4MDA3N2Y1NmM4
ZjE1MTgzZDU4ODk5MDUuLjQ0YWFkYzc4NmMzZTM2NjRkOTQyYWE0NjU3ZWFlNjc1MDBjNzViODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGluCiAg
ICAgICAgIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFnZSwg
U291cmNlSFRNTFZpZGVvRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgZm9ybWF0LCB2aWRlby0+dmlk
ZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0
LCB5b2Zmc2V0KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2UgPSB2aWRlb0ZyYW1lVG9JbWFnZSh2aWRlbywgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VN
b2RlKCksIGVjKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFtZVRvSW1hZ2Uo
dmlkZW8sIEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpKTsKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm47CiAgICAgdGV4U3ViSW1hZ2UyREltcGwodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgZm9ybWF0LCB0eXBlLCBpbWFnZS5nZXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6Okh0bWxEb21WaWRlbywgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFs
cGhhLCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGVkMDJiN2UxNjViYjdlMTZjY2MzNDU1ZGY4
NmZjY2RhMGJjZmU2YmIuLjk2YzI1OTA3ZDJlN2FhMDM1NGUwYjVlNTMwYTE3ZWNiZGI0ZGNhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAgdW5zaWduZWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6c2l6ZUluQnl0ZXMoR0MzRGVudW0gdHlwZSkKICAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3RpdmVUZXh0dXJlKEdD
M0RlbnVtIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODU3LDcgKzg1Nyw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0
ZXh0dXJlLCBFeGNlcHRpb25Db2RlJikKICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4
dHVyZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YXR0YWNoU2hhZGVy
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29k
ZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiYXR0YWNoU2hhZGVyIiwg
cHJvZ3JhbSkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImF0dGFjaFNoYWRlciIsIHNoYWRlcikp
CiAgICAgICAgIHJldHVybjsKQEAgLTg2OSw3ICs4NjksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hh
ZGVyKgogICAgIHNoYWRlci0+b25BdHRhY2hlZCgpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdD
M0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImJpbmRB
dHRyaWJMb2NhdGlvbiIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm47CkBAIC05MDMsNyArOTAz
LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3Vu
ZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
V2ViR0xCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVm
ZmVyKQogewogICAgIGJvb2wgZGVsZXRlZDsKICAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5k
KCJiaW5kQnVmZmVyIiwgYnVmZmVyLCBkZWxldGVkKSkKQEAgLTkyOCw3ICs5MjgsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBX
ZWJHTEJ1ZmZlciogYnVmZmVyLAogICAgICAgICBidWZmZXItPnNldFRhcmdldCh0YXJnZXQpOwog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRGcmFtZWJ1ZmZlcihHQzNE
ZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0
YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGRlbGV0ZWQ7CiAg
ICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgiYmluZEZyYW1lYnVmZmVyIiwgYnVmZmVyLCBk
ZWxldGVkKSkKQEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZQogICAg
IGFwcGx5U3RlbmNpbFRlc3QoKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIHJl
bmRlckJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciog
cmVuZGVyQnVmZmVyKQogewogICAgIGJvb2wgZGVsZXRlZDsKICAgICBpZiAoIWNoZWNrT2JqZWN0
VG9CZUJvdW5kKCJiaW5kUmVuZGVyYnVmZmVyIiwgcmVuZGVyQnVmZmVyLCBkZWxldGVkKSkKQEAg
LTk2Myw3ICs5NjMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRSZW5k
ZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZgogICAgICAgICByZW5kZXJC
dWZmZXItPnNldEhhc0V2ZXJCZWVuQm91bmQoKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4
dHVyZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJp
bmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQogewogICAg
IGJvb2wgZGVsZXRlZDsKICAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5kKCJiaW5kVGV4dHVy
ZSIsIHRleHR1cmUsIGRlbGV0ZWQpKQpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdD
M0RlbnVtIGRzdFIKICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0
UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc2l6ZSwgR0MzRGVu
dW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNpemUsIEdDM0RlbnVtIHVz
YWdlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNECiAgICAgfQog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0g
dGFyZ2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgR0MzRGVudW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUm
KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgQXJyYXlCdWZmZXIqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMDEsNyArMTEwMSw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0
YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBHCiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiYmIGRhdGEsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIFJl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0YSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEyNyw3ICsx
MTI3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0Rl
bnVtIHRhcmdldCwgUmVmUHRyPEFycmF5QnVmZmVyVmkKICAgICB9CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcg
bG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhKQogewogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJn
ZXQsIGxvbmcgbG9uZyBvZmZzZXQsCiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0
LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwg
bG9uZyBsb25nIG9mZnNldCwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNDks
NyArMTI0OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29sb3JNYXNrKEdD
M0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDCiAgICAgbV9jb250ZXh0LT5jb2xv
ck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9u
Q29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2Vi
R0xTaGFkZXIqIHNoYWRlcikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJjb21waWxlU2hhZGVyIiwgc2hhZGVyKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogICAgIHJldHVy
biBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVJlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUsIEV4Y2VwdGlvbkNvZGUm
KQorUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVT
aGFkZXIoR0MzRGVudW0gdHlwZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE1NzAsNyArMTU3MCw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVwdGhSYW5nZShHQzNEZmxvYXQgek5lYXIsIEdDM0Rm
bG9hdCB6RmFyKQogICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CiB9CiAK
LXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dy
YW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZGV0YWNoU2hhZGVyIiwgcHJvZ3JhbSkgfHwg
IXZhbGlkYXRlV2ViR0xPYmplY3QoImRldGFjaFNoYWRlciIsIHNoYWRlcikpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6ZGlzYWJsZShHQzNEZW51bSBjYXApCiAgICAgbV9jb250ZXh0LT5kaXNhYmxlKGNhcCk7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
MzgsNyArMTkzOCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVE
cmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0FycmF5cyhHQzNEZW51
bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQsIEV4Y2VwdGlvbkNvZGUmKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUs
IEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKIHsKICAgICBpZiAoIXZhbGlkYXRlRHJh
d0FycmF5cygiZHJhd0FycmF5cyIsIG1vZGUsIGZpcnN0LCBjb3VudCwgMCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5NjEsNyArMTk2MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6ZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6CiAgICAg
bWFya0NvbnRleHRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0g
dHlwZSwgbG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291
bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQpCiB7CiAgICAgdW5zaWduZWQgbnVt
RWxlbWVudHMgPSAwOwogICAgIGlmICghdmFsaWRhdGVEcmF3RWxlbWVudHMoImRyYXdFbGVtZW50
cyIsIG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIG51bUVsZW1lbnRzLCAwKSkKQEAgLTIwMDMs
NyArMjAwMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlKEdDM0Rl
bnVtIGNhcCkKICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOwogfQogCi12b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4
LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjAzMiw3ICsyMDMyLDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmbHVzaCgpCiAgICAgbV9jb250ZXh0LT5mbHVz
aCgpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0g
cmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciogYnVmZmVyLCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0
ZXJzKCJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsIHRhcmdldCwgYXR0YWNobWVudCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIwNjQsNyArMjA2NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
CiAgICAgYXBwbHlTdGVuY2lsVGVzdCgpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0
YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsIEdDM0Rp
bnQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1l
bnQsIEdDM0RlbnVtIHRleHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlLCBHQzNEaW50IGxl
dmVsKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlRnJh
bWVidWZmZXJGdW5jUGFyYW1ldGVycygiZnJhbWVidWZmZXJUZXh0dXJlMkQiLCB0YXJnZXQsIGF0
dGFjaG1lbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMTQ1LDcgKzIxNDUsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkK
ICAgICB0ZXgtPmdlbmVyYXRlTWlwbWFwTGV2ZWxJbmZvKCk7CiB9CiAKLVJlZlB0cjxXZWJHTEFj
dGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZUF0dHJpYihXZWJH
TFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJikKK1JlZlB0
cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZUF0
dHJpYihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGluZGV4KQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldEFjdGl2
ZUF0dHJpYiIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxNTgsNyAr
MjE1OCw3IEBAIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qCiAgICAgcmV0dXJuIFdlYkdMQWN0aXZl
SW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwgaW5mby50eXBlLCBpbmZvLnNpemUpOwogfQogCi1SZWZQ
dHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVV
bmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmKQorUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGluZGV4KQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmpl
Y3QoImdldEFjdGl2ZVVuaWZvcm0iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yMTc0LDcgKzIxNzQsNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogICAgIHJldHVy
biBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5zaXpl
KTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRl
cnMoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPj4mIHNo
YWRlck9iamVjdHMsIEV4Y2VwdGlvbkNvZGUmKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBWZWN0b3I8UmVm
UHRyPFdlYkdMU2hhZGVyPj4mIHNoYWRlck9iamVjdHMpCiB7CiAgICAgc2hhZGVyT2JqZWN0cy5j
bGVhcigpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2Vi
R0xPYmplY3QoImdldEF0dGFjaGVkU2hhZGVycyIsIHByb2dyYW0pKQpAQCAtMjIwOSw3ICsyMjA5
LDcgQEAgR0MzRGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRyaWJMb2NhdGlv
bihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnMKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRB
dHRyaWJMb2NhdGlvbihvYmplY3RPclplcm8ocHJvZ3JhbSksIG5hbWUpOwogfQogCi1XZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQorV2ViR0xHZXRJbmZv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBuYW1lKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTIyNTUsNyArMjI1NSw3IEBA
IEdDM0RlbnVtIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEVycm9yKCkKICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRFcnJvcigpOwogfQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgR0MzRGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsIHByb2dyYW0pKQog
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0yMjgyLDE0ICsyMjgyLDE0IEBAIFdl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhCiAgICAgfQogfQogCi1TdHJpbmcgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNl
cHRpb25Db2RlJikKK1N0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFt
SW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0pCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0UHJvZ3JhbUluZm9Mb2ciLCBw
cm9ncmFtKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBlbnN1cmVOb3RO
dWxsKG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cob2JqZWN0T3JaZXJvKHByb2dyYW0pKSk7
CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOwpAQCAtMjM1NCw3ICsyMzU0LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQKICAgICB9
CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
YXJhbWV0ZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBh
cmFtZXRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBHQzNEZW51bSBwbmFtZSkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRTaGFk
ZXJQYXJhbWV0ZXIiLCBzaGFkZXIpKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBA
IC0yMzc0LDE0ICsyMzc0LDE0IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwKICAgICB9CiB9CiAK
LVN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdM
U2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmKQorU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqIHNoYWRlcikKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRT
aGFkZXJJbmZvTG9nIiwgc2hhZGVyKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJl
dHVybiBlbnN1cmVOb3ROdWxsKG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhvYmplY3RPclpl
cm8oc2hhZGVyKSkpOwogfQogCi1SZWZQdHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51
bSBzaGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNpb25UeXBlLCBFeGNlcHRpb25Db2RlJikKK1Jl
ZlB0cjxXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDM0RlbnVtIHNoYWRlclR5cGUsIEdDM0RlbnVt
IHByZWNpc2lvblR5cGUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDEyLDE0ICsyNDEyLDE0IEBAIFJlZlB0cjxXZWJH
TFNoYWRlclByZWNpc2lvbkZvcm1hdD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hh
ZGVyUHJlY2lzaW9uCiAgICAgcmV0dXJuIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpjcmVh
dGUocmFuZ2VbMF0sIHJhbmdlWzFdLCBwcmVjaXNpb24pOwogfQogCi1TdHJpbmcgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4
Y2VwdGlvbkNvZGUmKQorU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clNvdXJjZShXZWJHTFNoYWRlciogc2hhZGVyKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFNoYWRlclNvdXJjZSIsIHNoYWRl
cikpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5zdXJlTm90TnVsbChz
aGFkZXItPmdldFNvdXJjZSgpKTsKIH0KIAotV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1l
LCBFeGNlcHRpb25Db2RlJikKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKCk7CkBAIC0yNDQ3LDcgKzI0NDcsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudQogICAg
IH0KIH0KIAotV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogdW5p
Zm9ybUxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJikKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIHVuaWZvcm1Mb2NhdGlvbikKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRVbmlmb3JtIiwgcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTI1NzQsNyArMjU3NCw3
IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiB9
CiAKLVJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFVuaWZvcm1Mb2NhdGlvbiIsIHBy
b2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2MTIsNyArMjYxMiw3IEBAIFJl
ZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFdlYkdMCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdlYkdMR2V0
SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIoR0MzRHVpbnQg
aW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikKK1dlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIoR0MzRHVpbnQgaW5kZXgsIEdD
M0RlbnVtIHBuYW1lKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTI3NTksNyArMjc1OSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGluZVdpZHRoKEdDM0RmbG9hdCB3aWR0aCkKICAgICBt
X2NvbnRleHQtPmxpbmVXaWR0aCh3aWR0aCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6bGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2Rl
JikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dyYW0oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlV2ViR0xPYmplY3QoImxpbmtQcm9ncmFtIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI4MTksNyArMjgxOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
cG9seWdvbk9mZnNldChHQzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpCiAgICAgbV9j
b250ZXh0LT5wb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpOwogfQogCi12b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBBcnJheUJ1ZmZlclZpZXcmIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIHBpeGVscykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0yOTI3LDcgKzI5MjcsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgRwogICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaGFkZXJTb3Vy
Y2UoV2ViR0xTaGFkZXIqIHNoYWRlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNv
ZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaGFkZXJTb3VyY2UoV2ViR0xT
aGFkZXIqIHNoYWRlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgic2hhZGVyU291cmNlIiwg
c2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI0OSw3ICszMjQ5LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGUKIH0KIAogI2lmIEVOQUJMRShWSURFTykKLVJlZlB0cjxJbWFnZT4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8sIEJhY2tpbmdTdG9yZUNvcHkgYmFja2luZ1N0b3JlQ29weSwgRXhjZXB0aW9uQ29k
ZSYpCitSZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpZGVvRnJhbWVU
b0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBCYWNraW5nU3RvcmVDb3B5IGJhY2tpbmdT
dG9yZUNvcHkpCiB7CiAgICAgSW50U2l6ZSBzaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVv
LT52aWRlb0hlaWdodCgpKTsKICAgICBJbWFnZUJ1ZmZlciogYnVmID0gbV9nZW5lcmF0ZWRJbWFn
ZUNhY2hlLmltYWdlQnVmZmVyKHNpemUpOwpAQCAtMzI4OCw3ICszMjg4LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGUKICAgICB9CiAKICAgICAvLyBOb3JtYWwgcHVyZSBTVyBwYXRoLgotICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSB2aWRlb0ZyYW1lVG9JbWFnZSh2aWRlbywgSW1hZ2VCdWZm
ZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCksIGVjKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
dmlkZW9GcmFtZVRvSW1hZ2UodmlkZW8sIEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgp
KTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgdGV4SW1hZ2UyREltcGwo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgaW1hZ2UuZ2V0KCks
IEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tVmlkZW8sIG1fdW5wYWNrRmxpcFksIG1fdW5wYWNr
UHJlbXVsdGlwbHlBbHBoYSwgZWMpOwpAQCAtMzM0Myw3ICszMzQzLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gcG5hbWUsIEcKICAgICB0ZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgMCwgcGFyYW0sIGZh
bHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgRXhjZXB0aW9u
Q29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCB4KQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47CkBA
IC0zMzU2LDcgKzMzNTYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0xZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0
LT51bmlmb3JtMWYobG9jYXRpb24tPmxvY2F0aW9uKCksIHgpOwogfQogCi12b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2Nh
dGlvbiwgdiwgMSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNjQsNyArMzM2NCw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIHYsIHNpemUsIDEpKQogICAgICAgICByZXR1cm47
CkBAIC0zMzcyLDcgKzMzNzIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSwgdik7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpKGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0zMzkwLDcgKzMzOTAsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaShjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRp
b24tPmxvY2F0aW9uKCksIHgpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFy
cmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJy
YXkmIHYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzQwNyw3ICszNDA3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCks
IHYuZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0Mz
RHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0Mz
RGludCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9u
LCB2LCBzaXplLCAxKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQyMyw3ICszNDIzLDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHNpemUsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rm
bG9hdCB4LCBHQzNEZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMzQzNiw3ICszNDM2
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEZsb2F0MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIp
KQogICAgICAgICByZXR1cm47CkBAIC0zNDQ0LDcgKzM0NDQsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
di5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0yZnYiLCBsb2NhdGlvbiwgdiwgc2l6ZSwgMikpCiAgICAgICAgIHJldHVybjsKQEAgLTM0
NTIsNyArMzQ1Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gMiwgdik7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEV4Y2VwdGlvbkNvZGUmKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwpA
QCAtMzQ2NSw3ICszNDY1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4
dC0+dW5pZm9ybTJpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBJbnQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2Nh
dGlvbiwgdiwgMikpCiAgICAgICAgIHJldHVybjsKQEAgLTM0NzMsNyArMzQ3Myw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIHYsIHNpemUsIDIpKQogICAgICAgICByZXR1cm47
CkBAIC0zNDgxLDcgKzM0ODEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDIsIHYpOwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZs
b2F0IHosIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQg
eCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0zNDk0LDcgKzM0OTQs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2YobG9j
YXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHopOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgRmxvYXQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwg
MykpCiAgICAgICAgIHJldHVybjsKQEAgLTM1MDIsNyArMzUwMiw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2Lmxlbmd0aCgpIC8gMywgdi5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAzKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MzUxMCw3ICszNTEwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQt
PnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyAzLCB2KTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2koY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBFeGNl
cHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpKGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RpbnQgeikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2Nh
dGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMzUyMyw3ICszNTIzLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2koY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB4LCB5LCB6KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
M2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdiwg
RXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0z
aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5JiB2KQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwgMykpCiAgICAgICAgIHJldHVybjsK
QEAgLTM1MzEsNyArMzUzMSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250
ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMywgdi5k
YXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6
ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50
KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYs
IHNpemUsIDMpKQogICAgICAgICByZXR1cm47CkBAIC0zNTM5LDcgKzM1MzksNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgc2l6ZSAvIDMsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rm
bG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3LCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBH
QzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTM1NTIsNyArMzU1Miw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgeCwgeSwgeiwgdyk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBGbG9hdDMyQXJyYXkmIHYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzU2MCw3ICszNTYwLDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIHNpemUsIDQpKQogICAgICAgICByZXR1cm47CkBAIC0z
NTY4LDcgKzM1NjgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+
dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDQsIHYpOwogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0Rp
bnQgdywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMzU4MSw3ICsz
NTgxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGkoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6LCB3KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgSW50MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBJbnQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlvbiwg
diwgNCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1ODksNyArMzU4OSw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB2Lmxlbmd0aCgpIC8gNCwgdi5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIHNpemUsIDQpKQogICAgICAgICByZXR1cm47CkBAIC0z
NTk3LDQ5ICszNTk3LDQ5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0
LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gNCwgdik7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQz
MkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
InVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA0KSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRp
b24oKSwgdi5sZW5ndGgoKSAvIDQsIHRyYW5zcG9zZSwgdi5kYXRhKCkpOwogfQogCi12b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCog
diwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBz
aXplKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCBzaXplLCA0KSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDQsIHRyYW5zcG9zZSwgdik7
CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2KQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA5KSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDksIHRyYW5zcG9zZSwgdi5kYXRhKCkpOwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
M0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdD
M0RzaXplaSBzaXplKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LCBzaXplLCA5KSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDksIHRyYW5z
cG9zZSwgdik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1h
dHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2
KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9y
bU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2LCAxNikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3NlLCB2LmRh
dGEoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJp
eDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRy
YW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0Rm
bG9hdCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDRm
diIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIHNpemUsIDE2KSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6
ZSAvIDE2LCB0cmFuc3Bvc2UsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJikKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHBy
b2dyYW0pCiB7CiAgICAgYm9vbCBkZWxldGVkOwogICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91
bmQoInVzZVByb2dyYW0iLCBwcm9ncmFtLCBkZWxldGVkKSkKQEAgLTM2NjAsNyArMzY2MCw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0q
IHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmCiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2Vw
dGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVByb2dy
YW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoInZhbGlkYXRlUHJvZ3JhbSIsIHByb2dyYW0p
KQogICAgICAgICByZXR1cm47CkBAIC0zNzI3LDcgKzM3MjcsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
KiB2LCBHQwogICAgIHZlcnRleEF0dHJpYmZ2SW1wbCgidmVydGV4QXR0cmliNGZ2IiwgaW5kZXgs
IHYsIHNpemUsIDQpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRl
eEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlw
ZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgbG9uZyBsb25nIG9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZl
cnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0g
dHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgbG9uZyBsb25n
IG9mZnNldCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm47CkBAIC00OTgzLDE1ICs0OTgzLDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6c2V0QmFja0RyYXdCdWZmZXIoR0MzRGVudW0gYnVmKQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnJlc3RvcmVDdXJyZW50RnJhbWVidWZmZXIoKQogewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7Ci0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCksIGVjKTsKKyAgICBiaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyQmluZGlu
Zy5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVzdG9yZUN1
cnJlbnRUZXh0dXJlMkQoKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgYXV0byB0ZXh0
dXJlID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0udGV4dHVyZTJEQmluZGlu
Zy5nZXQoKTsKLSAgICBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
dGV4dHVyZSwgZWMpOworICAgIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlKTsKICAgICBpZiAodGV4dHVyZSAmJiB0ZXh0dXJlLT5uZWVkVG9Vc2VCbGFj
a1RleHR1cmUodGV4dHVyZUV4dGVuc2lvbkZsYWdzKCkpKQogICAgICAgICBtX3VucmVuZGVyYWJs
ZVRleHR1cmVVbml0cy5hZGQobV9hY3RpdmVUZXh0dXJlVW5pdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5k
ZXggNDkxMzczMGY1M2Y0ODAyNjVlNWVkMGU3Y2QzZjZmMjM2OTEzYzhjMC4uNTZmOGIxOTlmYTll
M2YxOTJmZTdhMzA4NDY1YzkzNzAxMWVjOGJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTI1LDI0ICsx
MjUsMjQgQEAgcHVibGljOgogICAgIGludCBkcmF3aW5nQnVmZmVyV2lkdGgoKSBjb25zdDsKICAg
ICBpbnQgZHJhd2luZ0J1ZmZlckhlaWdodCgpIGNvbnN0OwogCi0gICAgdm9pZCBhY3RpdmVUZXh0
dXJlKEdDM0RlbnVtIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGF0dGFjaFNo
YWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBHQzNEdWludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBiaW5kQnVmZmVyKEdD
M0RlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBi
aW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdl
YkdMUmVuZGVyYnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYmluZFRleHR1cmUo
R0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpOworICAgIHZvaWQgYXR0YWNoU2hhZGVy
KFdlYkdMUHJvZ3JhbSosIFdlYkdMU2hhZGVyKik7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRp
b24oV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Cisg
ICAgdm9pZCBiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqKTsKKyAgICB2
b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqKTsK
KyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1
ZmZlciopOworICAgIHZvaWQgYmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1
cmUqKTsKICAgICB2b2lkIGJsZW5kQ29sb3IoR0MzRGZsb2F0IHJlZCwgR0MzRGZsb2F0IGdyZWVu
LCBHQzNEZmxvYXQgYmx1ZSwgR0MzRGZsb2F0IGFscGhhKTsKICAgICB2b2lkIGJsZW5kRXF1YXRp
b24oR0MzRGVudW0gbW9kZSk7CiAgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVu
dW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKTsKICAgICB2b2lkIGJsZW5kRnVuYyhHQzNE
ZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKTsKICAgICB2b2lkIGJsZW5kRnVuY1NlcGFy
YXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwg
R0MzRGVudW0gZHN0QWxwaGEpOwogCi0gICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgbG9uZyBsb25nIHNpemUsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXIqIGRhdGEsIEdDM0Rl
bnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVt
IHRhcmdldCwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhLCBHQzNEZW51bSB1c2FnZSwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwg
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNpemUsIEdDM0RlbnVtIHVz
YWdlKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlciog
ZGF0YSwgR0MzRGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJn
ZXQsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0YSwgR0MzRGVudW0gdXNhZ2UpOworICAg
IHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIEFy
cmF5QnVmZmVyKiBkYXRhKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0
LCBsb25nIGxvbmcgb2Zmc2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRhdGEpOwogCiAg
ICAgR0MzRGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhcihHQzNEYml0ZmllbGQgbWFzaykgPSAwOwpAQCAtMTUwLDcgKzE1
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGVwdGgoR0MzRGZsb2F0KTsKICAgICB2b2lk
IGNsZWFyU3RlbmNpbChHQzNEaW50KTsKICAgICB2b2lkIGNvbG9yTWFzayhHQzNEYm9vbGVhbiBy
ZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBo
YSk7Ci0gICAgdm9pZCBjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciopOwogCiAgICAgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVt
IGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rp
bnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEpOwogICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgZGF0YSk7CkBAIC0xNjIsNyArMTYyLDcg
QEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBjcmVhdGVGcmFtZWJ1ZmZl
cigpOwogICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IGNyZWF0ZVByb2dyYW0oKTsKICAgICBSZWZQ
dHI8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgIFJlZlB0cjxX
ZWJHTFNoYWRlcj4gY3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBSZWZQdHI8V2ViR0xTaGFkZXI+IGNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKTsKICAg
ICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCk7CiAKICAgICB2b2lkIGN1bGxG
YWNlKEdDM0RlbnVtIG1vZGUpOwpAQCAtMTc3LDQzICsxNzcsNDMgQEAgcHVibGljOgogICAgIHZv
aWQgZGVwdGhGdW5jKEdDM0RlbnVtKTsKICAgICB2b2lkIGRlcHRoTWFzayhHQzNEYm9vbGVhbik7
CiAgICAgdm9pZCBkZXB0aFJhbmdlKEdDM0RmbG9hdCB6TmVhciwgR0MzRGZsb2F0IHpGYXIpOwot
ICAgIHZvaWQgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSosIFdlYkdMU2hhZGVyKiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSosIFdlYkdMU2hh
ZGVyKik7CiAgICAgdm9pZCBkaXNhYmxlKEdDM0RlbnVtIGNhcCk7Ci0gICAgdm9pZCBkaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIGRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNv
dW50LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9k
ZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQg
aW5kZXgpOworICAgIHZvaWQgZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0
LCBHQzNEc2l6ZWkgY291bnQpOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUs
IEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCk7CiAKICAg
ICB2b2lkIGVuYWJsZShHQzNEZW51bSBjYXApOwotICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KTsKICAgICB2b2lkIGZpbmlzaCgpOwogICAg
IHZvaWQgZmx1c2goKTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0
LCBXZWJHTFJlbmRlcmJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gdGV4dGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBHQzNEaW50IGxldmVsLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5k
ZXJidWZmZXIqKTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBXZWJHTFRleHR1cmUq
LCBHQzNEaW50IGxldmVsKTsKICAgICB2b2lkIGZyb250RmFjZShHQzNEZW51bSBtb2RlKTsKICAg
ICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCk7CiAKLSAgICBSZWZQdHI8V2Vi
R0xBY3RpdmVJbmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRBY3Rp
dmVVbmlmb3JtKFdlYkdMUHJvZ3JhbSosIEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgYm9vbCBnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9ncmFtKiwgVmVjdG9yPFJlZlB0
cjxXZWJHTFNoYWRlcj4+JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxXZWJHTEFjdGl2
ZUluZm8+IGdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qLCBHQzNEdWludCBpbmRleCk7Cisg
ICAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gZ2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0q
LCBHQzNEdWludCBpbmRleCk7CisgICAgYm9vbCBnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9n
cmFtKiwgVmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+Jik7CiAgICAgR0MzRGludCBnZXRBdHRy
aWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIFdlYkdM
R2V0SW5mbyBnZXRCdWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFt
ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQYXJhbWV0ZXIo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSk7CiAgICAgUmVmUHRyPFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM+IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0MzRGVudW0gZ2V0RXJy
b3IoKTsKICAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9uKiBnZXRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwg
R0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHTEdl
dEluZm8gZ2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwot
ICAgIFdlYkdMR2V0SW5mbyBnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSosIEdDM0Rl
bnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9n
KFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXZWJHTEdldEluZm8gZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBXZWJHTEdldEluZm8gZ2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hh
ZGVyKiwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBTdHJpbmcgZ2V0U2hh
ZGVySW5mb0xvZyhXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBSZWZQdHI8V2Vi
R0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51
bSBzaGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBXZWJHTEdldEluZm8gZ2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qLCBHQzNE
ZW51bSBwbmFtZSk7CisgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSop
OworICAgIFdlYkdMR2V0SW5mbyBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBwbmFtZSk7CisgICAgV2ViR0xHZXRJbmZvIGdldFNoYWRlclBhcmFtZXRl
cihXZWJHTFNoYWRlciosIEdDM0RlbnVtIHBuYW1lKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5m
b0xvZyhXZWJHTFNoYWRlciopOworICAgIFJlZlB0cjxXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1h
dD4gZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDM0RlbnVtIHNoYWRlclR5cGUsIEdDM0RlbnVt
IHByZWNpc2lvblR5cGUpOworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIq
KTsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSA9
IDA7Ci0gICAgV2ViR0xHZXRJbmZvIGdldFRleFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV2ViR0xHZXRJbmZvIGdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBnZXRVbmlmb3JtTG9jYXRp
b24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdl
YkdMR2V0SW5mbyBnZXRWZXJ0ZXhBdHRyaWIoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1l
LCBFeGNlcHRpb25Db2RlJik7CisgICAgV2ViR0xHZXRJbmZvIGdldFRleFBhcmFtZXRlcihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0VW5pZm9y
bShXZWJHTFByb2dyYW0qLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiopOworICAgIFJlZlB0
cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSos
IGNvbnN0IFN0cmluZyYpOworICAgIFdlYkdMR2V0SW5mbyBnZXRWZXJ0ZXhBdHRyaWIoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lKTsKICAgICBsb25nIGxvbmcgZ2V0VmVydGV4QXR0cmli
T2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUpID0gMDsKQEAgLTIyNywxNSAr
MjI3LDE1IEBAIHB1YmxpYzoKICAgICBHQzNEYm9vbGVhbiBpc1RleHR1cmUoV2ViR0xUZXh0dXJl
Kik7CiAKICAgICB2b2lkIGxpbmVXaWR0aChHQzNEZmxvYXQpOwotICAgIHZvaWQgbGlua1Byb2dy
YW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgbGlua1Byb2dyYW0o
V2ViR0xQcm9ncmFtKik7CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFtZSwgR0Mz
RGludCBwYXJhbSk7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdD
M0RmbG9hdCB1bml0cyk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1
ZmZlclZpZXcmIHBpeGVscyk7CiAgICAgdm9pZCByZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpID0g
MDsKICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDM0RmbG9hdCB2YWx1ZSwgR0MzRGJvb2xlYW4g
aW52ZXJ0KTsKICAgICB2b2lkIHNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7Ci0gICAgdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xT
aGFkZXIqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzaGFkZXJT
b3VyY2UoV2ViR0xTaGFkZXIqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN0ZW5jaWxGdW5j
KEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsKICAgICB2b2lkIHN0
ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCBy
ZWYsIEdDM0R1aW50IG1hc2spOwogICAgIHZvaWQgc3RlbmNpbE1hc2soR0MzRHVpbnQpOwpAQCAt
Mjc0LDM5ICsyNzQsMzkgQEAgcHVibGljOgogICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIEhUTUxWaWRlb0VsZW1lbnQqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogI2VuZGlm
CiAKLSAgICB2b2lkIHVuaWZvcm0xZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rm
bG9hdCB4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCB1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0KiB2
LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0xaShjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgdW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEludDMyQXJyYXkmIHYs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIHVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4LCBH
QzNEZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTJmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgdW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9h
dCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMmkoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0yaXYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMy
QXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIHZvaWQgdW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEludDMyQXJyYXkmIHYsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4LCBHQzNE
ZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCB1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5
JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQg
eCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdywgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgdW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEludDMyQXJyYXkm
IHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNE
Ym9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0Mz
RHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJy
YXkmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxv
YXQqIHZhbHVlLCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIHZvaWQgdXNlUHJv
Z3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB2YWxpZGF0ZVBy
b2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTFm
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0IHgpOworICAgIHZvaWQgdW5p
Zm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdik7Cisg
ICAgdm9pZCB1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0
KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQgdW5pZm9ybTFpKGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0MzRGludCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2KTsKKyAgICB2b2lkIHVuaWZvcm0xaXYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQg
dW5pZm9ybTJmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0IHgsIEdDM0Rm
bG9hdCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBGbG9hdDMyQXJyYXkmIHYpOworICAgIHZvaWQgdW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm0y
aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCwgR0MzRGludCB5KTsKKyAg
ICB2b2lkIHVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5
JiB2KTsKKyAgICB2b2lkIHVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEaW50KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQgdW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeik7Cisg
ICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFy
cmF5JiB2KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSk7CisgICAgdm9pZCB1bmlmb3JtM2koY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6KTsKKyAg
ICB2b2lkIHVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5
JiB2KTsKKyAgICB2b2lkIHVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
QzNEaW50KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQgdW5pZm9ybTRmKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0Mz
RGZsb2F0IHcpOworICAgIHZvaWQgdW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biosIEZsb2F0MzJBcnJheSYgdik7CisgICAgdm9pZCB1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQgdW5pZm9y
bTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RpbnQgeiwgR0MzRGludCB3KTsKKyAgICB2b2lkIHVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2KTsKKyAgICB2b2lkIHVuaWZvcm00aXYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2YWx1ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBH
QzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWkpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQz
MkFycmF5JiB2YWx1ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBH
QzNEc2l6ZWkpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2YWx1ZSk7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWkpOworCisgICAg
dm9pZCB1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSopOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFt
KFdlYkdMUHJvZ3JhbSopOwogCiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0IHgpOwogICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4
LCBGbG9hdDMyQXJyYXkmIHZhbHVlcyk7CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBGbG9hdDMyQXJyYXkmIHZhbHVl
cyk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCog
dmFsdWVzLCBHQzNEc2l6ZWkgc2l6ZSk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdD
M0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5v
cm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBzdHJpZGUs
IGxvbmcgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgR0MzRHNpemVpIHN0
cmlkZSwgbG9uZyBsb25nIG9mZnNldCk7CiAKICAgICB2b2lkIHZpZXdwb3J0KEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogCkBAIC00Mjks
NyArNDI5LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxJbWFnZT4gZHJhd0ltYWdlSW50b0J1
ZmZlcihJbWFnZSYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9y
KTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBSZWZQdHI8SW1hZ2U+IHZpZGVvRnJhbWVUb0lt
YWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBCYWNraW5nU3RvcmVDb3B5LCBFeGNlcHRpb25Db2RlJik7
CisgICAgUmVmUHRyPEltYWdlPiB2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50Kiwg
QmFja2luZ1N0b3JlQ29weSk7CiAjZW5kaWYKIAogICAgIFdlYkdMVGV4dHVyZTo6VGV4dHVyZUV4
dGVuc2lvbkZsYWcgdGV4dHVyZUV4dGVuc2lvbkZsYWdzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRs
CmluZGV4IGE3NWEyNzJlMTFjMDdlMTMyYzdhMThlODM0Zjk0YTg3NzRmYjFiODkuLmI1MjE0YWU2
NjNlMTMyOGY5MmI5ZjZmMWFmY2Q3YTcwODM3NDk0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCkBAIC00
NzIsMjMgKzQ3MiwyMyBAQCB0eXBlZGVmIHVucmVzdHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgR0xzaXplaSBkcmF3aW5nQnVmZmVyV2lkdGg7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEdMc2l6ZWkgZHJhd2luZ0J1ZmZlckhlaWdodDsKIAotICAgIFtNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBhY3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJlKTsK
LSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYXR0YWNoU2hhZGVyKFdlYkdMUHJv
Z3JhbT8gcHJvZ3JhbSwgV2ViR0xTaGFkZXI/IHNoYWRlcik7Ci0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uXSB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0/IHByb2dyYW0s
IEdMdWludCBpbmRleCwgRE9NU3RyaW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbl0gdm9pZCBiaW5kQnVmZmVyKEdMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyPyBidWZmZXIp
OwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBiaW5kRnJhbWVidWZmZXIoR0xl
bnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlcj8gZnJhbWVidWZmZXIpOwotICAgIFtNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIFdl
YkdMUmVuZGVyYnVmZmVyPyByZW5kZXJidWZmZXIpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbl0gdm9pZCBiaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmU/IHRleHR1
cmUpOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSk7CisgICAgdm9pZCBh
dHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBXZWJHTFNoYWRlcj8gc2hhZGVyKTsK
KyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMdWlu
dCBpbmRleCwgRE9NU3RyaW5nIG5hbWUpOworICAgIHZvaWQgYmluZEJ1ZmZlcihHTGVudW0gdGFy
Z2V0LCBXZWJHTEJ1ZmZlcj8gYnVmZmVyKTsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTGVu
dW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyPyBmcmFtZWJ1ZmZlcik7CisgICAgdm9pZCBiaW5k
UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyPyByZW5kZXJidWZm
ZXIpOworICAgIHZvaWQgYmluZFRleHR1cmUoR0xlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlPyB0
ZXh0dXJlKTsKICAgICB2b2lkIGJsZW5kQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVl
biwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwogICAgIHZvaWQgYmxlbmRFcXVhdGlv
bihHTGVudW0gbW9kZSk7CiAgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1v
ZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwogICAgIHZvaWQgYmxlbmRGdW5jKEdMZW51bSBzZmFj
dG9yLCBHTGVudW0gZGZhY3Rvcik7CiAgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0g
c3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGJ1ZmZlckRhdGEoR0xlbnVtIHRh
cmdldCwgQXJyYXlCdWZmZXI/IGRhdGEsIEdMZW51bSB1c2FnZSk7Ci0gICAgW01heVRocm93TGVn
YWN5RXhjZXB0aW9uXSB2b2lkIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJW
aWV3PyBkYXRhLCBHTGVudW0gdXNhZ2UpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
dm9pZCBidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVz
YWdlKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYnVmZmVyU3ViRGF0YShH
TGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEFycmF5QnVmZmVyPyBkYXRhKTsKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYnVmZmVyU3ViRGF0YShHTGVudW0gdGFyZ2V0
LCBHTGludHB0ciBvZmZzZXQsIEFycmF5QnVmZmVyVmlldz8gZGF0YSk7CisgICAgdm9pZCBidWZm
ZXJEYXRhKEdMZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyPyBkYXRhLCBHTGVudW0gdXNhZ2UpOwor
ICAgIHZvaWQgYnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXc/IGRhdGEs
IEdMZW51bSB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEdMc2l6
ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0xlbnVt
IHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBBcnJheUJ1ZmZlcj8gZGF0YSk7CisgICAgdm9pZCBi
dWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgQXJyYXlCdWZmZXJW
aWV3PyBkYXRhKTsKIAogICAgIEdMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0
YXJnZXQpOwogICAgIHZvaWQgY2xlYXIoR0xiaXRmaWVsZCBtYXNrKTsKQEAgLTQ5NiwxMiArNDk2
LDEyIEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIHZvaWQgY2xl
YXJEZXB0aChHTGNsYW1wZiBkZXB0aCk7CiAgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0xpbnQgcyk7
CiAgICAgdm9pZCBjb2xvck1hc2soR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJv
b2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRlcj8gc2hhZGVyKTsKKyAgICB2b2lkIGNv
bXBpbGVTaGFkZXIoV2ViR0xTaGFkZXI/IHNoYWRlcik7CiAKICAgICB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCiAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgQXJy
YXlCdWZmZXJWaWV3IGRhdGEpOwogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCi0g
ICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZm
ZXJWaWV3IGRhdGEpOworICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwogICAgIAogICAgIHZvaWQgY29weVRl
eEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50
IGJvcmRlcik7CiAgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIHR5cGVk
ZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIFdlYkdMRnJhbWVidWZmZXIgY3Jl
YXRlRnJhbWVidWZmZXIoKTsKICAgICBXZWJHTFByb2dyYW0gY3JlYXRlUHJvZ3JhbSgpOwogICAg
IFdlYkdMUmVuZGVyYnVmZmVyIGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgIFtNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gV2ViR0xTaGFkZXIgY3JlYXRlU2hhZGVyKEdMZW51bSB0eXBlKTsKKyAg
ICBXZWJHTFNoYWRlciBjcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpOwogICAgIFdlYkdMVGV4dHVy
ZSBjcmVhdGVUZXh0dXJlKCk7CiAKICAgICB2b2lkIGN1bGxGYWNlKEdMZW51bSBtb2RlKTsKQEAg
LTUyNSwyMyArNTI1LDIzIEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwog
ICAgIHZvaWQgZGVwdGhGdW5jKEdMZW51bSBmdW5jKTsKICAgICB2b2lkIGRlcHRoTWFzayhHTGJv
b2xlYW4gZmxhZyk7CiAgICAgdm9pZCBkZXB0aFJhbmdlKEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1w
ZiB6RmFyKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZGV0YWNoU2hhZGVy
KFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAgdm9pZCBk
ZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBXZWJHTFNoYWRlcj8gc2hhZGVyKTsK
ICAgICB2b2lkIGRpc2FibGUoR0xlbnVtIGNhcCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0
aW9uXSB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpOwotICAgIFtN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2
b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUs
IEdMaW50cHRyIG9mZnNldCk7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1
aW50IGluZGV4KTsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0
LCBHTHNpemVpIGNvdW50KTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIG9mZnNldCk7CiAKICAgICB2b2lkIGVu
YWJsZShHTGVudW0gY2FwKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KTsKKyAgICB2b2lkIGVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdMdWludCBpbmRleCk7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lk
IGZsdXNoKCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcmVu
ZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVy
ZT8gdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSByZW5kZXJidWZmZXJ0
YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyPyByZW5kZXJidWZmZXIpOworICAgIHZvaWQgZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0
ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZT8gdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwogICAgIHZvaWQg
ZnJvbnRGYWNlKEdMZW51bSBtb2RlKTsKICAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdMZW51bSB0
YXJnZXQpOwogICAgIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gV2ViR0xBY3RpdmVJ
bmZvIGdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMdWludCBpbmRleCk7
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBXZWJHTEFjdGl2ZUluZm8gZ2V0QWN0aXZl
VW5pZm9ybShXZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMdWludCBpbmRleCk7CisgICAgV2ViR0xB
Y3RpdmVJbmZvIGdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMdWludCBp
bmRleCk7CisgICAgV2ViR0xBY3RpdmVJbmZvIGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFt
PyBwcm9ncmFtLCBHTHVpbnQgaW5kZXgpOwogCiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7
CiAKQEAgLTU1OSwxNSArNTU5LDE1IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xh
bXBmOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhbnkgZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50
LCBHTGVudW0gcG5hbWUpOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBh
bnkgZ2V0UGFyYW1ldGVyKEdMZW51bSBwbmFtZSk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIGFueSBnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbT8gcHJvZ3Jh
bSwgR0xlbnVtIHBuYW1lKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIERPTVN0cmlu
Zz8gZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtPyBwcm9ncmFtKTsKKyAgICBET01TdHJp
bmc/IGdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CiAgICAgW0N1c3Rv
bSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGFueSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lKTsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbl0gYW55IGdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlcj8gc2hhZGVyLCBH
TGVudW0gcG5hbWUpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBET01TdHJpbmc/
IGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXI/IHNoYWRlcik7CisgICAgRE9NU3RyaW5nPyBn
ZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyPyBzaGFkZXIpOwogCi0gICAgW01heVRocm93TGVn
YWN5RXhjZXB0aW9uXSBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdCBnZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQoR0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlKTsKKyAgICBX
ZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0xlbnVt
IHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlKTsKIAotICAgIFtNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbl0gRE9NU3RyaW5nPyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXI/IHNoYWRl
cik7CisgICAgRE9NU3RyaW5nPyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXI/IHNoYWRlcik7
CiAKICAgICBbQ3VzdG9tXSBzZXF1ZW5jZTxET01TdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lv
bnMoKTsKIApAQCAtNTc1LDcgKzU3NSw3IEBAIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdM
Y2xhbXBmOwogCiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGFueSBnZXRV
bmlmb3JtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0
aW9uKTsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gV2ViR0xVbmlmb3JtTG9jYXRp
b24gZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgRE9NU3RyaW5nIG5h
bWUpOworICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFBy
b2dyYW0/IHByb2dyYW0sIERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDdXN0b20sIE1heVRocm93
TGVnYWN5RXhjZXB0aW9uXSBhbnkgZ2V0VmVydGV4QXR0cmliKEdMdWludCBpbmRleCwgR0xlbnVt
IHBuYW1lKTsKIApAQCAtNTkxLDE3ICs1OTEsMTcgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxv
YXQgR0xjbGFtcGY7CiAgICAgR0xib29sZWFuIGlzU2hhZGVyKFdlYkdMU2hhZGVyPyBzaGFkZXIp
OwogICAgIEdMYm9vbGVhbiBpc1RleHR1cmUoV2ViR0xUZXh0dXJlPyB0ZXh0dXJlKTsKICAgICB2
b2lkIGxpbmVXaWR0aChHTGZsb2F0IHdpZHRoKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIHZvaWQgbGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtPyBwcm9ncmFtKTsKKyAgICB2b2lkIGxp
bmtQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CiAgICAgdm9pZCBwaXhlbFN0b3JlaShH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0xmbG9h
dCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9u
XSB2b2lkIHJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcgcGl4
ZWxzKTsKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBBcnJheUJ1ZmZl
clZpZXcgcGl4ZWxzKTsKICAgICAKICAgICB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpOwog
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKICAgICB2b2lkIHNhbXBs
ZUNvdmVyYWdlKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKICAgICB2b2lkIHNj
aXNzb3IoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwot
ICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xTaGFk
ZXI/IHNoYWRlciwgRE9NU3RyaW5nIHN0cmluZyk7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoV2Vi
R0xTaGFkZXI/IHNoYWRlciwgRE9NU3RyaW5nIHN0cmluZyk7CiAgICAgdm9pZCBzdGVuY2lsRnVu
YyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CiAgICAgdm9pZCBzdGVuY2ls
RnVuY1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQg
bWFzayk7CiAgICAgdm9pZCBzdGVuY2lsTWFzayhHTHVpbnQgbWFzayk7CkBAIC02NDAsMjkgKzY0
MCwyOSBAQCB0eXBlZGVmIHVucmVzdHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKICBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgSFRNTFZpZGVvRWxlbWVudD8gdmlkZW8pOwogI2VuZGlmCiAKLSAg
ICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTFmKFdlYkdMVW5pZm9ybUxv
Y2F0aW9uPyBsb2NhdGlvbiwgR0xmbG9hdCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xZihXZWJHTFVu
aWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxvYXQgeCk7CiAgICAgW0N1c3RvbSwgTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTFmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8g
bG9jYXRpb24sIEZsb2F0MzJBcnJheSB2KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25d
IHZvaWQgdW5pZm9ybTFpKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xpbnQgeCk7
CisgICAgdm9pZCB1bmlmb3JtMWkoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGlu
dCB4KTsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3Jt
MWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgSW50MzJBcnJheSB2KTsKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTJmKFdlYkdMVW5pZm9ybUxvY2F0
aW9uPyBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOworICAgIHZvaWQgdW5pZm9ybTJm
KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwog
ICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0yZnYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkgdik7Ci0gICAgW01heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0yaShXZWJHTFVuaWZvcm1Mb2NhdGlvbj8g
bG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpOworICAgIHZvaWQgdW5pZm9ybTJpKFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSk7CiAgICAgW0N1c3RvbSwg
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTJpdihXZWJHTFVuaWZvcm1Mb2Nh
dGlvbj8gbG9jYXRpb24sIEludDMyQXJyYXkgdik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0
aW9uXSB2b2lkIHVuaWZvcm0zZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOworICAgIHZvaWQgdW5pZm9ybTNmKFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7
CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTNmdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEZsb2F0MzJBcnJheSB2KTsKLSAgICBbTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTNpKFdlYkdMVW5pZm9ybUxvY2F0aW9u
PyBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7CisgICAgdm9pZCB1bmlmb3Jt
M2koV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGlu
dCB6KTsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3Jt
M2l2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgSW50MzJBcnJheSB2KTsKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTRmKFdlYkdMVW5pZm9ybUxvY2F0
aW9uPyBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3
KTsKKyAgICB2b2lkIHVuaWZvcm00ZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiAgICAgW0N1c3RvbSwg
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgdW5pZm9ybTRmdihXZWJHTFVuaWZvcm1Mb2Nh
dGlvbj8gbG9jYXRpb24sIEZsb2F0MzJBcnJheSB2KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHZvaWQgdW5pZm9ybTRpKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xp
bnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGkoV2Vi
R0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBH
TGludCB3KTsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlm
b3JtNGl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgSW50MzJBcnJheSB2KTsKIAog
ICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm1NYXRyaXgy
ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBG
bG9hdDMyQXJyYXkgYXJyYXkpOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9u
XSB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkgYXJyYXkpOwogICAgIFtDdXN0b20sIE1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24/IGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkgYXJy
YXkpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVzZVByb2dyYW0oV2Vi
R0xQcm9ncmFtPyBwcm9ncmFtKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CisgICAgdm9pZCB1c2VQcm9n
cmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oV2Vi
R0xQcm9ncmFtPyBwcm9ncmFtKTsKIAogICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0x1aW50IGlu
ZHgsIEdMZmxvYXQgeCk7CiAgICAgW0N1c3RvbV0gdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0x1aW50
IGluZHgsIEZsb2F0MzJBcnJheSB2YWx1ZXMpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIHR5cGVkZWYg
dW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIFtDdXN0b21dIHZvaWQgdmVydGV4QXR0
cmliM2Z2KEdMdWludCBpbmR4LCBGbG9hdDMyQXJyYXkgdmFsdWVzKTsKICAgICB2b2lkIHZlcnRl
eEF0dHJpYjRmKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBH
TGZsb2F0IHcpOwogICAgIFtDdXN0b21dIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmR4
LCBGbG9hdDMyQXJyYXkgdmFsdWVzKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgdmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5
cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgR0xpbnRwdHIgb2Zmc2V0
KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0x1aW50IGluZHgsIEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIEdMaW50
cHRyIG9mZnNldCk7CiAKICAgICB2b2lkIHZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIH07Cg==
</data>
<flag name="commit-queue"
          id="315344"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292276</attachid>
            <date>2016-10-20 16:18:52 -0700</date>
            <delta_ts>2016-10-20 16:54:11 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-163747-20161020161514.patch</filename>
            <type>text/plain</type>
            <size>81218</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRiNTUyZGZjMGRjYTBh
ODA3YTAxZDM4M2VlNWExNjViNWFiNjU2YS4uYTgzMjBmMjc4ZGI1NDBjOTU5Y2NiMTAyNWMxNDU4
ZGFjYTE5NzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFueSBXZWJH
TCBmdW5jdGlvbnMgd2hpY2ggZG9uJ3QgdGhyb3cgYXJlIG1hcmtlZCBhcyBwb3NzaWJseSB0aHJv
d2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIE1lY2hh
bmljYWxseSByZW1vdmUgdGhlIGV4Y2VwdGlvbiBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFGdW5jdGlvbmkpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9u
TWF0cml4KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdl
MkQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphdHRhY2hTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEF0
dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFjaFNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6ZHJhd0FycmF5cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0
aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1JbmZvTG9n
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlkZW9GcmFtZVRvSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWkpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmkp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
M2YpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3RvcmVD
dXJyZW50RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cmVzdG9yZUN1cnJlbnRUZXh0dXJlMkQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbDoKKwogMjAxNi0xMC0xOSAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gW2lPU10gRGlzYWJs
ZSB2YXJpYXRpb24gZm9udHMgb24gbWFjT1MgRWwgQ2FwaXRhbiBhbmQgaU9TIDkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4IGQ1M2EzYjg0MDBkNWU0NTQ0NzRhZGQ3MmU4ZjI0
NmQ2NTkwNjlhYTUuLjU3YjdhNTJmOGJkMDk2NzVjNDI0ODYwODdjZGRhNDMxZTVhNTcwYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcApAQCAtMjA1LDE3ICsyMDUsMTcgQEAgc3Rh
dGljIEpTVmFsdWUgZ2V0T2JqZWN0UGFyYW1ldGVyKEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSogb2JqLCBFeGVjU3RhdGUmIHMKICAgICBXZWJHTEdldEluZm8gaW5mbzsKICAgICBzd2l0Y2gg
KG9iamVjdFR5cGUpIHsKICAgICBjYXNlIGtCdWZmZXI6Ci0gICAgICAgIGluZm8gPSBjb250ZXh0
LmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGluZm8gPSBj
b250ZXh0LmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBrUmVuZGVyYnVmZmVyOgotICAgICAgICBpbmZvID0gY29udGV4dC5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBpbmZvID0gY29u
dGV4dC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga1RleHR1cmU6Ci0gICAgICAgIGluZm8gPSBjb250ZXh0LmdldFRleFBh
cmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGluZm8gPSBjb250ZXh0LmdldFRl
eFBhcmFtZXRlcih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrVmVy
dGV4QXR0cmliOgogICAgICAgICAvLyB0YXJnZXQgPT4gaW5kZXgKLSAgICAgICAgaW5mbyA9IGNv
bnRleHQuZ2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgaW5mbyA9
IGNvbnRleHQuZ2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMzEwLDcgKzMxMCw3
IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRl
cnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPj4g
c2hhZGVyczsKLSAgICBib29sIHN1Y2NlZWQgPSBjb250ZXh0LmdldEF0dGFjaGVkU2hhZGVycyhw
cm9ncmFtLCBzaGFkZXJzLCBlYyk7CisgICAgYm9vbCBzdWNjZWVkID0gY29udGV4dC5nZXRBdHRh
Y2hlZFNoYWRlcnMocHJvZ3JhbSwgc2hhZGVycyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAt
NDAyLDcgKzQwMiw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
cm9ncmFtUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC5nZXRQ
cm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAgV2ViR0xHZXRJbmZvIGlu
Zm8gPSBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcG5hbWUpOwogICAgIGlm
IChlYykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNDMwLDcgKzQzMCw3IEBAIEpTVmFsdWUgSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRlcjo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC5nZXRT
aGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSwgZWMpOworICAgIFdlYkdMR2V0SW5mbyBpbmZv
ID0gY29udGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSk7CiAgICAgaWYgKGVj
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CkBAIC00NzEsNyArNDcxLDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBw
ZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICghbG9jYXRpb24gJiYgIXN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKLSAgICBXZWJHTEdldEluZm8gaW5m
byA9IGNvbnRleHQuZ2V0VW5pZm9ybShwcm9ncmFtLCBsb2NhdGlvbiwgZWMpOworICAgIFdlYkdM
R2V0SW5mbyBpbmZvID0gY29udGV4dC5nZXRVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uKTsKICAg
ICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU1OCwxNiArNTU4LDE2IEBAIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZGF0YUZ1bmN0aW9uZihEYXRhRnVuY3Rpb25Ub0NhbGwgZiwgSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBXCiAgICAgaWYgKHdlYkdMQXJyYXkpIHsKICAgICAgICAgc3dpdGNoIChmKSB7
CiAgICAgICAgIGNhc2UgZl91bmlmb3JtMXY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0x
ZnYobG9jYXRpb24sICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZv
cm0xZnYobG9jYXRpb24sICp3ZWJHTEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIGZfdW5pZm9ybTJ2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMmZ2KGxvY2F0
aW9uLCAqd2ViR0xBcnJheSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMmZ2KGxv
Y2F0aW9uLCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBm
X3VuaWZvcm0zdjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTNmdihsb2NhdGlvbiwgKndl
YkdMQXJyYXksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTNmdihsb2NhdGlvbiwg
KndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3Jt
NHY6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm00ZnYobG9jYXRpb24sICp3ZWJHTEFycmF5
LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm00ZnYobG9jYXRpb24sICp3ZWJHTEFy
cmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdmVydGV4QXR0cmliMXY6
CiAgICAgICAgICAgICBjb250ZXh0LnZlcnRleEF0dHJpYjFmdihpbmRleCwgKndlYkdMQXJyYXkp
OwpAQCAtNTkzLDE2ICs1OTMsMTYgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25m
KERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFcKICAgICAKICAg
ICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgotICAgICAgICBjb250ZXh0LnVu
aWZvcm0xZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgpLCBlYyk7CisgICAg
ICAgIGNvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXpl
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTJ2OgotICAgICAgICBjb250
ZXh0LnVuaWZvcm0yZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgpLCBlYyk7
CisgICAgICAgIGNvbnRleHQudW5pZm9ybTJmdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJh
eS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTN2OgotICAgICAg
ICBjb250ZXh0LnVuaWZvcm0zZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgp
LCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgp
LCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTR2Ogot
ICAgICAgICBjb250ZXh0LnVuaWZvcm00ZnYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXku
c2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTRmdihsb2NhdGlvbiwgYXJyYXku
ZGF0YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdmVydGV4
QXR0cmliMXY6CiAgICAgICAgIGNvbnRleHQudmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheS5k
YXRhKCksIGFycmF5LnNpemUoKSk7CkBAIC02NDAsMTYgKzY0MCwxNiBAQCBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1bmN0aW9uVG9DYWxsIGYsIEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgVwogICAgIGlmICh3ZWJHTEFycmF5KSB7CiAgICAgICAgIHN3aXRjaCAoZikgewog
ICAgICAgICBjYXNlIGZfdW5pZm9ybTF2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtMWl2
KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwgZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3Jt
MWl2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBmX3VuaWZvcm0ydjoKLSAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTJpdihsb2NhdGlv
biwgKndlYkdMQXJyYXksIGVjKTsKKyAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybTJpdihsb2Nh
dGlvbiwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91
bmlmb3JtM3Y6Ci0gICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0zaXYobG9jYXRpb24sICp3ZWJH
TEFycmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm0zaXYobG9jYXRpb24sICp3
ZWJHTEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGZfdW5pZm9ybTR2
OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtNGl2KGxvY2F0aW9uLCAqd2ViR0xBcnJheSwg
ZWMpOworICAgICAgICAgICAgY29udGV4dC51bmlmb3JtNGl2KGxvY2F0aW9uLCAqd2ViR0xBcnJh
eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNjY2LDE2ICs2NjYsMTYgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rp
b25pKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFcKICAgICAK
ICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgotICAgICAgICBjb250ZXh0
LnVuaWZvcm0xaXYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgpLCBlYyk7Cisg
ICAgICAgIGNvbnRleHQudW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBhcnJheS5z
aXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTJ2OgotICAgICAgICBj
b250ZXh0LnVuaWZvcm0yaXYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgpLCBl
Yyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTJpdihsb2NhdGlvbiwgYXJyYXkuZGF0YSgpLCBh
cnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTN2OgotICAg
ICAgICBjb250ZXh0LnVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6
ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTNpdihsb2NhdGlvbiwgYXJyYXkuZGF0
YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGZfdW5pZm9ybTR2
OgotICAgICAgICBjb250ZXh0LnVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LmRhdGEoKSwgYXJy
YXkuc2l6ZSgpLCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybTRpdihsb2NhdGlvbiwgYXJy
YXkuZGF0YSgpLCBhcnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKQEAgLTcwMSwyMSArNzAxLDIxIEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUg
ZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNT
dGF0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAKICAg
ICBSZWZQdHI8RmxvYXQzMkFycmF5PiB3ZWJHTEFycmF5ID0gdG9GbG9hdDMyQXJyYXkoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMikpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
CiAgICAgaWYgKHdlYkdMQXJyYXkpIHsKICAgICAgICAgc3dpdGNoIChmKSB7CiAgICAgICAgIGNh
c2UgZl91bmlmb3JtTWF0cml4MmZ2OgotICAgICAgICAgICAgY29udGV4dC51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAgICAgICBj
b250ZXh0LnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZl91bmlmb3JtTWF0cml4M2Z2Ogot
ICAgICAgICAgICAgY29udGV4dC51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCB0cmFuc3Bvc2Us
ICp3ZWJHTEFycmF5LCBlYyk7CisgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgzZnYo
bG9jYXRpb24sIHRyYW5zcG9zZSwgKndlYkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgZl91bmlmb3JtTWF0cml4NGZ2OgotICAgICAgICAgICAgY29udGV4dC51bmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsICp3ZWJHTEFycmF5LCBlYyk7CisgICAg
ICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgKndl
YkdMQXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtNzI2LDE2
ICs3MjYsMTcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgoRGF0YUZ1
bmN0aW9uTWF0cml4VG9DYWxsIGYsIEpTQzo6RXhlY1N0YXQKICAgICAKICAgICBzd2l0Y2ggKGYp
IHsKICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDJmdjoKLSAgICAgICAgY29udGV4dC51bmlmb3Jt
TWF0cml4MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGFycmF5LmRhdGEoKSwgYXJyYXkuc2l6ZSgp
LCBlYyk7CisgICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgdHJhbnNw
b3NlLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgZl91bmlmb3JtTWF0cml4M2Z2OgotICAgICAgICBjb250ZXh0LnVuaWZvcm1NYXRyaXgzZnYo
bG9jYXRpb24sIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSgpLCBhcnJheS5zaXplKCksIGVjKTsKKyAg
ICAgICAgY29udGV4dC51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGFycmF5
LmRhdGEoKSwgYXJyYXkuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBmX3VuaWZv
cm1NYXRyaXg0ZnY6Ci0gICAgICAgIGNvbnRleHQudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwg
dHJhbnNwb3NlLCBhcnJheS5kYXRhKCksIGFycmF5LnNpemUoKSwgZWMpOworICAgICAgICBjb250
ZXh0LnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgYXJyYXkuZGF0YSgpLCBh
cnJheS5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDdjMDkxOTdjMzVmN2NjYTMwZWI4
ZTc3NzVhNWU1YTRjZDY5ZWE0ZTcuLmIxMGE3NGJjZDVhNWMyNmFhY2NkZTY4ZmFjY2U3MTE4N2Y5
MTFiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMTc1LDcgKzExNzUsNyBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEaQogICAgICAgICB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4
U3ViSW1hZ2UsIFNvdXJjZUhUTUxWaWRlb0VsZW1lbnQsIHRhcmdldCwgbGV2ZWwsIEdyYXBoaWNz
Q29udGV4dDNEOjpOT05FLCB2aWRlby0+dmlkZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQo
KSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0KSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSB2aWRlb0ZyYW1lVG9JbWFnZSh2aWRlbywg
SW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCksIGVjKTsKKyAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gdmlkZW9GcmFtZVRvSW1hZ2UodmlkZW8sIEltYWdlQnVmZmVyOjpmYXN0Q29weUlt
YWdlTW9kZSgpKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgdGV4U3Vi
SW1hZ2UyREltcGwodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgZm9ybWF0LCB0eXBl
LCBpbWFnZS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6Okh0bWxEb21WaWRlbywgbV91bnBhY2tG
bGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyYTVhYWIx
ZTIxZDEzZTA3ODAwNzdmNTZjOGYxNTE4M2Q1ODg5OTA1Li40NGFhZGM3ODZjM2UzNjY0ZDk0MmFh
NDY1N2VhZTY3NTAwYzc1YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RpbgogICAgICAgICB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJbWFn
ZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxWaWRlb0VsZW1lbnQsIHRhcmdldCwgbGV2ZWws
IGZvcm1hdCwgdmlkZW8tPnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCksIDAsIGZv
cm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFtZVRvSW1hZ2UodmlkZW8sIEltYWdlQnVm
ZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpLCBlYyk7CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLCBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUo
KSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIHRleFN1YkltYWdlMkRJ
bXBsKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGZvcm1hdCwgdHlwZSwgaW1hZ2Uu
Z2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tVmlkZW8sIG1fdW5wYWNrRmxpcFksIG1f
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBlZDAyYjdl
MTY1YmI3ZTE2Y2NjMzQ1NWRmODZmY2NkYTBiY2ZlNmJiLi45NmMyNTkwN2QyZTdhYTAzNTRlMGI1
ZTUzMGExN2VjYmRiNGRjYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtODQ1LDcgKzg0NSw3IEBA
IHVuc2lnbmVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpemVJbkJ5dGVzKEdDM0RlbnVt
IHR5cGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJl
KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFjdGl2
ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSwgRXhjZXB0aW9uQ29kZSYpCiAgICAgbV9jb250ZXh0
LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBz
aGFkZXIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjph
dHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hhZGVyKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmpl
Y3QoImF0dGFjaFNoYWRlciIsIHByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJhdHRh
Y2hTaGFkZXIiLCBzaGFkZXIpKQogICAgICAgICByZXR1cm47CkBAIC04NjksNyArODY5LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphdHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBXZWJHTFNoYWRlcioKICAgICBzaGFkZXItPm9uQXR0YWNoZWQoKTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEF0dHJpYkxv
Y2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVdlYkdMT2JqZWN0KCJiaW5kQXR0cmliTG9jYXRpb24iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtOTAzLDcgKzkwMyw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZl
cihHQzNEZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdl
dCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGRlbGV0ZWQ7CiAgICAgaWYgKCFj
aGVja09iamVjdFRvQmVCb3VuZCgiYmluZEJ1ZmZlciIsIGJ1ZmZlciwgZGVsZXRlZCkpCkBAIC05
MjgsNyArOTI4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlciwKICAgICAgICAgYnVmZmVyLT5z
ZXRUYXJnZXQodGFyZ2V0KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
aW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIs
IEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kRnJh
bWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCiB7CiAg
ICAgYm9vbCBkZWxldGVkOwogICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJpbmRGcmFt
ZWJ1ZmZlciIsIGJ1ZmZlciwgZGVsZXRlZCkpCkBAIC05NDYsNyArOTQ2LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBX
ZWJHTEZyYW1lYnVmZmUKICAgICBhcHBseVN0ZW5jaWxUZXN0KCk7CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdl
YkdMUmVuZGVyYnVmZmVyKiByZW5kZXJCdWZmZXIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
V2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlckJ1ZmZlcikKIHsKICAgICBib29sIGRlbGV0ZWQ7CiAg
ICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgiYmluZFJlbmRlcmJ1ZmZlciIsIHJlbmRlckJ1
ZmZlciwgZGVsZXRlZCkpCkBAIC05NjMsNyArOTYzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xSZW5kZXJi
dWYKICAgICAgICAgcmVuZGVyQnVmZmVyLT5zZXRIYXNFdmVyQmVlbkJvdW5kKCk7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0
LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFdlYkdMVGV4dHVy
ZSogdGV4dHVyZSkKIHsKICAgICBib29sIGRlbGV0ZWQ7CiAgICAgaWYgKCFjaGVja09iamVjdFRv
QmVCb3VuZCgiYmluZFRleHR1cmUiLCB0ZXh0dXJlLCBkZWxldGVkKSkKQEAgLTEwNDUsNyArMTA0
NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmxlbmRGdW5jU2VwYXJhdGUo
R0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSCiAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmNT
ZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9u
ZyBsb25nIHNpemUsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzaXplLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47CkBAIC0xMDc1LDcgKzEwNzUsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcg
c2l6ZSwgR0MzRAogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXIqIGRhdGEsIEdDM0RlbnVtIHVz
YWdlLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVm
ZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBHQzNEZW51bSB1c2Fn
ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47
CkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1
ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgRwogICAgIH0KIH0K
IAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEo
R0MzRGVudW0gdGFyZ2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRhdGEsIEdDM0RlbnVt
IHVzYWdlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIFJlZlB0cjxBcnJheUJ1ZmZlclZpCiAgICAg
fQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0
aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRhdGEo
R0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSkKIHsK
ICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0x
MTU1LDcgKzExNTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1
YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LAogICAgIH0KIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgbG9uZyBsb25nIG9mZnNldCwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhLCBFeGNl
cHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0
YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIFJlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+JiYgZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMjQ5LDcgKzEyNDksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQwog
ICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVy
KiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiY29tcGlsZVNoYWRlciIs
IHNoYWRlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NDUsNyArMTQ0NSw3IEBAIFJlZlB0cjxX
ZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlUmVuZGVy
YnVmZmVyKCkKICAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOwogfQogCi1SZWZQdHI8V2ViR0xT
aGFkZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0
eXBlLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTcwLDcg
KzE1NzAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlcHRoUmFuZ2UoR0Mz
RGZsb2F0IHpOZWFyLCBHQzNEZmxvYXQgekZhcikKICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uo
ek5lYXIsIHpGYXIpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFj
aFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2Vw
dGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXRhY2hTaGFkZXIo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hhZGVyKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImRldGFjaFNo
YWRlciIsIHByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZXRhY2hTaGFkZXIiLCBz
aGFkZXIpKQogICAgICAgICByZXR1cm47CkBAIC0xNTk2LDcgKzE1OTYsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogICAgIG1fY29udGV4
dC0+ZGlzYWJsZShjYXApOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShH
QzNEdWludCBpbmRleCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47CkBAIC0xOTM4LDcgKzE5MzgsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
RwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50
LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0Fy
cmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCiB7CiAg
ICAgaWYgKCF2YWxpZGF0ZURyYXdBcnJheXMoImRyYXdBcnJheXMiLCBtb2RlLCBmaXJzdCwgY291
bnQsIDApKQogICAgICAgICByZXR1cm47CkBAIC0xOTYxLDcgKzE5NjEsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBm
aXJzdCwgR0MzRHNpegogICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogfQogCi12b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6
ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUm
KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3RWxlbWVudHMoR0MzRGVudW0g
bW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0KQog
ewogICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gMDsKICAgICBpZiAoIXZhbGlkYXRlRHJhd0Vs
ZW1lbnRzKCJkcmF3RWxlbWVudHMiLCBtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBudW1FbGVt
ZW50cywgMCkpCkBAIC0yMDAzLDcgKzIwMDMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmVuYWJsZShHQzNEZW51bSBjYXApCiAgICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIw
MzIsNyArMjAzMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Zmx1c2goKQog
ICAgIG1fY29udGV4dC0+Zmx1c2goKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0
dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIq
IGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNo
bWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciogYnVm
ZmVyKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlRnJh
bWVidWZmZXJGdW5jUGFyYW1ldGVycygiZnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLCB0YXJnZXQs
IGF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMDY0LDcgKzIwNjQsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudQogICAgIGFwcGx5U3RlbmNpbFRlc3QoKTsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgV2ViR0xUZXh0
dXJlKiB0ZXh0dXJlLCBHQzNEaW50IGxldmVsLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSog
dGV4dHVyZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoImZyYW1lYnVmZmVyVGV4
dHVyZTJEIiwgdGFyZ2V0LCBhdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE0NSw3
ICsyMTQ1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZW5lcmF0ZU1pcG1h
cChHQzNEZW51bSB0YXJnZXQpCiAgICAgdGV4LT5nZW5lcmF0ZU1pcG1hcExldmVsSW5mbygpOwog
fQogCi1SZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBp
bmRleCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdl
YkdMT2JqZWN0KCJnZXRBY3RpdmVBdHRyaWIiLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yMTU4LDcgKzIxNTgsNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKgogICAg
IHJldHVybiBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5m
by5zaXplKTsKIH0KIAotUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50
IGluZGV4LCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBHQzNEdWludCBpbmRleCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRBY3RpdmVVbmlmb3JtIiwgcHJvZ3JhbSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE3NCw3ICsyMTc0LDcgQEAgUmVmUHRyPFdlYkdMQWN0
aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybShXZWJH
TFByb2dyYW0KICAgICByZXR1cm4gV2ViR0xBY3RpdmVJbmZvOjpjcmVhdGUoaW5mby5uYW1lLCBp
bmZvLnR5cGUsIGluZm8uc2l6ZSk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgVmVjdG9yPFJlZlB0
cjxXZWJHTFNoYWRlcj4+JiBzaGFkZXJPYmplY3RzLCBFeGNlcHRpb25Db2RlJikKK2Jvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSwgVmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+JiBzaGFkZXJPYmplY3RzKQogewog
ICAgIHNoYWRlck9iamVjdHMuY2xlYXIoKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRBdHRhY2hlZFNoYWRlcnMiLCBwcm9ncmFt
KSkKQEAgLTIyMDksNyArMjIwOSw3IEBAIEdDM0RpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0QXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zCiAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24ob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBu
YW1lKTsKIH0KIAotV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1
ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25D
b2RlJikKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQ
YXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSkKIHsKICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBA
IC0yMjU1LDcgKzIyNTUsNyBAQCBHQzNEZW51bSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRFcnJvcigpCiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKIH0KIAotV2ViR0xH
ZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0RlbnVtIHBuYW1lKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFByb2dyYW1QYXJh
bWV0ZXIiLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwpAQCAtMjI4
MiwxNCArMjI4MiwxNCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYQogICAgIH0KIH0KIAotU3Ry
aW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYpCitTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdl
dFByb2dyYW1JbmZvTG9nIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICByZXR1cm4gZW5zdXJlTm90TnVsbChtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKG9iamVj
dE9yWmVybyhwcm9ncmFtKSkpOwogfQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIHBuYW1lKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTIzNTQsNyArMjM1NCw3IEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0Mz
RGVudW0gdGFyZ2V0CiAgICAgfQogfQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEdDM0RlbnVt
IHBuYW1lLCBFeGNlcHRpb25Db2RlJikKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgR0MzRGVudW0g
cG5hbWUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVX
ZWJHTE9iamVjdCgiZ2V0U2hhZGVyUGFyYW1ldGVyIiwgc2hhZGVyKSkKICAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbygpOwpAQCAtMjM3NCwxNCArMjM3NCwxNCBAQCBXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBz
aGFkZXIsCiAgICAgfQogfQogCi1TdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJikKK1N0cmlu
ZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVy
KiBzaGFkZXIpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVXZWJHTE9iamVjdCgiZ2V0U2hhZGVySW5mb0xvZyIsIHNoYWRlcikpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5zdXJlTm90TnVsbChtX2NvbnRleHQtPmdldFNoYWRl
ckluZm9Mb2cob2JqZWN0T3JaZXJvKHNoYWRlcikpKTsKIH0KIAotUmVmUHRyPFdlYkdMU2hhZGVy
UHJlY2lzaW9uRm9ybWF0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoR0MzRGVudW0gc2hhZGVyVHlwZSwgR0MzRGVudW0gcHJlY2lzaW9uVHlwZSwg
RXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51bSBz
aGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNpb25UeXBlKQogewogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQxMiwxNCArMjQx
MiwxNCBAQCBSZWZQdHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbgogICAgIHJldHVybiBXZWJHTFNoYWRlclBy
ZWNpc2lvbkZvcm1hdDo6Y3JlYXRlKHJhbmdlWzBdLCByYW5nZVsxXSwgcHJlY2lzaW9uKTsKIH0K
IAotU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclNvdXJjZShXZWJH
TFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJikKK1N0cmluZyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqIHNoYWRlcikKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRT
aGFkZXJTb3VyY2UiLCBzaGFkZXIpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0
dXJuIGVuc3VyZU5vdE51bGwoc2hhZGVyLT5nZXRTb3VyY2UoKSk7CiB9CiAKLVdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwpAQCAtMjQ0Nyw3ICsyNDQ3LDcgQEAgV2ViR0xHZXRJ
bmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnUKICAgICB9CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIHVuaWZvcm1Mb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYpCitXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB1bmlmb3JtTG9jYXRpb24pCiB7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVj
dCgiZ2V0VW5pZm9ybSIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CkBAIC0yNTc0LDcgKzI1NzQsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0CiAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbygpOwogfQogCi1SZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xV
bmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2Nh
dGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRV
bmlmb3JtTG9jYXRpb24iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
NjEyLDcgKzI2MTIsNyBAQCBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVy
dGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYp
CitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmli
KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0yNzU5LDcg
KzI3NTksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmVXaWR0aChHQzNE
ZmxvYXQgd2lkdGgpCiAgICAgbV9jb250ZXh0LT5saW5lV2lkdGgod2lkdGgpOwogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxp
bmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJsaW5rUHJvZ3JhbSIsIHByb2dy
YW0pKQogICAgICAgICByZXR1cm47CkBAIC0yODE5LDcgKzI4MTksNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZs
b2F0IHVuaXRzKQogICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQg
eCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVt
IGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMsIEV4Y2VwdGlv
bkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0Rp
bnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjky
Nyw3ICsyOTI3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzY2lzc29yKEdD
M0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEcKICAgICBtX2NvbnRleHQtPnNj
aXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmpl
Y3QoInNoYWRlclNvdXJjZSIsIHNoYWRlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTMyNDksNyAr
MzI0OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiB9CiAKICNpZiBFTkFCTEUoVklERU8p
Ci1SZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpZGVvRnJhbWVUb0lt
YWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBCYWNraW5nU3RvcmVDb3B5IGJhY2tpbmdTdG9y
ZUNvcHksIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgQmFja2lu
Z1N0b3JlQ29weSBiYWNraW5nU3RvcmVDb3B5KQogewogICAgIEludFNpemUgc2l6ZSh2aWRlby0+
dmlkZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSk7CiAgICAgSW1hZ2VCdWZmZXIqIGJ1
ZiA9IG1fZ2VuZXJhdGVkSW1hZ2VDYWNoZS5pbWFnZUJ1ZmZlcihzaXplKTsKQEAgLTMyODgsNyAr
MzI4OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiAgICAgfQogCiAgICAgLy8gTm9ybWFs
IHB1cmUgU1cgcGF0aC4KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFtZVRvSW1h
Z2UodmlkZW8sIEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpLCBlYyk7CisgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLCBJbWFnZUJ1ZmZlcjo6
ZmFzdENvcHlJbWFnZU1vZGUoKSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIHRleEltYWdlMkRJbXBsKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQs
IHR5cGUsIGltYWdlLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6SHRtbERvbVZpZGVvLCBtX3Vu
cGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEsIGVjKTsKQEAgLTMzNDMsNyArMzM0
Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4UGFyYW1ldGVyaShHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHCiAgICAgdGV4UGFyYW1ldGVyKHRhcmdldCwg
cG5hbWUsIDAsIHBhcmFtLCBmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTFmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0Mz
RGZsb2F0IHgsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxv
YXQgeCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzM1Niw3ICszMzU2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTFmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIHYsIDEpKQogICAgICAgICByZXR1cm47CkBAIC0zMzY0
LDcgKzMzNjQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5p
Zm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSwgdi5kYXRhKCkpOwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBF
eGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAx
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM3Miw3ICszMzcyLDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHNpemUsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0x
aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgRXhjZXB0
aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaShjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwpA
QCAtMzM5MCw3ICszMzkwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtMWkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4
dC0+dW5pZm9ybTFpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBJbnQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlv
biwgdiwgMSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0MDcsNyArMzQwNyw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVu
aWZvcm0xaXYiLCBsb2NhdGlvbiwgdiwgc2l6ZSwgMSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0
MjMsNyArMzQyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFp
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51
bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplLCB2KTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVy
bjsKQEAgLTM0MzYsNyArMzQzNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybTJmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkmIHYpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJm
diIsIGxvY2F0aW9uLCB2LCAyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ0NCw3ICszNDQ0LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlv
bkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkg
c2l6ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIHNpemUsIDIpKQogICAg
ICAgICByZXR1cm47CkBAIC0zNDUyLDcgKzM0NTIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAv
IDIsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaShj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5
LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNE
aW50IHkpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24p
CiAgICAgICAgIHJldHVybjsKQEAgLTM0NjUsNyArMzQ2NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwg
eSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlv
bkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdikKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KCJ1bmlmb3JtMml2IiwgbG9jYXRpb24sIHYsIDIpKQogICAgICAgICByZXR1cm47CkBAIC0zNDcz
LDcgKzM0NzMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5p
Zm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUs
IEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
Mml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAy
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4MSw3ICszNDgxLDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHNpemUgLyAyLCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwg
R0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeikKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJikKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
M2Z2IiwgbG9jYXRpb24sIHYsIDMpKQogICAgICAgICByZXR1cm47CkBAIC0zNTAyLDcgKzM1MDIs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0
aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXpl
aSBzaXplKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgc2l6ZSwgMykpCiAg
ICAgICAgIHJldHVybjsKQEAgLTM1MTAsNyArMzUxMCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXpl
IC8gMywgdik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNp
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RpbnQgeiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdD
M0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHopCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTM1MjMsNyArMzUy
Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaShs
b2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSwgeik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMp
KQogICAgICAgICByZXR1cm47CkBAIC0zNTMxLDcgKzM1MzEsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwg
di5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0MzRGludCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9y
bTNpdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAzKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzUzOSw3
ICszNTM5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2NvbnRleHQtPnVuaWZv
cm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyAzLCB2KTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNE
ZmxvYXQgdywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9h
dCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47CkBA
IC0zNTUyLDcgKzM1NTIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0
LT51bmlmb3JtNGYobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHosIHcpOwogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5JiB2KQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00
ZnYiLCBsb2NhdGlvbiwgdiwgNCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1NjAsNyArMzU2MCw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxv
Y2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gNCwgdi5kYXRhKCkpOwogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRp
b25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCA0KSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzU2OCw3ICszNTY4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwKICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUg
LyA0LCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGko
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQg
eSwgR0MzRGludCB6LCBHQzNEaW50IHcsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJl
dHVybjsKQEAgLTM1ODEsNyArMzU4MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBt
X2NvbnRleHQtPnVuaWZvcm00aShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSwgeiwgdyk7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkmIHYsIEV4Y2VwdGlvbkNvZGUm
KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtNGl2IiwgbG9jYXRpb24sIHYsIDQpKQogICAgICAgICByZXR1cm47CkBAIC0zNTg5LDcgKzM1
ODksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2Vw
dGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2LCBzaXplLCA0KSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzU5Nyw0OSArMzU5Nyw0OSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6
ZSAvIDQsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1N
YXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYg
dikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9z
ZSwgdiwgNCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgy
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2UsIHYuZGF0
YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4
MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZs
b2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6ZSwgNCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUg
LyA0LCB0cmFuc3Bvc2UsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0
MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24s
IHRyYW5zcG9zZSwgdiwgOSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZv
cm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA5LCB0cmFuc3Bv
c2UsIHYuZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJv
b2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3Jt
TWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6ZSwgOSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHNpemUgLyA5LCB0cmFuc3Bvc2UsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9u
Q29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bv
c2UsIEZsb2F0MzJBcnJheSYgdikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTYpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8g
MTYsIHRyYW5zcG9zZSwgdi5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUs
IEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
TWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRl
cnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplLCAxNikp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHNpemUgLyAxNiwgdHJhbnNwb3NlLCB2KTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
RXhjZXB0aW9uQ29kZSYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dy
YW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogewogICAgIGJvb2wgZGVsZXRlZDsKICAgICBpZiAo
IWNoZWNrT2JqZWN0VG9CZUJvdW5kKCJ1c2VQcm9ncmFtIiwgcHJvZ3JhbSwgZGVsZXRlZCkpCkBA
IC0zNjYwLDcgKzM2NjAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVBy
b2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJgogICAgIH0KIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJ2YWxpZGF0
ZVByb2dyYW0iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzcyNyw3ICszNzI3LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogdiwgR0MKICAgICB2ZXJ0ZXhBdHRyaWJmdkltcGwoInZlcnRl
eEF0dHJpYjRmdiIsIGluZGV4LCB2LCBzaXplLCA0KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50
IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBz
dHJpZGUsIGxvbmcgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNE
aW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXpl
aSBzdHJpZGUsIGxvbmcgbG9uZyBvZmZzZXQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDk4MywxNSArNDk4MywxMyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldEJhY2tEcmF3QnVmZmVyKEdDM0RlbnVtIGJ1ZikK
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlQ3VycmVudEZyYW1lYnVm
ZmVyKCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpLCBl
Yyk7CisgICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCkKIHsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjOwogICAgIGF1dG8gdGV4dHVyZSA9IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVu
aXRdLnRleHR1cmUyREJpbmRpbmcuZ2V0KCk7Ci0gICAgYmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUsIGVjKTsKKyAgICBiaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSk7CiAgICAgaWYgKHRleHR1cmUgJiYgdGV4
dHVyZS0+bmVlZFRvVXNlQmxhY2tUZXh0dXJlKHRleHR1cmVFeHRlbnNpb25GbGFncygpKSkKICAg
ICAgICAgbV91bnJlbmRlcmFibGVUZXh0dXJlVW5pdHMuYWRkKG1fYWN0aXZlVGV4dHVyZVVuaXQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oCmluZGV4IDQ5MTM3MzBmNTNmNDgwMjY1ZTVlZDBlN2NkM2Y2ZjIzNjkx
M2M4YzAuLjU2ZjhiMTk5ZmE5ZTNmMTkyZmU3YTMwODQ2NWM5MzcwMTFlYzhiYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKQEAgLTEyNSwyNCArMTI1LDI0IEBAIHB1YmxpYzoKICAgICBpbnQgZHJhd2luZ0J1ZmZl
cldpZHRoKCkgY29uc3Q7CiAgICAgaW50IGRyYXdpbmdCdWZmZXJIZWlnaHQoKSBjb25zdDsKIAot
ICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCBhdHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiwgV2ViR0xTaGFkZXIqLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwg
R0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgYmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xG
cmFtZWJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIo
R0MzRGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIGJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlKiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKTsKKyAg
ICB2b2lkIGF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciopOworICAgIHZv
aWQgYmluZEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIEdDM0R1aW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdl
YkdMQnVmZmVyKik7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBX
ZWJHTEZyYW1lYnVmZmVyKik7CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRh
cmdldCwgV2ViR0xSZW5kZXJidWZmZXIqKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDM0RlbnVt
IHRhcmdldCwgV2ViR0xUZXh0dXJlKik7CiAgICAgdm9pZCBibGVuZENvbG9yKEdDM0RmbG9hdCBy
ZWQsIEdDM0RmbG9hdCBncmVlbiwgR0MzRGZsb2F0IGJsdWUsIEdDM0RmbG9hdCBhbHBoYSk7CiAg
ICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpOwogICAgIHZvaWQgYmxlbmRFcXVh
dGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSk7CiAgICAg
dm9pZCBibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3Rvcik7CiAgICAg
dm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwg
R0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKTsKIAotICAgIHZvaWQgYnVmZmVy
RGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNEZW51bSB1c2FnZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5
QnVmZmVyKiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0
YSwgR0MzRGVudW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGJ1ZmZlclN1YkRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBvZmZzZXQsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0YSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzaXplLCBHQzNEZW51bSB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgQXJyYXlCdWZmZXIqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZl
ckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRhdGEsIEdD
M0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBs
b25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSk7CisgICAgdm9pZCBidWZmZXJTdWJE
YXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwgUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4mJiBkYXRhKTsKIAogICAgIEdDM0RlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0Mz
RGVudW0gdGFyZ2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2sp
ID0gMDsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRlcHRoKEdD
M0RmbG9hdCk7CiAgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0MzRGludCk7CiAgICAgdm9pZCBjb2xv
ck1hc2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1
ZSwgR0MzRGJvb2xlYW4gYWxwaGEpOwotICAgIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRl
ciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIq
KTsKIAogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3JiBkYXRhKTsKICAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEp
OwpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZl
cj4gY3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBjcmVhdGVQ
cm9ncmFtKCk7CiAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBjcmVhdGVSZW5kZXJidWZm
ZXIoKTsKLSAgICBSZWZQdHI8V2ViR0xTaGFkZXI+IGNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBl
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPFdlYkdMU2hhZGVyPiBjcmVhdGVTaGFkZXIo
R0MzRGVudW0gdHlwZSk7CiAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgp
OwogCiAgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKQEAgLTE3Nyw0MyArMTc3LDQz
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcHRoRnVuYyhHQzNEZW51bSk7CiAgICAgdm9pZCBkZXB0
aE1hc2soR0MzRGJvb2xlYW4pOwogICAgIHZvaWQgZGVwdGhSYW5nZShHQzNEZmxvYXQgek5lYXIs
IEdDM0RmbG9hdCB6RmFyKTsKLSAgICB2b2lkIGRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBX
ZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihXZWJH
TFByb2dyYW0qLCBXZWJHTFNoYWRlciopOwogICAgIHZvaWQgZGlzYWJsZShHQzNEZW51bSBjYXAp
OwotICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4LCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCBkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQg
Zmlyc3QsIEdDM0RzaXplaSBjb3VudCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgZHJhd0Vs
ZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgbG9u
ZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KTsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0MzRGVudW0g
bW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KTsKKyAgICB2b2lkIGRyYXdFbGVt
ZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQpOwogCiAgICAgdm9pZCBlbmFibGUoR0MzRGVudW0gY2FwKTsKLSAgICB2b2lk
IGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCk7CiAgICAg
dm9pZCBmaW5pc2goKTsKICAgICB2b2lkIGZsdXNoKCk7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVt
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgV2ViR0xUZXh0dXJlKiwgR0MzRGludCBs
ZXZlbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZm
ZXJ0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKik7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1
cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRh
cmdldCwgV2ViR0xUZXh0dXJlKiwgR0MzRGludCBsZXZlbCk7CiAgICAgdm9pZCBmcm9udEZhY2Uo
R0MzRGVudW0gbW9kZSk7CiAgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQp
OwogCi0gICAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gZ2V0QWN0aXZlQXR0cmliKFdlYkdMUHJv
Z3JhbSosIEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUmVmUHRyPFdlYkdM
QWN0aXZlSW5mbz4gZ2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0qLCBHQzNEdWludCBpbmRl
eCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJvb2wgZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJv
Z3JhbSosIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiwg
R0MzRHVpbnQgaW5kZXgpOworICAgIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFjdGl2ZVVu
aWZvcm0oV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgaW5kZXgpOworICAgIGJvb2wgZ2V0QXR0YWNo
ZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSosIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiYpOwog
ICAgIEdDM0RpbnQgZ2V0QXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKLSAgICBXZWJHTEdldEluZm8gZ2V0QnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXZWJHTEdldEluZm8g
Z2V0QnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUpOwogICAg
IFJlZlB0cjxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOwog
ICAgIEdDM0RlbnVtIGdldEVycm9yKCk7CiAgICAgdmlydHVhbCBXZWJHTEV4dGVuc2lvbiogZ2V0
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogICAgIHZpcnR1YWwgV2ViR0xHZXRJ
bmZvIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwog
ICAgIHZpcnR1YWwgV2ViR0xHZXRJbmZvIGdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKLSAgICBXZWJHTEdldEluZm8gZ2V0UHJvZ3JhbVBhcmFtZXRlcihX
ZWJHTFByb2dyYW0qLCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmlu
ZyBnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
V2ViR0xHZXRJbmZvIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV2ViR0xHZXRJbmZvIGdldFNoYWRl
clBhcmFtZXRlcihXZWJHTFNoYWRlciosIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgUmVmUHRyPFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0PiBnZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoR0MzRGVudW0gc2hhZGVyVHlwZSwgR0MzRGVudW0gcHJlY2lzaW9uVHlwZSwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgV2ViR0xHZXRJbmZvIGdldFByb2dyYW1QYXJhbWV0ZXIo
V2ViR0xQcm9ncmFtKiwgR0MzRGVudW0gcG5hbWUpOworICAgIFN0cmluZyBnZXRQcm9ncmFtSW5m
b0xvZyhXZWJHTFByb2dyYW0qKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUpOworICAgIFdlYkdMR2V0SW5m
byBnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqLCBHQzNEZW51bSBwbmFtZSk7CisgICAg
U3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqKTsKKyAgICBSZWZQdHI8V2ViR0xT
aGFkZXJQcmVjaXNpb25Gb3JtYXQ+IGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51bSBz
aGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNpb25UeXBlKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVy
U291cmNlKFdlYkdMU2hhZGVyKik7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXRTdXBw
b3J0ZWRFeHRlbnNpb25zKCkgPSAwOwotICAgIFdlYkdMR2V0SW5mbyBnZXRUZXhQYXJhbWV0ZXIo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdl
YkdMR2V0SW5mbyBnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlv
bj4gZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBXZWJHTEdldEluZm8gZ2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGlu
ZGV4LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdlYkdMR2V0SW5mbyBn
ZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSk7CisgICAgV2Vi
R0xHZXRJbmZvIGdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qKTsKKyAgICBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IGdldFVuaWZvcm1Mb2Nh
dGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcmKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0
VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSk7CiAgICAgbG9uZyBs
b25nIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUp
OwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBtb2Rl
KSA9IDA7CkBAIC0yMjcsMTUgKzIyNywxNSBAQCBwdWJsaWM6CiAgICAgR0MzRGJvb2xlYW4gaXNU
ZXh0dXJlKFdlYkdMVGV4dHVyZSopOwogCiAgICAgdm9pZCBsaW5lV2lkdGgoR0MzRGZsb2F0KTsK
LSAgICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSopOwogICAgIHZvaWQgcGl4ZWxTdG9yZWko
R0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pOwogICAgIHZvaWQgcG9seWdvbk9mZnNldChH
QzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpOwotICAgIHZvaWQgcmVhZFBpeGVscyhH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMpOwogICAgIHZvaWQgcmVsZWFzZVNo
YWRlckNvbXBpbGVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQzNEZmxvYXQg
dmFsdWUsIEdDM0Rib29sZWFuIGludmVydCk7CiAgICAgdm9pZCBzY2lzc29yKEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwotICAgIHZvaWQg
c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgc2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQg
bWFzayk7CiAgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0Rl
bnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsKICAgICB2b2lkIHN0ZW5jaWxN
YXNrKEdDM0R1aW50KTsKQEAgLTI3NCwzOSArMjc0LDM5IEBAIHB1YmxpYzoKICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBIVE1MVmlkZW9FbGVtZW50KiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICNlbmRpZgogCi0gICAgdm9pZCB1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5p
Zm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9p
ZCB1bmlmb3JtMWkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50IHgsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMWl2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyQXJyYXkmIHYs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgdW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCB4LCBH
QzNEaW50IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0yaXYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwg
R0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtM2YoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1
bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNE
c2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zaShjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtM2l2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdywgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEZsb2F0MzJBcnJheSYgdiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5pZm9y
bTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVp
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBJbnQzMkFycmF5JiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3Jt
NGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkmIHZhbHVl
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVl
LCBHQzNEc2l6ZWksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0
MzJBcnJheSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
M0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRy
YW5zcG9zZSwgRmxvYXQzMkFycmF5JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpLCBFeGNlcHRpb25Db2RlJik7
Ci0KLSAgICB2b2lkIHVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHVuaWZvcm0xZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9h
dCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBG
bG9hdDMyQXJyYXkmIHYpOworICAgIHZvaWQgdW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm0xaShj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RpbnQgeCk7CisgICAgdm9pZCB1bmlmb3Jt
MWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJBcnJheSYgdik7CisgICAgdm9p
ZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0Mz
RHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSk7CisgICAgdm9pZCB1bmlmb3JtMmZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5JiB2KTsKKyAgICB2b2lkIHVuaWZvcm0y
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSk7
CisgICAgdm9pZCB1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEaW50
IHgsIEdDM0RpbnQgeSk7CisgICAgdm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgSW50MzJBcnJheSYgdik7CisgICAgdm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZv
cm0zZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQg
eSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEZsb2F0MzJBcnJheSYgdik7CisgICAgdm9pZCB1bmlmb3JtM2Z2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkpOworICAgIHZvaWQg
dW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RpbnQgeik7CisgICAgdm9pZCB1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgSW50MzJBcnJheSYgdik7CisgICAgdm9pZCB1bmlmb3JtM2l2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZv
cm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQg
eSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsKKyAgICB2b2lkIHVuaWZvcm00ZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyQXJyYXkmIHYpOworICAgIHZvaWQgdW5pZm9y
bTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCogdiwgR0MzRHNpemVp
KTsKKyAgICB2b2lkIHVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rp
bnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdyk7CisgICAgdm9pZCB1bmlmb3Jt
NGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJBcnJheSYgdik7CisgICAgdm9p
ZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGludCogdiwgR0Mz
RHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFsdWUpOworICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Ri
b29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpKTsKKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSYgdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwg
R0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0
MzJBcnJheSYgdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiosIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwg
R0MzRHNpemVpKTsKKworICAgIHZvaWQgdXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qKTsKKyAgICB2
b2lkIHZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qKTsKIAogICAgIHZvaWQgdmVydGV4QXR0
cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4KTsKICAgICB2b2lkIHZlcnRleEF0dHJp
YjFmdihHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5JiB2YWx1ZXMpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwg
RmxvYXQzMkFycmF5JiB2YWx1ZXMpOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcywgR0MzRHNpemVpIHNpemUpOwogICAgIHZvaWQgdmVy
dGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51bSB0
eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEc2l6ZWkgc3RyaWRlLCBsb25nIGxvbmcgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgICAgIEdDM0RzaXplaSBzdHJpZGUsIGxvbmcgbG9uZyBvZmZzZXQpOwogCiAgICAgdm9pZCB2
aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KTsKIApAQCAtNDI5LDcgKzQyOSw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SW1h
Z2U+IGRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGlu
dCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgUmVmUHRyPElt
YWdlPiB2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgQmFja2luZ1N0b3JlQ29w
eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxJbWFnZT4gdmlkZW9GcmFtZVRvSW1hZ2Uo
SFRNTFZpZGVvRWxlbWVudCosIEJhY2tpbmdTdG9yZUNvcHkpOwogI2VuZGlmCiAKICAgICBXZWJH
TFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbGFnIHRleHR1cmVFeHRlbnNpb25GbGFncygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmlkbAppbmRleCBhNzVhMjcyZTExYzA3ZTEzMmM3YTE4ZTgzNGY5NGE4
Nzc0ZmIxYjg5Li5iNTIxNGFlNjYzZTEzMjhmOTJiOWY2ZjFhZmNkN2E3MDgzNzQ5NDNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmlkbApAQCAtNDcyLDIzICs0NzIsMjMgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQg
ZmxvYXQgR0xjbGFtcGY7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEdMc2l6ZWkgZHJhd2luZ0J1
ZmZlcldpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHTHNpemVpIGRyYXdpbmdCdWZmZXJI
ZWlnaHQ7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYWN0aXZlVGV4dHVy
ZShHTGVudW0gdGV4dHVyZSk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGF0
dGFjaFNoYWRlcihXZWJHTFByb2dyYW0/IHByb2dyYW0sIFdlYkdMU2hhZGVyPyBzaGFkZXIpOwot
ICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oV2Vi
R0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIERPTVN0cmluZyBuYW1lKTsKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBX
ZWJHTEJ1ZmZlcj8gYnVmZmVyKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
YmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXI/IGZyYW1lYnVm
ZmVyKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmluZFJlbmRlcmJ1ZmZl
cihHTGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmluZFRleHR1cmUoR0xlbnVtIHRhcmdldCwg
V2ViR0xUZXh0dXJlPyB0ZXh0dXJlKTsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0xlbnVtIHRl
eHR1cmUpOworICAgIHZvaWQgYXR0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgV2Vi
R0xTaGFkZXI/IHNoYWRlcik7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9n
cmFtPyBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIERPTVN0cmluZyBuYW1lKTsKKyAgICB2b2lkIGJp
bmRCdWZmZXIoR0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXI/IGJ1ZmZlcik7CisgICAgdm9pZCBi
aW5kRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlcj8gZnJhbWVidWZm
ZXIpOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRl
cmJ1ZmZlcj8gcmVuZGVyYnVmZmVyKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdMZW51bSB0YXJn
ZXQsIFdlYkdMVGV4dHVyZT8gdGV4dHVyZSk7CiAgICAgdm9pZCBibGVuZENvbG9yKEdMY2xhbXBm
IHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKICAg
ICB2b2lkIGJsZW5kRXF1YXRpb24oR0xlbnVtIG1vZGUpOwogICAgIHZvaWQgYmxlbmRFcXVhdGlv
blNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKTsKICAgICB2b2lkIGJs
ZW5kRnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOwogICAgIHZvaWQgYmxlbmRG
dW5jU2VwYXJhdGUoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhh
LCBHTGVudW0gZHN0QWxwaGEpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBi
dWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyPyBkYXRhLCBHTGVudW0gdXNhZ2Up
OwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBidWZmZXJEYXRhKEdMZW51bSB0
YXJnZXQsIEFycmF5QnVmZmVyVmlldz8gZGF0YSwgR0xlbnVtIHVzYWdlKTsKLSAgICBbTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBHTHNpemVp
cHRyIHNpemUsIEdMZW51bSB1c2FnZSk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBBcnJheUJ1
ZmZlcj8gZGF0YSk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGJ1ZmZlclN1
YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBBcnJheUJ1ZmZlclZpZXc/IGRh
dGEpOworICAgIHZvaWQgYnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlcj8gZGF0
YSwgR0xlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgQXJy
YXlCdWZmZXJWaWV3PyBkYXRhLCBHTGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyRGF0YShH
TGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIEdMZW51bSB1c2FnZSk7CisgICAgdm9pZCBi
dWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgQXJyYXlCdWZmZXI/
IGRhdGEpOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBv
ZmZzZXQsIEFycmF5QnVmZmVyVmlldz8gZGF0YSk7CiAKICAgICBHTGVudW0gY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHTGVudW0gdGFyZ2V0KTsKICAgICB2b2lkIGNsZWFyKEdMYml0ZmllbGQgbWFz
ayk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB0eXBlZGVmIHVucmVzdHJpY3RlZCBmbG9hdCBHTGNs
YW1wZjsKICAgICB2b2lkIGNsZWFyRGVwdGgoR0xjbGFtcGYgZGVwdGgpOwogICAgIHZvaWQgY2xl
YXJTdGVuY2lsKEdMaW50IHMpOwogICAgIHZvaWQgY29sb3JNYXNrKEdMYm9vbGVhbiByZWQsIEdM
Ym9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7Ci0gICAgW01h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXI/IHNo
YWRlcik7CisgICAgdm9pZCBjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyPyBzaGFkZXIpOwogCiAg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKICAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LAotICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICAgICAgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKICAg
ICAKICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKQEAgLTUx
MCw3ICs1MTAsNyBAQCB0eXBlZGVmIHVucmVzdHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKICAgICBX
ZWJHTEZyYW1lYnVmZmVyIGNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgV2ViR0xQcm9ncmFtIGNy
ZWF0ZVByb2dyYW0oKTsKICAgICBXZWJHTFJlbmRlcmJ1ZmZlciBjcmVhdGVSZW5kZXJidWZmZXIo
KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIFdlYkdMU2hhZGVyIGNyZWF0ZVNoYWRl
cihHTGVudW0gdHlwZSk7CisgICAgV2ViR0xTaGFkZXIgY3JlYXRlU2hhZGVyKEdMZW51bSB0eXBl
KTsKICAgICBXZWJHTFRleHR1cmUgY3JlYXRlVGV4dHVyZSgpOwogCiAgICAgdm9pZCBjdWxsRmFj
ZShHTGVudW0gbW9kZSk7CkBAIC01MjUsMjMgKzUyNSwyMyBAQCB0eXBlZGVmIHVucmVzdHJpY3Rl
ZCBmbG9hdCBHTGNsYW1wZjsKICAgICB2b2lkIGRlcHRoRnVuYyhHTGVudW0gZnVuYyk7CiAgICAg
dm9pZCBkZXB0aE1hc2soR0xib29sZWFuIGZsYWcpOwogICAgIHZvaWQgZGVwdGhSYW5nZShHTGNs
YW1wZiB6TmVhciwgR0xjbGFtcGYgekZhcik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9u
XSB2b2lkIGRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0/IHByb2dyYW0sIFdlYkdMU2hhZGVyPyBz
aGFkZXIpOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgV2Vi
R0xTaGFkZXI/IHNoYWRlcik7CiAgICAgdm9pZCBkaXNhYmxlKEdMZW51bSBjYXApOwotICAgIFtN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1
aW50IGluZGV4KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZHJhd0FycmF5
cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwotICAgIFtNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkg
Y291bnQsIEdMZW51bSB0eXBlLCBHTGludHB0ciBvZmZzZXQpOworICAgIHZvaWQgZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KEdMdWludCBpbmRleCk7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdMZW51
bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7CisgICAgdm9pZCBkcmF3RWxlbWVu
dHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBHTGludHB0ciBvZmZz
ZXQpOwogCiAgICAgdm9pZCBlbmFibGUoR0xlbnVtIGNhcCk7Ci0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uXSB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMdWludCBpbmRleCk7Cisg
ICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpOwogICAgIHZvaWQg
ZmluaXNoKCk7CiAgICAgdm9pZCBmbHVzaCgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
bl0gdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0
YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXI/IHJl
bmRlcmJ1ZmZlcik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4
dGFyZ2V0LCBXZWJHTFRleHR1cmU/IHRleHR1cmUsIEdMaW50IGxldmVsKTsKKyAgICB2b2lkIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBH
TGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlcj8gcmVuZGVyYnVmZmVy
KTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsIEdMZW51bSBh
dHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBXZWJHTFRleHR1cmU/IHRleHR1cmUsIEdMaW50
IGxldmVsKTsKICAgICB2b2lkIGZyb250RmFjZShHTGVudW0gbW9kZSk7CiAgICAgdm9pZCBnZW5l
cmF0ZU1pcG1hcChHTGVudW0gdGFyZ2V0KTsKICAgICAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIFdlYkdMQWN0aXZlSW5mbyBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtPyBwcm9n
cmFtLCBHTHVpbnQgaW5kZXgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gV2ViR0xB
Y3RpdmVJbmZvIGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBHTHVpbnQg
aW5kZXgpOworICAgIFdlYkdMQWN0aXZlSW5mbyBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFt
PyBwcm9ncmFtLCBHTHVpbnQgaW5kZXgpOworICAgIFdlYkdMQWN0aXZlSW5mbyBnZXRBY3RpdmVV
bmlmb3JtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSwgR0x1aW50IGluZGV4KTsKIAogICAgIFtDdXN0
b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhXZWJH
TFByb2dyYW0/IHByb2dyYW0pOwogCkBAIC01NTksMTUgKzU1OSwxNSBAQCB0eXBlZGVmIHVucmVz
dHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbl0gYW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHTGVudW0gdGFyZ2V0
LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lKTsKICAgICBbQ3VzdG9tLCBNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gYW55IGdldFBhcmFtZXRlcihHTGVudW0gcG5hbWUpOwogICAgIFtD
dXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhbnkgZ2V0UHJvZ3JhbVBhcmFtZXRlcihX
ZWJHTFByb2dyYW0/IHByb2dyYW0sIEdMZW51bSBwbmFtZSk7Ci0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBET01TdHJpbmc/IGdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbT8gcHJv
Z3JhbSk7CisgICAgRE9NU3RyaW5nPyBnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0/IHBy
b2dyYW0pOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhbnkgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSk7CiAgICAgW0N1
c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGFueSBnZXRTaGFkZXJQYXJhbWV0ZXIoV2Vi
R0xTaGFkZXI/IHNoYWRlciwgR0xlbnVtIHBuYW1lKTsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gRE9NU3RyaW5nPyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyPyBzaGFkZXIp
OworICAgIERPTVN0cmluZz8gZ2V0U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRlcj8gc2hhZGVyKTsK
IAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJl
Y2lzaW9udHlwZSk7CisgICAgV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQgZ2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSk7CiAK
LSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIERPTVN0cmluZz8gZ2V0U2hhZGVyU291cmNl
KFdlYkdMU2hhZGVyPyBzaGFkZXIpOworICAgIERPTVN0cmluZz8gZ2V0U2hhZGVyU291cmNlKFdl
YkdMU2hhZGVyPyBzaGFkZXIpOwogCiAgICAgW0N1c3RvbV0gc2VxdWVuY2U8RE9NU3RyaW5nPiBn
ZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CiAKQEAgLTU3NSw3ICs1NzUsNyBAQCB0eXBlZGVmIHVu
cmVzdHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKIAogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBhbnkgZ2V0VW5pZm9ybShXZWJHTFByb2dyYW0/IHByb2dyYW0sIFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPyBsb2NhdGlvbik7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25d
IFdlYkdMVW5pZm9ybUxvY2F0aW9uIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0/IHBy
b2dyYW0sIERPTVN0cmluZyBuYW1lKTsKKyAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBnZXRVbmlm
b3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtPyBwcm9ncmFtLCBET01TdHJpbmcgbmFtZSk7CiAKICAg
ICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYW55IGdldFZlcnRleEF0dHJpYihH
THVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSk7CiAKQEAgLTU5MSwxNyArNTkxLDE3IEBAIHR5cGVk
ZWYgdW5yZXN0cmljdGVkIGZsb2F0IEdMY2xhbXBmOwogICAgIEdMYm9vbGVhbiBpc1NoYWRlcihX
ZWJHTFNoYWRlcj8gc2hhZGVyKTsKICAgICBHTGJvb2xlYW4gaXNUZXh0dXJlKFdlYkdMVGV4dHVy
ZT8gdGV4dHVyZSk7CiAgICAgdm9pZCBsaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCk7Ci0gICAgW01h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJv
Z3JhbSk7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShXZWJHTFByb2dyYW0/IHByb2dyYW0pOwogICAg
IHZvaWQgcGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgICAgdm9pZCBw
b2x5Z29uT2Zmc2V0KEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKIAotICAgIFtNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCByZWFkUGl4ZWxzKEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
QXJyYXlCdWZmZXJWaWV3IHBpeGVscyk7CisgICAgdm9pZCByZWFkUGl4ZWxzKEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3IHBpeGVscyk7CiAgICAgCiAgICAgdm9pZCByZWxlYXNl
U2hhZGVyQ29tcGlsZXIoKTsKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CiAgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGlu
dmVydCk7CiAgICAgdm9pZCBzY2lzc29yKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgc2hh
ZGVyU291cmNlKFdlYkdMU2hhZGVyPyBzaGFkZXIsIERPTVN0cmluZyBzdHJpbmcpOworICAgIHZv
aWQgc2hhZGVyU291cmNlKFdlYkdMU2hhZGVyPyBzaGFkZXIsIERPTVN0cmluZyBzdHJpbmcpOwog
ICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2sp
OwogICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMs
IEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogICAgIHZvaWQgc3RlbmNpbE1hc2soR0x1aW50IG1h
c2spOwpAQCAtNjQwLDI5ICs2NDAsMjkgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxvYXQgR0xj
bGFtcGY7CiAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEhUTUxWaWRlb0VsZW1lbnQ/IHZp
ZGVvKTsKICNlbmRpZgogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZv
cm0xZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxvYXQgeCk7CisgICAgdm9p
ZCB1bmlmb3JtMWYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGZsb2F0IHgpOwog
ICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0xZnYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkgdik7Ci0gICAgW01heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0xaShXZWJHTFVuaWZvcm1Mb2NhdGlvbj8g
bG9jYXRpb24sIEdMaW50IHgpOworICAgIHZvaWQgdW5pZm9ybTFpKFdlYkdMVW5pZm9ybUxvY2F0
aW9uPyBsb2NhdGlvbiwgR0xpbnQgeCk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHZvaWQgdW5pZm9ybTFpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIElu
dDMyQXJyYXkgdik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0y
ZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsK
KyAgICB2b2lkIHVuaWZvcm0yZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxv
YXQgeCwgR0xmbG9hdCB5KTsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
dm9pZCB1bmlmb3JtMmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgRmxvYXQzMkFy
cmF5IHYpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtMmkoV2Vi
R0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KTsKKyAgICB2b2lk
IHVuaWZvcm0yaShXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMaW50IHgsIEdMaW50
IHkpOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0y
aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBJbnQzMkFycmF5IHYpOwotICAgIFtN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtM2YoV2ViR0xVbmlmb3JtTG9jYXRp
b24/IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKKyAgICB2b2lk
IHVuaWZvcm0zZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xm
bG9hdCB5LCBHTGZsb2F0IHopOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9u
XSB2b2lkIHVuaWZvcm0zZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBGbG9hdDMy
QXJyYXkgdik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm0zaShX
ZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHop
OworICAgIHZvaWQgdW5pZm9ybTNpKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xp
bnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHZvaWQgdW5pZm9ybTNpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIElu
dDMyQXJyYXkgdik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm00
ZihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBH
TGZsb2F0IHosIEdMZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGYoV2ViR0xVbmlmb3JtTG9j
YXRpb24/IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHcpOwogICAgIFtDdXN0b20sIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm00
ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24/IGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkgdik7Ci0gICAg
W01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHVuaWZvcm00aShXZWJHTFVuaWZvcm1Mb2Nh
dGlvbj8gbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOworICAg
IHZvaWQgdW5pZm9ybTRpKFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CiAgICAgW0N1c3RvbSwgTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgdW5pZm9ybTRpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbj8gbG9jYXRpb24s
IEludDMyQXJyYXkgdik7CiAKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
dm9pZCB1bmlmb3JtTWF0cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5IGFycmF5KTsKICAgICBbQ3VzdG9tLCBNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtTWF0cml4M2Z2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uPyBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5IGFycmF5
KTsKICAgICBbQ3VzdG9tLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uPyBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkFycmF5IGFycmF5KTsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
dm9pZCB1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7Ci0gICAgW01heVRocm93TGVn
YWN5RXhjZXB0aW9uXSB2b2lkIHZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0/IHByb2dyYW0p
OworICAgIHZvaWQgdXNlUHJvZ3JhbShXZWJHTFByb2dyYW0/IHByb2dyYW0pOworICAgIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbT8gcHJvZ3JhbSk7CiAKICAgICB2b2lkIHZlcnRl
eEF0dHJpYjFmKEdMdWludCBpbmR4LCBHTGZsb2F0IHgpOwogICAgIFtDdXN0b21dIHZvaWQgdmVy
dGV4QXR0cmliMWZ2KEdMdWludCBpbmR4LCBGbG9hdDMyQXJyYXkgdmFsdWVzKTsKQEAgLTY3Miw3
ICs2NzIsNyBAQCB0eXBlZGVmIHVucmVzdHJpY3RlZCBmbG9hdCBHTGNsYW1wZjsKICAgICBbQ3Vz
dG9tXSB2b2lkIHZlcnRleEF0dHJpYjNmdihHTHVpbnQgaW5keCwgRmxvYXQzMkFycmF5IHZhbHVl
cyk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHTHVpbnQgaW5keCwgR0xmbG9hdCB4LCBHTGZs
b2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKICAgICBbQ3VzdG9tXSB2b2lkIHZlcnRleEF0
dHJpYjRmdihHTHVpbnQgaW5keCwgRmxvYXQzMkFycmF5IHZhbHVlcyk7Ci0gICAgW01heVRocm93
TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0x1aW50IGluZHgsIEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJp
ZGUsIEdMaW50cHRyIG9mZnNldCk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdWlu
dCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdM
c2l6ZWkgc3RyaWRlLCBHTGludHB0ciBvZmZzZXQpOwogCiAgICAgdm9pZCB2aWV3cG9ydChHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>