<?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>261657</bug_id>
          
          <creation_ts>2023-09-17 13:27:34 -0700</creation_ts>
          <short_desc>REGRESSION(268000@main): Seems to have regressed MotionMark Multiply</short_desc>
          <delta_ts>2023-09-17 13:34:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>261545</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1977937</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-09-17 13:27:34 -0700</bug_when>
    <thetext>https://commits.webkit.org/268000@main introduced a regression:
Seems to have regressed MotionMark Multiply

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977939</commentid>
    <comment_count>1</comment_count>
      <attachid>467728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-09-17 13:27:42 -0700</bug_when>
    <thetext>Created attachment 467728
REVERT of 268000@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977940</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-09-17 13:33:18 -0700</bug_when>
    <thetext>Committed 268068@main (ba61b7014a49): &lt;https://commits.webkit.org/268068@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 467728.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977941</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-09-17 13:34:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/115629401&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467728</attachid>
            <date>2023-09-17 13:27:42 -0700</date>
            <delta_ts>2023-09-17 13:33:20 -0700</delta_ts>
            <desc>REVERT of 268000@main</desc>
            <filename>bug-261657-20230917202741.patch</filename>
            <type>text/plain</type>
            <size>89510</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAyNDlkZmFkZmViMmUyOWE0Zjk5YTRmNzIxOGI1MGI0NjRmOTUwNzBmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBTdW4sIDE3IFNlcCAyMDIzIDIwOjI3OjM5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI2ODAwMEBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2MTY1NwoKU2VlbXMgdG8gaGF2ZSByZWdyZXNzZWQgTW90aW9u
TWFyayBNdWx0aXBseQoKUmV2ZXJ0ZWQgY2hhbmdlc2V0OgoKIlN0b3JlIGxlc3MgcmF3IHBvaW50
ZXJzIGluIGNvbnRhaW5lcnMgaW4gU291cmNlL3JlbmRlcmluZy8iCmh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjE1NDUKaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcv
MjY4MDAwQG1haW4KLS0tCiBTb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaE1hcC5oICAgICAgICAgICAg
ICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCAgICAgICAgICAg
ICAgICB8ICAxNCArLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAgICAg
ICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5j
cHAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNw
cCB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAg
IHwgMjExICsrKysrKysrKystLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggICAgICAgIHwgIDE2ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcCAgfCAgMzIgKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCAgICAgICAgfCAgMzYgKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmggICAgICAgICAgfCAgIDYgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAgICB8ICAgNiArLQogLi4uL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRh
aW5lci5jcHAgICAgIHwgIDMyICstLQogLi4uL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRh
aW5lci5oICAgICAgIHwgIDEwICstCiAuLi4vcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93
LmNwcCAgICAgICAgfCAxMDkgKysrKy0tLS0tCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhZ21lbnRlZEZsb3cuaCAgfCAgMjggKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcCAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcCAgICAgIHwgICA4ICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcCAgfCAgMTQgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25S
YW5nZURhdGEuY3BwICB8ICAgNCArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcCAgIHwgICAyICstCiAyMSBmaWxlcyBjaGFuZ2VkLCAyODYgaW5zZXJ0aW9ucygr
KSwgMjU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNo
TWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaE1hcC5oCmluZGV4IDBmZmY1YmYzMjYxNS4u
NWY1MzY5ZWUxNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaE1hcC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoTWFwLmgKQEAgLTI1Myw3ICsyNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX21hcC50YWtlKCprZXlJbXBsKTsKICAgICB9CiAKLSAgICB0
eXBlbmFtZSBWYWx1ZVRyYWl0czo6UGVla1R5cGUgZ2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29u
c3QKKyAgICB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6UGVla1R5cGUgZ2V0KGNvbnN0IEtleVR5cGUm
IGtleSkKICAgICB7CiAgICAgICAgIGluY3JlYXNlT3BlcmF0aW9uQ291bnRTaW5jZUxhc3RDbGVh
bnVwKCk7CiAgICAgICAgIGF1dG8qIGtleUltcGwgPSBrZXlJbXBsSWZFeGlzdHMoa2V5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBiODUyYTc4MWU2OWIuLmQ3YzczY2ZiODE0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMTY4NywxMCArMTY4NywxMCBAQCBzdGF0aWMgYm9vbCBsYXlv
dXRPdmVyZmxvd1JlY3RDb250YWluc0FsbERlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckJveCYgcmVu
ZGVyQm94KQogCiAgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBwb3NpdGlvbjpmaXhlZCBpbnNpZGUg
b2YgdXMsIGdhbWUgb3Zlci4KICAgICBpZiAoYXV0byogdmlld1Bvc2l0aW9uZWRPYmplY3RzID0g
cmVuZGVyQm94LnZpZXcoKS5wb3NpdGlvbmVkT2JqZWN0cygpKSB7Ci0gICAgICAgIGZvciAoYXV0
byYgcG9zaXRpb25lZEJveCA6ICp2aWV3UG9zaXRpb25lZE9iamVjdHMpIHsKLSAgICAgICAgICAg
IGlmICgmcG9zaXRpb25lZEJveCA9PSAmcmVuZGVyQm94KQorICAgICAgICBmb3IgKGF1dG8qIHBv
c2l0aW9uZWRCb3ggOiAqdmlld1Bvc2l0aW9uZWRPYmplY3RzKSB7CisgICAgICAgICAgICBpZiAo
cG9zaXRpb25lZEJveCA9PSAmcmVuZGVyQm94KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgaWYgKHBvc2l0aW9uZWRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSAmJiByZW5k
ZXJCb3guZWxlbWVudCgpLT5jb250YWlucyhwb3NpdGlvbmVkQm94LmVsZW1lbnQoKSkpCisgICAg
ICAgICAgICBpZiAocG9zaXRpb25lZEJveC0+aXNGaXhlZFBvc2l0aW9uZWQoKSAmJiByZW5kZXJC
b3guZWxlbWVudCgpLT5jb250YWlucyhwb3NpdGlvbmVkQm94LT5lbGVtZW50KCkpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MDMsMTAgKzE3
MDMsMTAgQEAgc3RhdGljIGJvb2wgbGF5b3V0T3ZlcmZsb3dSZWN0Q29udGFpbnNBbGxEZXNjZW5k
YW50cyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCkKICAgICAvLyBUaGlzIHJlbmRlcmVyIG1h
eSBoYXZlIHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgd2hvc2UgY29udGFpbmluZyBibG9jayBpcyBz
b21lIGFuY2VzdG9yLgogICAgIGlmIChhdXRvKiBjb250YWluaW5nQmxvY2sgPSBSZW5kZXJPYmpl
Y3Q6OmNvbnRhaW5pbmdCbG9ja0ZvclBvc2l0aW9uVHlwZShQb3NpdGlvblR5cGU6OkFic29sdXRl
LCByZW5kZXJCb3gpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwb3NpdGlvbmVkT2JqZWN0cyA9IGNv
bnRhaW5pbmdCbG9jay0+cG9zaXRpb25lZE9iamVjdHMoKSkgewotICAgICAgICAgICAgZm9yIChh
dXRvJiBwb3NpdGlvbmVkQm94IDogKnBvc2l0aW9uZWRPYmplY3RzKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCZwb3NpdGlvbmVkQm94ID09ICZyZW5kZXJCb3gpCisgICAgICAgICAgICBmb3IgKGF1
dG8qIHBvc2l0aW9uZWRCb3ggOiAqcG9zaXRpb25lZE9iamVjdHMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAocG9zaXRpb25lZEJveCA9PSAmcmVuZGVyQm94KQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94LmVsZW1lbnQoKS0+Y29udGFp
bnMocG9zaXRpb25lZEJveC5lbGVtZW50KCkpKQorICAgICAgICAgICAgICAgIGlmIChyZW5kZXJC
b3guZWxlbWVudCgpLT5jb250YWlucyhwb3NpdGlvbmVkQm94LT5lbGVtZW50KCkpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTE3MzgsNyArMTczOCw3IEBAIExheW91dFJlY3QgRWxlbWVudDo6YWJzb2x1dGVFdmVudEJvdW5k
cyhib29sJiBib3VuZHNJbmNsdWRlQWxsRGVzY2VuZGFudEVsZW1lbnRzCiAgICAgICAgICAgICBp
ZiAoUmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdtZW50ZWRGbG93ID0gYm94LmVuY2xvc2luZ0Zy
YWdtZW50ZWRGbG93KCkpIHsKICAgICAgICAgICAgICAgICBib29sIHdhc0ZpeGVkID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0gICAgICAgICAgICAg
ICAgaWYgKGZyYWdtZW50ZWRGbG93LT5hYnNvbHV0ZVF1YWRzRm9yQm94KHF1YWRzLCAmd2FzRml4
ZWQsIGJveCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3ctPmFic29sdXRl
UXVhZHNGb3JCb3gocXVhZHMsICZ3YXNGaXhlZCwgJmJveCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gTGF5b3V0UmVjdCh1bml0ZWRCb3VuZGluZ0JveGVzKHF1YWRzKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbXB1dGVkQm91bmRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAppbmRleCAzZDY3OGU0
M2E0OTAuLjhlNjUyNTVlZmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
bEZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5j
cHAKQEAgLTQyOTYsMTEgKzQyOTYsMTEgQEAgZmxvYXQgTG9jYWxGcmFtZVZpZXc6OmFkanVzdFZl
cnRpY2FsUGFnZVNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQoZmxvYXQgc3RlcCkKICAgICBmbG9h
dCB0b3BPYnNjdXJlZEFyZWEgPSAwOwogICAgIGZsb2F0IGJvdHRvbU9ic2N1cmVkQXJlYSA9IDA7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBwb3NpdGlvbmVkT2JqZWN0IDogKnBvc2l0aW9uZWRPYmpl
Y3RzKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHBvc2l0aW9uZWRPYmpl
Y3Quc3R5bGUoKTsKKyAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcG9zaXRpb25l
ZE9iamVjdC0+c3R5bGUoKTsKICAgICAgICAgaWYgKHN0eWxlLnBvc2l0aW9uKCkgIT0gUG9zaXRp
b25UeXBlOjpGaXhlZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVu
IHx8ICFzdHlsZS5vcGFjaXR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBG
bG9hdFF1YWQgY29udGVudFF1YWQgPSBwb3NpdGlvbmVkT2JqZWN0LmFic29sdXRlQ29udGVudFF1
YWQoKTsKKyAgICAgICAgRmxvYXRRdWFkIGNvbnRlbnRRdWFkID0gcG9zaXRpb25lZE9iamVjdC0+
YWJzb2x1dGVDb250ZW50UXVhZCgpOwogICAgICAgICBpZiAoIWNvbnRlbnRRdWFkLmlzUmVjdGls
aW5lYXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lQm94UGFpbnRlci5jcHAKaW5kZXggM2Y1MDM1MGRhNDg3Li45MTBiZjUyYWQ1
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWludGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpwYWludCgpCiAgICAgICAg
IGlmIChjb250YWluaW5nQmxvY2tQYWludHNDb250aW51YXRpb25PdXRsaW5lKSB7CiAgICAgICAg
ICAgICAvLyBBZGQgb3Vyc2VsdmVzIHRvIHRoZSBjb250YWluaW5nIGJsb2NrIG9mIHRoZSBlbnRp
cmUgY29udGludWF0aW9uIHNvIHRoYXQgaXQgY2FuCiAgICAgICAgICAgICAvLyBwYWludCB1cyBh
dG9taWNhbGx5LgotICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5hZGRDb250aW51YXRpb25X
aXRoT3V0bGluZSgqZG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcigpLmVsZW1lbnQoKS0+
cmVuZGVyZXIoKSkpOworICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5hZGRDb250aW51YXRp
b25XaXRoT3V0bGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKCkuZWxlbWVudCgp
LT5yZW5kZXJlcigpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUZsb3cuaXNDb250aW51
YXRpb24oKSkKICAgICAgICAgICAgIG1fcGFpbnRJbmZvLm91dGxpbmVPYmplY3RzLT5hZGQoaW5s
aW5lRmxvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lM
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0
LmNwcAppbmRleCA0OGVkMDY4NDBkNGMuLjlmODQ4MTlhMWUzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcApAQCAtMjE1OCwxMiArMjE1OCwxMiBA
QCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmFkZE92ZXJmbG93RnJvbUlubGluZUNoaWxkcmVuKCkK
ICAgICAgICAgbV9mbG93LmFkZExheW91dE92ZXJmbG93KGN1cnItPnBhZGRlZExheW91dE92ZXJm
bG93UmVjdChlbmRQYWRkaW5nKSk7CiAgICAgICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBm
cmFnbWVudCA9IG1fZmxvdy5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpID8gY3Vyci0+Y29udGFp
bmluZ0ZyYWdtZW50KCkgOiBudWxscHRyOwogICAgICAgICBpZiAoZnJhZ21lbnQpCi0gICAgICAg
ICAgICBmcmFnbWVudC0+YWRkTGF5b3V0T3ZlcmZsb3dGb3JCb3gobV9mbG93LCBjdXJyLT5wYWRk
ZWRMYXlvdXRPdmVyZmxvd1JlY3QoZW5kUGFkZGluZykpOworICAgICAgICAgICAgZnJhZ21lbnQt
PmFkZExheW91dE92ZXJmbG93Rm9yQm94KCZtX2Zsb3csIGN1cnItPnBhZGRlZExheW91dE92ZXJm
bG93UmVjdChlbmRQYWRkaW5nKSk7CiAgICAgICAgIGlmICghbV9mbG93Lmhhc05vblZpc2libGVP
dmVyZmxvdygpKSB7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IGNoaWxkVmlzdWFsT3ZlcmZsb3dS
ZWN0ID0gY3Vyci0+dmlzdWFsT3ZlcmZsb3dSZWN0KGN1cnItPmxpbmVUb3AoKSwgY3Vyci0+bGlu
ZUJvdHRvbSgpKTsKICAgICAgICAgICAgIG1fZmxvdy5hZGRWaXN1YWxPdmVyZmxvdyhjaGlsZFZp
c3VhbE92ZXJmbG93UmVjdCk7CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCi0gICAgICAgICAg
ICAgICAgZnJhZ21lbnQtPmFkZFZpc3VhbE92ZXJmbG93Rm9yQm94KG1fZmxvdywgY2hpbGRWaXN1
YWxPdmVyZmxvd1JlY3QpOworICAgICAgICAgICAgICAgIGZyYWdtZW50LT5hZGRWaXN1YWxPdmVy
Zmxvd0ZvckJveCgmbV9mbG93LCBjaGlsZFZpc3VhbE92ZXJmbG93UmVjdCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBl
MDc2YzdiNDMwZjIuLmEyODcyMzQ2NTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCkBAIC04MCw4ICs4MCw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNr
U3RhdHMuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvV2Vh
a0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTk2LDggKzk0LDggQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJCbG9j
ayA6IHB1YmxpYyBSZW5kZXJCb3ggewogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZW5kZXJCbG9j
aykgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJCbG9jayksICJSZW5kZXJCbG9jayBzaG91bGQg
c3RheSBzbWFsbCIpOwogCi11c2luZyBUcmFja2VkRGVzY2VuZGFudHNNYXAgPSBXZWFrSGFzaE1h
cDxjb25zdCBSZW5kZXJCbG9jaywgc3RkOjp1bmlxdWVfcHRyPFRyYWNrZWRSZW5kZXJlckxpc3RI
YXNoU2V0Pj47Ci11c2luZyBUcmFja2VkQ29udGFpbmVyTWFwID0gV2Vha0hhc2hNYXA8Y29uc3Qg
UmVuZGVyQm94LCBXZWFrSGFzaFNldDxjb25zdCBSZW5kZXJCbG9jaz4+OwordHlwZWRlZiBIYXNo
TWFwPGNvbnN0IFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0Pj4gVHJhY2tlZERlc2NlbmRhbnRzTWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0
IFJlbmRlckJveCosIEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4gVHJhY2tlZENvbnRhaW5l
ck1hcDsKIAogc3RhdGljIFRyYWNrZWREZXNjZW5kYW50c01hcCogcGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzTWFwOwogc3RhdGljIFRyYWNrZWRDb250YWluZXJNYXAqIHBlcmNlbnRIZWlnaHRDb250
YWluZXJNYXA7CkBAIC0xMDksMjMgKzEwNywyMyBAQCBzdGF0aWMgdm9pZCBpbnNlcnRJbnRvVHJh
Y2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmVyLCBSZW5kZXJCbwog
ICAgICAgICBwZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwID0gbmV3IFRyYWNrZWRDb250YWluZXJN
YXA7CiAgICAgfQogICAgIAotICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVpZ2h0
RGVzY2VuZGFudHNNYXAtPmVuc3VyZShjb250YWluZXIsIFtdIHsKKyAgICBhdXRvJiBkZXNjZW5k
YW50U2V0ID0gcGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwLT5lbnN1cmUoJmNvbnRhaW5lciwg
W10gewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNl
dD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBib29sIGFkZGVkID0gZGVzY2Vu
ZGFudFNldC0+YWRkKGRlc2NlbmRhbnQpLmlzTmV3RW50cnk7CisgICAgYm9vbCBhZGRlZCA9IGRl
c2NlbmRhbnRTZXQtPmFkZCgmZGVzY2VuZGFudCkuaXNOZXdFbnRyeTsKICAgICBpZiAoIWFkZGVk
KSB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgYXV0byBpdCA9IHBlcmNlbnRIZWlnaHRD
b250YWluZXJNYXAtPmZpbmQoZGVzY2VuZGFudCk7CisgICAgICAgIGF1dG8gaXQgPSBwZXJjZW50
SGVpZ2h0Q29udGFpbmVyTWFwLT5maW5kKCZkZXNjZW5kYW50KTsKICAgICAgICAgQVNTRVJUKGl0
ICE9IHBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmVuZCgpKTsKLSAgICAgICAgQVNTRVJUKGl0
LT52YWx1ZS5jb250YWlucyhjb250YWluZXIpKTsKKyAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5j
b250YWlucygmY29udGFpbmVyKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBhdXRvJiBjb250YWluZXJTZXQgPSBwZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT5h
ZGQoZGVzY2VuZGFudCwgV2Vha0hhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2s+KCkpLml0ZXJhdG9y
LT52YWx1ZTsKLSAgICBBU1NFUlQoIWNvbnRhaW5lclNldC5jb250YWlucyhjb250YWluZXIpKTsK
LSAgICBjb250YWluZXJTZXQuYWRkKGNvbnRhaW5lcik7CisgICAgYXV0byYgY29udGFpbmVyU2V0
ID0gcGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+YWRkKCZkZXNjZW5kYW50LCBIYXNoU2V0PGNv
bnN0IFJlbmRlckJsb2NrKj4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVCghY29udGFp
bmVyU2V0LmNvbnRhaW5zKCZjb250YWluZXIpKTsKKyAgICBjb250YWluZXJTZXQuYWRkKCZjb250
YWluZXIpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVGcm9tVHJhY2tlZFJlbmRlcmVyTWFwcyhS
ZW5kZXJCb3gmIGRlc2NlbmRhbnQpCkBAIC0xMzMsOCArMTMxLDggQEAgc3RhdGljIHZvaWQgcmVt
b3ZlRnJvbVRyYWNrZWRSZW5kZXJlck1hcHMoUmVuZGVyQm94JiBkZXNjZW5kYW50KQogICAgIGlm
ICghcGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgYXV0byBjb250YWluZXJTZXQgPSBwZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT50YWtlKGRl
c2NlbmRhbnQpOwotICAgIGZvciAoYXV0byYgY29udGFpbmVyIDogY29udGFpbmVyU2V0KSB7Cisg
ICAgSGFzaFNldDxjb25zdCBSZW5kZXJCbG9jayo+IGNvbnRhaW5lclNldCA9IHBlcmNlbnRIZWln
aHRDb250YWluZXJNYXAtPnRha2UoJmRlc2NlbmRhbnQpOworICAgIGZvciAoYXV0byogY29udGFp
bmVyIDogY29udGFpbmVyU2V0KSB7CiAgICAgICAgIC8vIEZJWE1FOiBEaXNhYmxpbmcgdGhpcyBh
c3NlcnQgdGVtcG9yYXJpbHkgdW50aWwgd2UgZml4IHRoZSBsYXlvdXQKICAgICAgICAgLy8gYnVn
cyBhc3NvY2lhdGVkIHdpdGggcG9zaXRpb25lZCBvYmplY3RzIG5vdCBwcm9wZXJseSBjbGVhcmVk
IGZyb20KICAgICAgICAgLy8gdGhlaXIgYW5jZXN0b3IgY2hhaW4gYmVmb3JlIGJlaW5nIG1vdmVk
LiBTZWUgd2Via2l0IGJ1ZyA5Mzc2Ni4KQEAgLTE0NCw5ICsxNDIsOSBAQCBzdGF0aWMgdm9pZCBy
ZW1vdmVGcm9tVHJhY2tlZFJlbmRlcmVyTWFwcyhSZW5kZXJCb3gmIGRlc2NlbmRhbnQpCiAgICAg
ICAgIGlmIChkZXNjZW5kYW50c01hcEl0ZXJhdG9yID09IHBlcmNlbnRIZWlnaHREZXNjZW5kYW50
c01hcC0+ZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byYgZGVzY2Vu
ZGFudFNldCA9IGRlc2NlbmRhbnRzTWFwSXRlcmF0b3ItPnZhbHVlOwotICAgICAgICBBU1NFUlQo
ZGVzY2VuZGFudFNldC0+Y29udGFpbnMoZGVzY2VuZGFudCkpOwotICAgICAgICBkZXNjZW5kYW50
U2V0LT5yZW1vdmUoZGVzY2VuZGFudCk7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50U2V0LT5pc0Vt
cHR5SWdub3JpbmdOdWxsUmVmZXJlbmNlcygpKQorICAgICAgICBBU1NFUlQoZGVzY2VuZGFudFNl
dC0+Y29udGFpbnMoJmRlc2NlbmRhbnQpKTsKKyAgICAgICAgZGVzY2VuZGFudFNldC0+cmVtb3Zl
KCZkZXNjZW5kYW50KTsKKyAgICAgICAgaWYgKGRlc2NlbmRhbnRTZXQtPmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHBlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+cmVtb3ZlKGRlc2NlbmRhbnRz
TWFwSXRlcmF0b3IpOwogICAgIH0KIH0KQEAgLTE1NiwyMSArMTU0LDIxIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZERlc2NlbmRhbnQoY29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5pbmdCbG9jaywg
UmVuZGVyQm94JiBwb3NpdGlvbmVkRGVzY2VuZGFudCkKICAgICB7CiAgICAgICAgIC8vIFByb3Rl
Y3QgYWdhaW5zdCBkb3VibGUgaW5zZXJ0IHdoZXJlIGEgZGVzY2VuZGFudCB3b3VsZCBlbmQgdXAg
d2l0aCBtdWx0aXBsZSBjb250YWluaW5nIGJsb2Nrcy4KLSAgICAgICAgYXV0byBwcmV2aW91c0Nv
bnRhaW5pbmdCbG9jayA9IG1fY29udGFpbmVyTWFwLmdldChwb3NpdGlvbmVkRGVzY2VuZGFudCk7
CisgICAgICAgIGF1dG8qIHByZXZpb3VzQ29udGFpbmluZ0Jsb2NrID0gbV9jb250YWluZXJNYXAu
Z2V0KCZwb3NpdGlvbmVkRGVzY2VuZGFudCk7CiAgICAgICAgIGlmIChwcmV2aW91c0NvbnRhaW5p
bmdCbG9jayAmJiBwcmV2aW91c0NvbnRhaW5pbmdCbG9jayAhPSAmY29udGFpbmluZ0Jsb2NrKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byogZGVzY2VuZGFudHMgPSBtX2Rlc2NlbmRhbnRzTWFwLmdl
dCgqcHJldmlvdXNDb250YWluaW5nQmxvY2spKQotICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRz
LT5yZW1vdmUocG9zaXRpb25lZERlc2NlbmRhbnQpOworICAgICAgICAgICAgaWYgKGF1dG8qIGRl
c2NlbmRhbnRzID0gbV9kZXNjZW5kYW50c01hcC5nZXQocHJldmlvdXNDb250YWluaW5nQmxvY2sp
KQorICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRzLT5yZW1vdmUoJnBvc2l0aW9uZWREZXNjZW5k
YW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8mIGRlc2NlbmRhbnRzID0gbV9kZXNjZW5k
YW50c01hcC5lbnN1cmUoY29udGFpbmluZ0Jsb2NrLCBbXSB7CisgICAgICAgIGF1dG8mIGRlc2Nl
bmRhbnRzID0gbV9kZXNjZW5kYW50c01hcC5lbnN1cmUoJmNvbnRhaW5pbmdCbG9jaywgW10gewog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+
KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBhdXRvIGlzTmV3RW50
cnkgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFpczxSZW5kZXJWaWV3Pihjb250YWluaW5nQmxvY2sp
IHx8IGRlc2NlbmRhbnRzLT5pc0VtcHR5SWdub3JpbmdOdWxsUmVmZXJlbmNlcygpKQotICAgICAg
ICAgICAgaXNOZXdFbnRyeSA9IGRlc2NlbmRhbnRzLT5hZGQocG9zaXRpb25lZERlc2NlbmRhbnQp
LmlzTmV3RW50cnk7CisgICAgICAgIGlmICghaXM8UmVuZGVyVmlldz4oY29udGFpbmluZ0Jsb2Nr
KSB8fCBkZXNjZW5kYW50cy0+aXNFbXB0eSgpKQorICAgICAgICAgICAgaXNOZXdFbnRyeSA9IGRl
c2NlbmRhbnRzLT5hZGQoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5OwogICAgICAg
ICBlbHNlIGlmIChwb3NpdGlvbmVkRGVzY2VuZGFudC5pc0ZpeGVkUG9zaXRpb25lZCgpIHx8IGlz
SW5Ub3BMYXllck9yQmFja2Ryb3AocG9zaXRpb25lZERlc2NlbmRhbnQuc3R5bGUoKSwgcG9zaXRp
b25lZERlc2NlbmRhbnQuZWxlbWVudCgpKSkKLSAgICAgICAgICAgIGlzTmV3RW50cnkgPSBkZXNj
ZW5kYW50cy0+YXBwZW5kT3JNb3ZlVG9MYXN0KHBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0Vu
dHJ5OworICAgICAgICAgICAgaXNOZXdFbnRyeSA9IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVU
b0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5OwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGF1dG8gZW5zdXJlTGF5b3V0RGVwZW50Qm94UG9zaXRpb24gPSBbJl0gewog
ICAgICAgICAgICAgICAgIC8vIFJlbmRlclZpZXcgaXMgYSBzcGVjaWFsIGNvbnRhaW5pbmcgYmxv
Y2sgYXMgaXQgbWF5IGhvbGQgYm90aCBhYnNvbHV0ZSBhbmQgZml4ZWQgcG9zaXRpb25lZCBjb250
YWluaW5nIGJsb2Nrcy4KQEAgLTE3OCw2MCArMTc2LDYwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAvLyB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBhYnNvbHV0ZSBwb3NpdGlvbmVk
IGJveCBpcyBpbnNlcnRlZCBiZWZvcmUgdGhlIGZpeGVkIGJveCB0byBmb2xsb3cKICAgICAgICAg
ICAgICAgICAvLyBibG9jayBsYXlvdXQgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8gaXQgPSBkZXNjZW5kYW50cy0+YmVnaW4oKTsgaXQgIT0gZGVzY2VuZGFudHMtPmVuZCgp
OyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdC0+aXNGaXhlZFBvc2l0aW9uZWQo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXdFbnRyeSA9IGRlc2NlbmRhbnRzLT5p
bnNlcnRCZWZvcmUoaXQsIHBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5OworICAgICAg
ICAgICAgICAgICAgICBpZiAoKCppdCktPmlzRml4ZWRQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlzTmV3RW50cnkgPSBkZXNjZW5kYW50cy0+aW5zZXJ0QmVmb3JlKGl0
LCAmcG9zaXRpb25lZERlc2NlbmRhbnQpLmlzTmV3RW50cnk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaXNOZXdFbnRyeSA9IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xh
c3QocG9zaXRpb25lZERlc2NlbmRhbnQpLmlzTmV3RW50cnk7CisgICAgICAgICAgICAgICAgaXNO
ZXdFbnRyeSA9IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNj
ZW5kYW50KS5pc05ld0VudHJ5OwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGVuc3VyZUxh
eW91dERlcGVudEJveFBvc2l0aW9uKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWlzTmV3
RW50cnkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2NvbnRhaW5lck1hcC5jb250YWlucyhwb3Np
dGlvbmVkRGVzY2VuZGFudCkpOworICAgICAgICAgICAgQVNTRVJUKG1fY29udGFpbmVyTWFwLmNv
bnRhaW5zKCZwb3NpdGlvbmVkRGVzY2VuZGFudCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIG1fY29udGFpbmVyTWFwLnNldChwb3NpdGlvbmVkRGVzY2VuZGFudCwg
JmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgIG1fY29udGFpbmVyTWFwLnNldCgmcG9zaXRpb25l
ZERlc2NlbmRhbnQsICZjb250YWluaW5nQmxvY2spOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3Zl
RGVzY2VuZGFudChjb25zdCBSZW5kZXJCb3gmIHBvc2l0aW9uZWREZXNjZW5kYW50KQogICAgIHsK
LSAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2sgPSBtX2NvbnRhaW5lck1hcC50YWtlKHBvc2l0
aW9uZWREZXNjZW5kYW50KTsKKyAgICAgICAgYXV0byogY29udGFpbmluZ0Jsb2NrID0gbV9jb250
YWluZXJNYXAudGFrZSgmcG9zaXRpb25lZERlc2NlbmRhbnQpOwogICAgICAgICBpZiAoIWNvbnRh
aW5pbmdCbG9jaykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGRlc2NlbmRh
bnRzSXRlcmF0b3IgPSBtX2Rlc2NlbmRhbnRzTWFwLmZpbmQoKmNvbnRhaW5pbmdCbG9jayk7Cisg
ICAgICAgIGF1dG8gZGVzY2VuZGFudHNJdGVyYXRvciA9IG1fZGVzY2VuZGFudHNNYXAuZmluZChj
b250YWluaW5nQmxvY2spOwogICAgICAgICBBU1NFUlQoZGVzY2VuZGFudHNJdGVyYXRvciAhPSBt
X2Rlc2NlbmRhbnRzTWFwLmVuZCgpKTsKICAgICAgICAgaWYgKGRlc2NlbmRhbnRzSXRlcmF0b3Ig
PT0gbV9kZXNjZW5kYW50c01hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBhdXRvJiBkZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzSXRlcmF0b3ItPnZhbHVlOwotICAgICAg
ICBBU1NFUlQoZGVzY2VuZGFudHMtPmNvbnRhaW5zKGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4ocG9z
aXRpb25lZERlc2NlbmRhbnQpKSk7CisgICAgICAgIEFTU0VSVChkZXNjZW5kYW50cy0+Y29udGFp
bnMoY29uc3RfY2FzdDxSZW5kZXJCb3gqPigmcG9zaXRpb25lZERlc2NlbmRhbnQpKSk7CiAKLSAg
ICAgICAgZGVzY2VuZGFudHMtPnJlbW92ZShjb25zdF9jYXN0PFJlbmRlckJveCY+KHBvc2l0aW9u
ZWREZXNjZW5kYW50KSk7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50cy0+aXNFbXB0eUlnbm9yaW5n
TnVsbFJlZmVyZW5jZXMoKSkKKyAgICAgICAgZGVzY2VuZGFudHMtPnJlbW92ZShjb25zdF9jYXN0
PFJlbmRlckJveCo+KCZwb3NpdGlvbmVkRGVzY2VuZGFudCkpOworICAgICAgICBpZiAoZGVzY2Vu
ZGFudHMtPmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fZGVzY2VuZGFudHNNYXAucmVtb3ZlKGRl
c2NlbmRhbnRzSXRlcmF0b3IpOwogICAgIH0KICAgICAKICAgICB2b2lkIHJlbW92ZUNvbnRhaW5p
bmdCbG9jayhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmluZ0Jsb2NrKQogICAgIHsKLSAgICAg
ICAgYXV0byBkZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNNYXAudGFrZShjb250YWluaW5nQmxv
Y2spOworICAgICAgICBhdXRvIGRlc2NlbmRhbnRzID0gbV9kZXNjZW5kYW50c01hcC50YWtlKCZj
b250YWluaW5nQmxvY2spOwogICAgICAgICBpZiAoIWRlc2NlbmRhbnRzKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiAqZGVzY2VuZGFudHMpCisg
ICAgICAgIGZvciAoYXV0byogcmVuZGVyZXIgOiAqZGVzY2VuZGFudHMpCiAgICAgICAgICAgICBt
X2NvbnRhaW5lck1hcC5yZW1vdmUocmVuZGVyZXIpOwogICAgIH0KICAgICAKICAgICBUcmFja2Vk
UmVuZGVyZXJMaXN0SGFzaFNldCogcG9zaXRpb25lZFJlbmRlcmVycyhjb25zdCBSZW5kZXJCbG9j
ayYgY29udGFpbmluZ0Jsb2NrKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQqPihtX2Rlc2NlbmRhbnRzTWFwLmdldChjb250
YWluaW5nQmxvY2spKTsKKyAgICAgICAgcmV0dXJuIG1fZGVzY2VuZGFudHNNYXAuZ2V0KCZjb250
YWluaW5nQmxvY2spOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBEZXNjZW5kYW50c01h
cCA9IFdlYWtIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrLCBzdGQ6OnVuaXF1ZV9wdHI8VHJhY2tl
ZFJlbmRlcmVyTGlzdEhhc2hTZXQ+PjsKLSAgICB1c2luZyBDb250YWluZXJNYXAgPSBXZWFrSGFz
aE1hcDxjb25zdCBSZW5kZXJCb3gsIFdlYWtQdHI8Y29uc3QgUmVuZGVyQmxvY2s+PjsKKyAgICB1
c2luZyBEZXNjZW5kYW50c01hcCA9IEhhc2hNYXA8Y29uc3QgUmVuZGVyQmxvY2sqLCBzdGQ6OnVu
aXF1ZV9wdHI8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+PjsKKyAgICB1c2luZyBDb250YWlu
ZXJNYXAgPSBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIGNvbnN0IFJlbmRlckJsb2NrKj47CiAg
ICAgCiAgICAgRGVzY2VuZGFudHNNYXAgbV9kZXNjZW5kYW50c01hcDsKICAgICBDb250YWluZXJN
YXAgbV9jb250YWluZXJNYXA7CkBAIC0yNDMsNyArMjQxLDcgQEAgc3RhdGljIFBvc2l0aW9uZWRE
ZXNjZW5kYW50c01hcCYgcG9zaXRpb25lZERlc2NlbmRhbnRzTWFwKCkKICAgICByZXR1cm4gbWFw
Rm9yUG9zaXRpb25lZERlc2NlbmRhbnRzOwogfQogCi11c2luZyBDb250aW51YXRpb25PdXRsaW5l
VGFibGVNYXAgPSBXZWFrSGFzaE1hcDxSZW5kZXJCbG9jaywgc3RkOjp1bmlxdWVfcHRyPFdlYWtM
aXN0SGFzaFNldDxSZW5kZXJJbmxpbmU+Pj47Cit0eXBlZGVmIEhhc2hNYXA8UmVuZGVyQmxvY2sq
LCBzdGQ6OnVuaXF1ZV9wdHI8TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4+PiBDb250aW51YXRp
b25PdXRsaW5lVGFibGVNYXA7CiAKIC8vIEFsbG9jYXRlZCBvbmx5IHdoZW4gc29tZSBvZiB0aGVz
ZSBmaWVsZHMgaGF2ZSBub24tZGVmYXVsdCB2YWx1ZXMKIApAQCAtMjYxLDcgKzI1OSw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFdlYWtQdHI8UmVuZGVyRnJhZ21lbnRlZEZsb3c+PiBt
X2VuY2xvc2luZ0ZyYWdtZW50ZWRGbG93OwogfTsKIAotdXNpbmcgUmVuZGVyQmxvY2tSYXJlRGF0
YU1hcCA9IFdlYWtIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyQmxvY2tSYXJlRGF0YT4+OwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrKiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrUmFyZURhdGE+PiBSZW5kZXJCbG9ja1JhcmVEYXRh
TWFwOwogc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGFNYXAqIGdSYXJlRGF0YU1hcDsKIAogLy8g
VGhpcyBjbGFzcyBoZWxwcyBkaXNwYXRjaGluZyB0aGUgJ292ZXJmbG93JyBldmVudCBvbiBsYXlv
dXQgY2hhbmdlLiBvdmVyZmxvdyBjYW4gYmUgc2V0IG9uIFJlbmRlckJveGVzLCB5ZXQgdGhlIGV4
aXN0aW5nIGNvZGUKQEAgLTMxNiw3ICszMTQsNyBAQCBSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2so
RG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzCiB7
CiB9CiAKLXN0YXRpYyB2b2lkIHJlbW92ZUJsb2NrRnJvbVBlcmNlbnRhZ2VEZXNjZW5kYW50QW5k
Q29udGFpbmVyTWFwcyhSZW5kZXJCbG9jayYgYmxvY2spCitzdGF0aWMgdm9pZCByZW1vdmVCbG9j
a0Zyb21QZXJjZW50YWdlRGVzY2VuZGFudEFuZENvbnRhaW5lck1hcHMoUmVuZGVyQmxvY2sqIGJs
b2NrKQogewogICAgIGlmICghcGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMjQsNyArMzIyLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlQmxvY2tGcm9tUGVy
Y2VudGFnZURlc2NlbmRhbnRBbmRDb250YWluZXJNYXBzKFJlbmRlckJsb2NrJiBibG8KICAgICBp
ZiAoIWRlc2NlbmRhbnRTZXQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBmb3IgKGF1dG8m
IGRlc2NlbmRhbnQgOiAqZGVzY2VuZGFudFNldCkgeworICAgIGZvciAoYXV0byogZGVzY2VuZGFu
dCA6ICpkZXNjZW5kYW50U2V0KSB7CiAgICAgICAgIGF1dG8gaXQgPSBwZXJjZW50SGVpZ2h0Q29u
dGFpbmVyTWFwLT5maW5kKGRlc2NlbmRhbnQpOwogICAgICAgICBBU1NFUlQoaXQgIT0gcGVyY2Vu
dEhlaWdodENvbnRhaW5lck1hcC0+ZW5kKCkpOwogICAgICAgICBpZiAoaXQgPT0gcGVyY2VudEhl
aWdodENvbnRhaW5lck1hcC0+ZW5kKCkpCkBAIC0zMzIsNyArMzMwLDcgQEAgc3RhdGljIHZvaWQg
cmVtb3ZlQmxvY2tGcm9tUGVyY2VudGFnZURlc2NlbmRhbnRBbmRDb250YWluZXJNYXBzKFJlbmRl
ckJsb2NrJiBibG8KICAgICAgICAgYXV0byYgY29udGFpbmVyU2V0ID0gaXQtPnZhbHVlOwogICAg
ICAgICBBU1NFUlQoY29udGFpbmVyU2V0LmNvbnRhaW5zKGJsb2NrKSk7CiAgICAgICAgIGNvbnRh
aW5lclNldC5yZW1vdmUoYmxvY2spOwotICAgICAgICBpZiAoY29udGFpbmVyU2V0LmlzRW1wdHlJ
Z25vcmluZ051bGxSZWZlcmVuY2VzKCkpCisgICAgICAgIGlmIChjb250YWluZXJTZXQuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+cmVtb3ZlKGl0KTsK
ICAgICB9CiB9CkBAIC0zNDEsNyArMzM5LDcgQEAgUmVuZGVyQmxvY2s6On5SZW5kZXJCbG9jaygp
CiB7CiAgICAgLy8gQmxvY2tzIGNhbiBiZSBhZGRlZCB0byBnUmFyZURhdGFNYXAgZHVyaW5nIHdp
bGxCZURlc3Ryb3llZCgpLCBzbyB0aGlzIGNvZGUgY2FuJ3QgbW92ZSB0aGVyZS4KICAgICBpZiAo
Z1JhcmVEYXRhTWFwKQotICAgICAgICBnUmFyZURhdGFNYXAtPnJlbW92ZSgqdGhpcyk7CisgICAg
ICAgIGdSYXJlRGF0YU1hcC0+cmVtb3ZlKHRoaXMpOwogCiAgICAgLy8gRG8gbm90IGFkZCBhbnkg
bW9yZSBjb2RlIGhlcmUuIEFkZCBpdCB0byB3aWxsQmVEZXN0cm95ZWQoKSBpbnN0ZWFkLgogfQpA
QCAtMzYzLDEzICszNjEsMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6YmxvY2tXaWxsQmVEZXN0cm95
ZWQoKQogewogICAgIHJlbW92ZUZyb21VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2Fj
dGlvbigpOwogCi0gICAgcmVtb3ZlQmxvY2tGcm9tUGVyY2VudGFnZURlc2NlbmRhbnRBbmRDb250
YWluZXJNYXBzKCp0aGlzKTsKKyAgICByZW1vdmVCbG9ja0Zyb21QZXJjZW50YWdlRGVzY2VuZGFu
dEFuZENvbnRhaW5lck1hcHModGhpcyk7CiAgICAgcG9zaXRpb25lZERlc2NlbmRhbnRzTWFwKCku
cmVtb3ZlQ29udGFpbmluZ0Jsb2NrKCp0aGlzKTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6aGFz
UmFyZURhdGEoKSBjb25zdAogewotICAgIHJldHVybiBnUmFyZURhdGFNYXAgPyBnUmFyZURhdGFN
YXAtPmNvbnRhaW5zKCp0aGlzKSA6IGZhbHNlOworICAgIHJldHVybiBnUmFyZURhdGFNYXAgPyBn
UmFyZURhdGFNYXAtPmNvbnRhaW5zKHRoaXMpIDogZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyQmxv
Y2s6OnJlbW92ZVBvc2l0aW9uZWRPYmplY3RzSWZOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCkBAIC01OTMsNyArNTkxLDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKIAogc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEq
IGdldEJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQogewotICAgIHJldHVy
biBnUmFyZURhdGFNYXAgPyBnUmFyZURhdGFNYXAtPmdldChibG9jaykgOiBudWxscHRyOworICAg
IHJldHVybiBnUmFyZURhdGFNYXAgPyBnUmFyZURhdGFNYXAtPmdldCgmYmxvY2spIDogbnVsbHB0
cjsKIH0KIAogc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEo
Y29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQpAQCAtNjAxLDcgKzU5OSw3IEBAIHN0YXRpYyBSZW5k
ZXJCbG9ja1JhcmVEYXRhJiBlbnN1cmVCbG9ja1JhcmVEYXRhKGNvbnN0IFJlbmRlckJsb2NrJiBi
bG9jaykKICAgICBpZiAoIWdSYXJlRGF0YU1hcCkKICAgICAgICAgZ1JhcmVEYXRhTWFwID0gbmV3
IFJlbmRlckJsb2NrUmFyZURhdGFNYXA7CiAgICAgCi0gICAgYXV0byYgcmFyZURhdGEgPSBnUmFy
ZURhdGFNYXAtPmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8m
IHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKICAgICAgICAgcmFyZURhdGEgPSBtYWtlVW5pcXVl
PFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5nZXQoKTsKQEAg
LTYxMiw3ICs2MTAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwcmVwYXJlUGFnaW5hdGlvbkJlZm9y
ZUJsb2NrTGF5b3V0KGJvb2wmIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgLy8gRnJhZ21lbnRzIGNo
YW5naW5nIHdpZHRocyBjYW4gZm9yY2UgdXMgdG8gcmVsYXlvdXQgb3VyIGNoaWxkcmVuLgogICAg
IFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdyA9IGVuY2xvc2luZ0ZyYWdtZW50
ZWRGbG93KCk7CiAgICAgaWYgKGZyYWdtZW50ZWRGbG93KQotICAgICAgICBmcmFnbWVudGVkRmxv
dy0+bG9naWNhbFdpZHRoQ2hhbmdlZEluRnJhZ21lbnRzRm9yQmxvY2soKnRoaXMsIHJlbGF5b3V0
Q2hpbGRyZW4pOworICAgICAgICBmcmFnbWVudGVkRmxvdy0+bG9naWNhbFdpZHRoQ2hhbmdlZElu
RnJhZ21lbnRzRm9yQmxvY2sodGhpcywgcmVsYXlvdXRDaGlsZHJlbik7CiB9CiAKIGJvb2wgUmVu
ZGVyQmxvY2s6OnJlY29tcHV0ZUxvZ2ljYWxXaWR0aCgpCkBAIC02NDEsNyArNjM5LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKQogICAgICAgICAvLyBJZiB0
aGlzIGJsb2NrIGlzIGZsb3dlZCBpbnNpZGUgYSBmbG93IHRocmVhZCwgbWFrZSBzdXJlIGl0cyBv
dmVyZmxvdyBpcyBwcm9wYWdhdGVkIHRvIHRoZSBjb250YWluaW5nIGZyYWdtZW50cy4KICAgICAg
ICAgaWYgKG1fb3ZlcmZsb3cpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBmbG93ID0gZW5jbG9z
aW5nRnJhZ21lbnRlZEZsb3coKSkKLSAgICAgICAgICAgICAgICBmbG93LT5hZGRGcmFnbWVudHNW
aXN1YWxPdmVyZmxvdygqdGhpcywgbV9vdmVyZmxvdy0+dmlzdWFsT3ZlcmZsb3dSZWN0KCkpOwor
ICAgICAgICAgICAgICAgIGZsb3ctPmFkZEZyYWdtZW50c1Zpc3VhbE92ZXJmbG93KHRoaXMsIG1f
b3ZlcmZsb3ctPnZpc3VhbE92ZXJmbG93UmVjdCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQog
ICAgICAgICBhZGRPdmVyZmxvd0Zyb21CbG9ja0NoaWxkcmVuKCk7CkBAIC03MzUsNyArNzMzLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tQmxvY2tDaGlsZHJlbigpCiB7CiAg
ICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKCFjaGlsZC0+aXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQo
KmNoaWxkKTsKKyAgICAgICAgICAgIGFkZE92ZXJmbG93RnJvbUNoaWxkKGNoaWxkKTsKICAgICB9
CiB9CiAKQEAgLTc0NSwxMCArNzQzLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93
RnJvbVBvc2l0aW9uZWRPYmplY3RzKCkKICAgICBpZiAoIXBvc2l0aW9uZWREZXNjZW5kYW50cykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvJiBwb3NpdGlvbmVkT2JqZWN0IDogKnBv
c2l0aW9uZWREZXNjZW5kYW50cykgeworICAgIGZvciAoYXV0byBpdCA9IHBvc2l0aW9uZWREZXNj
ZW5kYW50cy0+YmVnaW4oKSwgZW5kID0gcG9zaXRpb25lZERlc2NlbmRhbnRzLT5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlbmRlckJveCogcG9zaXRpb25lZE9iamVjdCA9ICpp
dDsKKyAgICAgICAgCiAgICAgICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgZG9uJ3Qg
Y29udHJpYnV0ZSB0byBsYXlvdXQgb3ZlcmZsb3csIHNpbmNlIHRoZXkgZG9uJ3Qgc2Nyb2xsIHdp
dGggdGhlIGNvbnRlbnQuCi0gICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LnN0eWxlKCkucG9z
aXRpb24oKSAhPSBQb3NpdGlvblR5cGU6OkZpeGVkKQotICAgICAgICAgICAgYWRkT3ZlcmZsb3dG
cm9tQ2hpbGQocG9zaXRpb25lZE9iamVjdCwgeyBwb3NpdGlvbmVkT2JqZWN0LngoKSwgcG9zaXRp
b25lZE9iamVjdC55KCkgfSk7CisgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHlsZSgp
LnBvc2l0aW9uKCkgIT0gUG9zaXRpb25UeXBlOjpGaXhlZCkKKyAgICAgICAgICAgIGFkZE92ZXJm
bG93RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QsIHsgcG9zaXRpb25lZE9iamVjdC0+eCgpLCBw
b3NpdGlvbmVkT2JqZWN0LT55KCkgfSk7CiAgICAgfQogfQogCkBAIC03NjEsOCArNzYxLDggQEAg
dm9pZCBSZW5kZXJCbG9jazo6YWRkVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoKQogICAgIHRoZW1l
KCkuYWRqdXN0UmVwYWludFJlY3QoKnRoaXMsIGluZmxhdGVkUmVjdCk7CiAgICAgYWRkVmlzdWFs
T3ZlcmZsb3coc25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChpbmZsYXRlZFJlY3QpKSk7CiAKLSAg
ICBpZiAoYXV0byogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpKQot
ICAgICAgICBmcmFnbWVudGVkRmxvdy0+YWRkRnJhZ21lbnRzVmlzdWFsT3ZlcmZsb3dGcm9tVGhl
bWUoKnRoaXMpOworICAgIGlmIChSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cg
PSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpKQorICAgICAgICBmcmFnbWVudGVkRmxvdy0+YWRk
RnJhZ21lbnRzVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUodGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVy
QmxvY2s6OnNldExvZ2ljYWxMZWZ0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgYXBwbHlEZWx0YSkKQEAgLTgxMSwx
NCArODExLDE1IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRpcnR5Rm9yTGF5b3V0RnJvbVBlcmNlbnRh
Z2VIZWlnaHREZXNjZW5kYW50cygpCiAgICAgaWYgKCFwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNN
YXApCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGRlc2NlbmRhbnRzID0gcGVyY2VudEhl
aWdodERlc2NlbmRhbnRzTWFwLT5nZXQoKnRoaXMpOworICAgIFRyYWNrZWRSZW5kZXJlckxpc3RI
YXNoU2V0KiBkZXNjZW5kYW50cyA9IHBlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+Z2V0KHRo
aXMpOwogICAgIGlmICghZGVzY2VuZGFudHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAo
YXV0byYgZGVzY2VuZGFudCA6ICpkZXNjZW5kYW50cykgeworICAgIGZvciAoYXV0byBpdCA9IGRl
c2NlbmRhbnRzLT5iZWdpbigpLCBlbmQgPSBkZXNjZW5kYW50cy0+ZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9ICppdDsKICAgICAgICAg
Ly8gTGV0J3Mgbm90IGRpcnR5IHRoZSBoZWlnaHQgcGVyZWNlbnRhZ2UgZGVzY2VuZGFudCB3aGVu
IGl0IGhhcyBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgY29udGFpbmluZyBibG9jayBhbmNlc3Rv
ci4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlydHkgc3VjaCBib3hlcyB0aHJvdWdoIHRoZSByZWd1
bGFyIGludmFsaWRhdGlvbiBsb2dpYy4KICAgICAgICAgYm9vbCBkZXNjZW5kYW50TmVlZHNMYXlv
dXQgPSB0cnVlOwotICAgICAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gZGVzY2VuZGFudC5jb250
YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0gdGhpczsgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBhbmNlc3Rv
ciA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0g
dGhpczsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAg
ICAgIGlmIChhbmNlc3Rvci0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAg
ICAgICBkZXNjZW5kYW50TmVlZHNMYXlvdXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTgyNyw3ICs4MjgsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpkaXJ0eUZvckxheW91dEZy
b21QZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHMoKQogICAgICAgICBpZiAoIWRlc2NlbmRhbnRO
ZWVkc0xheW91dCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyID0gJmRlc2NlbmRhbnQ7CiAgICAgICAgIHdoaWxlIChyZW5kZXJlciAhPSB0
aGlzKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vcm1hbENoaWxkTmVlZHNMYXlvdXQo
KSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzAsOCArMTAzMCw4IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
Ym9vbCBmaXhlZFBvc2l0CiAgICAgCiAgICAgLy8gRG8gbm90IGNhY2hlIHBvc2l0aW9uZWREZXNj
ZW5kYW50cy0+ZW5kKCkgaW4gYSBsb2NhbCB2YXJpYWJsZSwgc2luY2UgfHBvc2l0aW9uZWREZXNj
ZW5kYW50c3wgY2FuIGJlIG11dGF0ZWQKICAgICAvLyBhcyBpdCBpcyB3YWxrZWQuIFdlIGFsd2F5
cyBuZWVkIHRvIGZldGNoIHRoZSBuZXcgZW5kKCkgdmFsdWUgZHluYW1pY2FsbHkuCi0gICAgZm9y
IChhdXRvJiBkZXNjZW5kYW50IDogKnBvc2l0aW9uZWREZXNjZW5kYW50cykKLSAgICAgICAgbGF5
b3V0UG9zaXRpb25lZE9iamVjdChkZXNjZW5kYW50LCByZWxheW91dENoaWxkcmVuLCBmaXhlZFBv
c2l0aW9uT2JqZWN0c09ubHkpOworICAgIGZvciAoYXV0byBpdCA9IHBvc2l0aW9uZWREZXNjZW5k
YW50cy0+YmVnaW4oKTsgaXQgIT0gcG9zaXRpb25lZERlc2NlbmRhbnRzLT5lbmQoKTsgKytpdCkK
KyAgICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdCgqKml0LCByZWxheW91dENoaWxkcmVuLCBm
aXhlZFBvc2l0aW9uT2JqZWN0c09ubHkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjptYXJrUG9z
aXRpb25lZE9iamVjdHNGb3JMYXlvdXQoKQpAQCAtMTA0MCw4ICsxMDQwLDEwIEBAIHZvaWQgUmVu
ZGVyQmxvY2s6Om1hcmtQb3NpdGlvbmVkT2JqZWN0c0ZvckxheW91dCgpCiAgICAgaWYgKCFwb3Np
dGlvbmVkRGVzY2VuZGFudHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgZGVz
Y2VuZGFudCA6ICpwb3NpdGlvbmVkRGVzY2VuZGFudHMpCi0gICAgICAgIGRlc2NlbmRhbnQuc2V0
Q2hpbGROZWVkc0xheW91dCgpOworICAgIGZvciAoYXV0byBpdCA9IHBvc2l0aW9uZWREZXNjZW5k
YW50cy0+YmVnaW4oKSwgZW5kID0gcG9zaXRpb25lZERlc2NlbmRhbnRzLT5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIFJlbmRlckJveCogciA9ICppdDsKKyAgICAgICAgci0+c2V0
Q2hpbGROZWVkc0xheW91dCgpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6bWFya0Zv
clBhZ2luYXRpb25SZWxheW91dElmTmVlZGVkKCkKQEAgLTEzMjYsNyArMTMyOCw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgICAgICAvLyBhbm9ueW1vdXMgYmxvY2sgKGkuZS4g
aGF2ZSBvdXIgb3duIGxheWVyKSwgcGFpbnQgdGhlbSBzdHJhaWdodGF3YXkgaW5zdGVhZC4gVGhp
cyBpcyBiZWNhdXNlIGEgYmxvY2sgZGVwZW5kcyBvbiByZW5kZXJlcnMgaW4gaXRzIGNvbnRpbnVh
dGlvbiB0YWJsZSBiZWluZwogICAgICAgICAgICAgLy8gaW4gdGhlIHNhbWUgbGF5ZXIuIAogICAg
ICAgICAgICAgaWYgKCFpbmxpbmVFbmNsb3NlZEluU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWhhc0xh
eWVyKCkpCi0gICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5hZGRDb250aW51YXRpb25X
aXRoT3V0bGluZSgqaW5saW5lUmVuZGVyZXIpOworICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdC
bG9jay0+YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoaW5saW5lUmVuZGVyZXIpOwogICAgICAg
ICAgICAgZWxzZSBpZiAoIUlubGluZUl0ZXJhdG9yOjpmaXJzdElubGluZUJveEZvcigqaW5saW5l
UmVuZGVyZXIpIHx8ICghaW5saW5lRW5jbG9zZWRJblNlbGZQYWludGluZ0xheWVyICYmIGhhc0xh
eWVyKCkpKQogICAgICAgICAgICAgICAgIGlubGluZVJlbmRlcmVyLT5wYWludE91dGxpbmUocGFp
bnRJbmZvLCBwYWludE9mZnNldCAtIGxvY2F0aW9uT2Zmc2V0KCkgKyBpbmxpbmVSZW5kZXJlci0+
Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkpOwogICAgICAgICB9CkBAIC0xMzQ1LDQ0ICsx
MzQ3LDU2IEBAIHN0YXRpYyBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXAqIGNvbnRpbnVhdGlv
bk91dGxpbmVUYWJsZSgpCiAgICAgcmV0dXJuICZ0YWJsZS5nZXQoKTsKIH0KIAotdm9pZCBSZW5k
ZXJCbG9jazo6YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5saW5lJiBmbG93KQor
dm9pZCBSZW5kZXJCbG9jazo6YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5saW5l
KiBmbG93KQogewogICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyB3b3JrIGlmIHRoZSBpbmxpbmUg
aXMgaW4gYSBsYXllci4gIFdlJ2xsIGp1c3QgcmVseSBvbiB0aGUgYnJva2VuCiAgICAgLy8gd2F5
IG9mIHBhaW50aW5nLgotICAgIEFTU0VSVCghZmxvdy5sYXllcigpICYmICFmbG93LmlzQ29udGlu
dWF0aW9uKCkpOworICAgIEFTU0VSVCghZmxvdy0+bGF5ZXIoKSAmJiAhZmxvdy0+aXNDb250aW51
YXRpb24oKSk7CiAgICAgCi0gICAgYXV0byogdGFibGUgPSBjb250aW51YXRpb25PdXRsaW5lVGFi
bGUoKTsKLSAgICBhdXRvKiBjb250aW51YXRpb25zID0gdGFibGUtPmdldCgqdGhpcyk7CisgICAg
Q29udGludWF0aW9uT3V0bGluZVRhYmxlTWFwKiB0YWJsZSA9IGNvbnRpbnVhdGlvbk91dGxpbmVU
YWJsZSgpOworICAgIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBjb250aW51YXRpb25zID0g
dGFibGUtPmdldCh0aGlzKTsKICAgICBpZiAoIWNvbnRpbnVhdGlvbnMpIHsKLSAgICAgICAgYXV0
byBuZXdTZXQgPSBtYWtlVW5pcXVlPFdlYWtMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmU+PigpOwot
ICAgICAgICBjb250aW51YXRpb25zID0gbmV3U2V0LmdldCgpOwotICAgICAgICB0YWJsZS0+c2V0
KCp0aGlzLCBXVEZNb3ZlKG5ld1NldCkpOworICAgICAgICBjb250aW51YXRpb25zID0gbmV3IExp
c3RIYXNoU2V0PFJlbmRlcklubGluZSo+OworICAgICAgICB0YWJsZS0+c2V0KHRoaXMsIHN0ZDo6
dW5pcXVlX3B0cjxMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPj4oY29udGludWF0aW9ucykpOwog
ICAgIH0KICAgICAKICAgICBjb250aW51YXRpb25zLT5hZGQoZmxvdyk7CiB9CiAKLWJvb2wgUmVu
ZGVyQmxvY2s6OnBhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUoUmVuZGVySW5saW5lJiBmbG93KQor
Ym9vbCBSZW5kZXJCbG9jazo6cGFpbnRzQ29udGludWF0aW9uT3V0bGluZShSZW5kZXJJbmxpbmUq
IGZsb3cpCiB7Ci0gICAgYXV0byogY29udGludWF0aW9ucyA9IGNvbnRpbnVhdGlvbk91dGxpbmVU
YWJsZSgpLT5nZXQoKnRoaXMpOwotICAgIHJldHVybiBjb250aW51YXRpb25zICYmIGNvbnRpbnVh
dGlvbnMtPmNvbnRhaW5zKGZsb3cpOworICAgIENvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcCog
dGFibGUgPSBjb250aW51YXRpb25PdXRsaW5lVGFibGUoKTsKKyAgICBpZiAodGFibGUtPmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBMaXN0SGFzaFNldDxS
ZW5kZXJJbmxpbmUqPiogY29udGludWF0aW9ucyA9IHRhYmxlLT5nZXQodGhpcyk7CisgICAgaWYg
KCFjb250aW51YXRpb25zKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29u
dGludWF0aW9ucy0+Y29udGFpbnMoZmxvdyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50
Q29udGludWF0aW9uT3V0bGluZXMoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCiB7Ci0gICAgYXV0byBjb250aW51YXRpb25zID0gY29udGludWF0aW9uT3V0
bGluZVRhYmxlKCktPnRha2UoKnRoaXMpOworICAgIENvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1h
cCogdGFibGUgPSBjb250aW51YXRpb25PdXRsaW5lVGFibGUoKTsKKyAgICBpZiAodGFibGUtPmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4+IGNvbnRpbnVhdGlvbnMgPSB0YWJsZS0+dGFrZSh0
aGlzKTsKICAgICBpZiAoIWNvbnRpbnVhdGlvbnMpCiAgICAgICAgIHJldHVybjsKIAogICAgIExh
eW91dFBvaW50IGFjY3VtdWxhdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldDsKICAgICAvLyBQ
YWludCBlYWNoIGNvbnRpbnVhdGlvbiBvdXRsaW5lLgotICAgIGZvciAoYXV0byYgZmxvdyA6ICpj
b250aW51YXRpb25zKSB7CisgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj46Oml0ZXJhdG9y
IGVuZCA9IGNvbnRpbnVhdGlvbnMtPmVuZCgpOworICAgIGZvciAoTGlzdEhhc2hTZXQ8UmVuZGVy
SW5saW5lKj46Oml0ZXJhdG9yIGl0ID0gY29udGludWF0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgIC8vIE5lZWQgdG8gYWRkIGluIHRoZSBjb29yZGluYXRlcyBvZiB0
aGUgaW50ZXJ2ZW5pbmcgYmxvY2tzLgotICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBmbG93
LmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICBSZW5kZXJJbmxpbmUqIGZsb3cgPSAqaXQ7Cisg
ICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IGZsb3ctPmNvbnRhaW5pbmdCbG9jaygpOwogICAg
ICAgICBmb3IgKCA7IGJsb2NrICYmIGJsb2NrICE9IHRoaXM7IGJsb2NrID0gYmxvY2stPmNvbnRh
aW5pbmdCbG9jaygpKQogICAgICAgICAgICAgYWNjdW11bGF0ZWRQYWludE9mZnNldC5tb3ZlQnko
YmxvY2stPmxvY2F0aW9uKCkpOwogICAgICAgICBBU1NFUlQoYmxvY2spOyAgIAotICAgICAgICBm
bG93LnBhaW50T3V0bGluZShpbmZvLCBhY2N1bXVsYXRlZFBhaW50T2Zmc2V0KTsKKyAgICAgICAg
Zmxvdy0+cGFpbnRPdXRsaW5lKGluZm8sIGFjY3VtdWxhdGVkUGFpbnRPZmZzZXQpOwogICAgIH0K
IH0KIApAQCAtMTQ3Miw4ICsxNDg2LDExIEBAIHN0YXRpYyB2b2lkIGNsaXBPdXRQb3NpdGlvbmVk
T2JqZWN0cyhjb25zdCBQYWludEluZm8qIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pCiAgICAg
aWYgKCFwb3NpdGlvbmVkT2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZvciAo
YXV0byYgciA6ICpwb3NpdGlvbmVkT2JqZWN0cykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0
KCkuY2xpcE91dChJbnRSZWN0KG9mZnNldC54KCkgKyByLngoKSwgb2Zmc2V0LnkoKSArIHIueSgp
LCByLndpZHRoKCksIHIuaGVpZ2h0KCkpKTsKKyAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNl
dDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOworICAgIGZv
ciAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcG9zaXRp
b25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZW5kZXJC
b3gqIHIgPSAqaXQ7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmNsaXBPdXQoSW50UmVj
dChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgpICsgci0+eSgpLCByLT53aWR0aCgpLCBy
LT5oZWlnaHQoKSkpOworICAgIH0KIH0KIAogTGF5b3V0VW5pdCBibG9ja0RpcmVjdGlvbk9mZnNl
dChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dEJsb2NrKQpAQCAtMTc2MCwyNiArMTc3NywyNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVQ
b3NpdGlvbmVkT2JqZWN0cyhjb25zdCBSZW5kZXJCbG9jayogbmV3Q29udGFpbmluZ0Jsb2NrQwog
ICAgIGlmICghcG9zaXRpb25lZERlc2NlbmRhbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgVmVjdG9yPFdlYWtQdHI8UmVuZGVyQm94PiwgMTY+IHJlbmRlcmVyc1RvUmVtb3ZlOwotICAg
IGZvciAoYXV0byYgcmVuZGVyZXIgOiAqcG9zaXRpb25lZERlc2NlbmRhbnRzKSB7Ci0gICAgICAg
IGlmIChuZXdDb250YWluaW5nQmxvY2tDYW5kaWRhdGUgJiYgIXJlbmRlcmVyLmlzRGVzY2VuZGFu
dE9mKG5ld0NvbnRhaW5pbmdCbG9ja0NhbmRpZGF0ZSkpCisgICAgVmVjdG9yPFJlbmRlckJveCos
IDE2PiByZW5kZXJlcnNUb1JlbW92ZTsKKyAgICBmb3IgKGF1dG8qIHJlbmRlcmVyIDogKnBvc2l0
aW9uZWREZXNjZW5kYW50cykgeworICAgICAgICBpZiAobmV3Q29udGFpbmluZ0Jsb2NrQ2FuZGlk
YXRlICYmICFyZW5kZXJlci0+aXNEZXNjZW5kYW50T2YobmV3Q29udGFpbmluZ0Jsb2NrQ2FuZGlk
YXRlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZW5kZXJlcnNUb1JlbW92ZS5h
cHBlbmQocmVuZGVyZXIpOwogICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrU3RhdGUgPT0gTmV3
Q29udGFpbmluZ0Jsb2NrKSB7Ci0gICAgICAgICAgICByZW5kZXJlci5zZXRDaGlsZE5lZWRzTGF5
b3V0KE1hcmtPbmx5VGhpcyk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyZXIubmVlZHNQcmVmZXJy
ZWRXaWR0aHNSZWNhbGN1bGF0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIuc2V0UHJl
ZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KHRydWUsIE1hcmtPbmx5VGhpcyk7CisgICAgICAgICAg
ICByZW5kZXJlci0+c2V0Q2hpbGROZWVkc0xheW91dChNYXJrT25seVRoaXMpOworICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyLT5uZWVkc1ByZWZlcnJlZFdpZHRoc1JlY2FsY3VsYXRpb24oKSkKKyAg
ICAgICAgICAgICAgICByZW5kZXJlci0+c2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KHRy
dWUsIE1hcmtPbmx5VGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgLy8gSXQgaXMgdGhlIHBhcmVu
dCBibG9jaydzIGpvYiB0byBhZGQgcG9zaXRpb25lZCBjaGlsZHJlbiB0byBwb3NpdGlvbmVkIG9i
amVjdHMgbGlzdCBvZiBpdHMgY29udGFpbmluZyBibG9jay4KICAgICAgICAgLy8gRGlydHkgdGhl
IHBhcmVudCB0byBlbnN1cmUgdGhpcyBoYXBwZW5zLiBXZSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJl
IHRoZSBuZXcgY29udGFpbmluZyBibG9jayBpcyBkaXJ0eSBhcyB3ZWxsIHNvCiAgICAgICAgIC8v
IHRoYXQgaXQgZ2V0cyB0byB0aGVzZSBuZXcgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBh
dXRvKiBwYXJlbnQgPSByZW5kZXJlci5wYXJlbnQoKTsKKyAgICAgICAgYXV0byogcGFyZW50ID0g
cmVuZGVyZXItPnBhcmVudCgpOwogICAgICAgICB3aGlsZSAocGFyZW50ICYmICFpczxSZW5kZXJC
bG9jaz4ocGFyZW50KSkKICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50KCk7CiAg
ICAgICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICBwYXJlbnQtPnNldENoaWxkTmVlZHNMYXlv
dXQoKTsKIAotICAgICAgICBpZiAocmVuZGVyZXIuaXNGaXhlZFBvc2l0aW9uZWQoKSkKKyAgICAg
ICAgaWYgKHJlbmRlcmVyLT5pc0ZpeGVkUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgdmlldygp
LnNldE5lZWRzTGF5b3V0KCk7CiAgICAgICAgIGVsc2UgaWYgKGF1dG8qIG5ld0NvbnRhaW5pbmdC
bG9jayA9IGNvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgICAgICAvLyBEdXJpbmcgc3R5bGUg
Y2hhbmdlLCBhdCB0aGlzIHBvaW50IHRoZSByZW5kZXJlcidzIGNvbnRhaW5pbmcgYmxvY2sgaXMg
c3RpbGwgInRoaXMiIHJlbmRlcmVyLCBhbmQgInRoaXMiIHJlbmRlcmVyIGlzIHN0aWxsIHBvc2l0
aW9uZWQuCkBAIC0xNzkwLDcgKzE4MDcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVQb3Np
dGlvbmVkT2JqZWN0cyhjb25zdCBSZW5kZXJCbG9jayogbmV3Q29udGFpbmluZ0Jsb2NrQwogICAg
ICAgICAgICAgICAgIG5ld0NvbnRhaW5pbmdCbG9jay0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICBmb3IgKGF1dG8mIHJlbmRlcmVyIDogcmVuZGVyZXJzVG9SZW1vdmUp
CisgICAgZm9yIChhdXRvKiByZW5kZXJlciA6IHJlbmRlcmVyc1RvUmVtb3ZlKQogICAgICAgICBy
ZW1vdmVQb3NpdGlvbmVkT2JqZWN0KCpyZW5kZXJlcik7CiB9CiAKQEAgLTE4MDYsNyArMTgyMyw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZVBlcmNlbnRIZWlnaHREZXNjZW5kYW50KFJlbmRl
ckJveCYgZGVzY2VuZGFudCkKIAogVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQqIFJlbmRlckJs
b2NrOjpwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMoKSBjb25zdAogewotICAgIHJldHVybiBwZXJj
ZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAgPyBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmdl
dCgqdGhpcykgOiBudWxscHRyOworICAgIHJldHVybiBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNN
YXAgPyBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmdldCh0aGlzKSA6IG51bGxwdHI7CiB9
CiAKIGJvb2wgUmVuZGVyQmxvY2s6Omhhc1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAoKQpAQCAt
MTgyMCw3ICsxODM3LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzUGVyY2VudEhlaWdodERlc2Nl
bmRhbnQoUmVuZGVyQm94JiBkZXNjZW5kYW50KQogICAgIC8vIGFscmVhZHkgZW5zdXJlcyB0aGlz
IGFuZCB3ZSBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBvbiBldmVyeQogICAgIC8vIGRlc2Nl
bmRhbnQgaW4gY2xlYXJQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNGcm9tKCkuCiAgICAgQVNTRVJU
KHBlcmNlbnRIZWlnaHRDb250YWluZXJNYXApOwotICAgIHJldHVybiBwZXJjZW50SGVpZ2h0Q29u
dGFpbmVyTWFwLT5jb250YWlucyhkZXNjZW5kYW50KTsKKyAgICByZXR1cm4gcGVyY2VudEhlaWdo
dENvbnRhaW5lck1hcC0+Y29udGFpbnMoJmRlc2NlbmRhbnQpOwogfQogCiB2b2lkIFJlbmRlckJs
b2NrOjpyZW1vdmVQZXJjZW50SGVpZ2h0RGVzY2VuZGFudElmTmVlZGVkKFJlbmRlckJveCYgZGVz
Y2VuZGFudCkKQEAgLTI3NjIsNyArMjc3OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRl
UXVhZHNJZ25vcmluZ0NvbnRpbnVhdGlvbihjb25zdCBGbG9hdFJlY3QmIGxvZ2ljYWxSZWN0CiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIGJsb2NrLWZsb3dzIHRoYXQgYXJlIGhvcml6
b250YWwuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
NzgxCiAgICAgYXV0byogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygp
OwotICAgIGlmICghZnJhZ21lbnRlZEZsb3cgfHwgIWZyYWdtZW50ZWRGbG93LT5hYnNvbHV0ZVF1
YWRzRm9yQm94KHF1YWRzLCB3YXNGaXhlZCwgKnRoaXMpKQorICAgIGlmICghZnJhZ21lbnRlZEZs
b3cgfHwgIWZyYWdtZW50ZWRGbG93LT5hYnNvbHV0ZVF1YWRzRm9yQm94KHF1YWRzLCB3YXNGaXhl
ZCwgdGhpcykpCiAgICAgICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKGxvZ2lj
YWxSZWN0LCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogfQogCkBAIC0yOTUzLDEzICsyOTcw
LDEzIEBAIGJvb2wgUmVuZGVyQmxvY2s6OnVwZGF0ZUZyYWdtZW50UmFuZ2VGb3JCb3hDaGlsZChj
b25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKIAogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVy
KiBzdGFydEZyYWdtZW50ID0gbnVsbHB0cjsKICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciog
ZW5kRnJhZ21lbnQgPSBudWxscHRyOwotICAgIGZyYWdtZW50ZWRGbG93LT5nZXRGcmFnbWVudFJh
bmdlRm9yQm94KGJveCwgc3RhcnRGcmFnbWVudCwgZW5kRnJhZ21lbnQpOworICAgIGZyYWdtZW50
ZWRGbG93LT5nZXRGcmFnbWVudFJhbmdlRm9yQm94KCZib3gsIHN0YXJ0RnJhZ21lbnQsIGVuZEZy
YWdtZW50KTsKIAogICAgIGNvbXB1dGVGcmFnbWVudFJhbmdlRm9yQm94Q2hpbGQoYm94KTsKIAog
ICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBuZXdTdGFydEZyYWdtZW50ID0gbnVsbHB0cjsK
ICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogbmV3RW5kRnJhZ21lbnQgPSBudWxscHRyOwot
ICAgIGZyYWdtZW50ZWRGbG93LT5nZXRGcmFnbWVudFJhbmdlRm9yQm94KGJveCwgbmV3U3RhcnRG
cmFnbWVudCwgbmV3RW5kRnJhZ21lbnQpOworICAgIGZyYWdtZW50ZWRGbG93LT5nZXRGcmFnbWVu
dFJhbmdlRm9yQm94KCZib3gsIG5ld1N0YXJ0RnJhZ21lbnQsIG5ld0VuZEZyYWdtZW50KTsKIAog
CiAgICAgLy8gQ2hhbmdpbmcgdGhlIHN0YXJ0IGZyYWdtZW50IG1lYW5zIHdlIHNoaWZ0IGV2ZXJ5
dGhpbmcgYW5kIGEgcmVsYXlvdXQgaXMgbmVlZGVkLgpAQCAtMzE0OCw4ICszMTY1LDggQEAgdm9p
ZCBSZW5kZXJCbG9jazo6Y2hlY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQoKQogICAgIGlm
ICghcG9zaXRpb25lZERlc2NlbmRhbnRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1
dG8mIHJlbmRlcmVyIDogKnBvc2l0aW9uZWREZXNjZW5kYW50cykKLSAgICAgICAgQVNTRVJUKCFy
ZW5kZXJlci5uZWVkc0xheW91dCgpKTsKKyAgICBmb3IgKGF1dG8qIHJlbmRlcmVyIDogKnBvc2l0
aW9uZWREZXNjZW5kYW50cykKKyAgICAgICAgQVNTRVJUKCFyZW5kZXJlci0+bmVlZHNMYXlvdXQo
KSk7CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCAxOGRmZTU3YmE1MGMuLmVmYmY4OTc0NTRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9XZWFrTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hT
ZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFJl
bmRlclRleHQ7CiBzdHJ1Y3QgQmlkaVJ1bjsKIHN0cnVjdCBQYWludEluZm87CiAKLXVzaW5nIFRy
YWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0ID0gV2Vha0xpc3RIYXNoU2V0PFJlbmRlckJveD47Cit0
eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlckJveCo+IFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0
OwogCiBlbnVtIENhcmV0VHlwZSB7IEN1cnNvckNhcmV0LCBEcmFnQ2FyZXQgfTsKIGVudW0gQ29u
dGFpbmluZ0Jsb2NrU3RhdGUgeyBOZXdDb250YWluaW5nQmxvY2ssIFNhbWVDb250YWluaW5nQmxv
Y2sgfTsKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIFRyYWNrZWRSZW5kZXJlckxpc3RI
YXNoU2V0KiBwb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0OwogICAgIGJvb2wgaGFzUG9zaXRpb25l
ZE9iamVjdHMoKSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byogb2JqZWN0cyA9IHBvc2l0aW9u
ZWRPYmplY3RzKCk7Ci0gICAgICAgIHJldHVybiBvYmplY3RzICYmICFvYmplY3RzLT5pc0VtcHR5
SWdub3JpbmdOdWxsUmVmZXJlbmNlcygpOworICAgICAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFz
aFNldCogb2JqZWN0cyA9IHBvc2l0aW9uZWRPYmplY3RzKCk7CisgICAgICAgIHJldHVybiBvYmpl
Y3RzICYmICFvYmplY3RzLT5pc0VtcHR5KCk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRQZXJjZW50
SGVpZ2h0RGVzY2VuZGFudChSZW5kZXJCb3gmKTsKQEAgLTkyLDggKzkyLDggQEAgcHVibGljOgog
ICAgIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0KiBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMo
KSBjb25zdDsKICAgICBib29sIGhhc1BlcmNlbnRIZWlnaHREZXNjZW5kYW50cygpIGNvbnN0CiAg
ICAgewotICAgICAgICBhdXRvKiBvYmplY3RzID0gcGVyY2VudEhlaWdodERlc2NlbmRhbnRzKCk7
Ci0gICAgICAgIHJldHVybiBvYmplY3RzICYmICFvYmplY3RzLT5pc0VtcHR5SWdub3JpbmdOdWxs
UmVmZXJlbmNlcygpOworICAgICAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogb2JqZWN0
cyA9IHBlcmNlbnRIZWlnaHREZXNjZW5kYW50cygpOworICAgICAgICByZXR1cm4gb2JqZWN0cyAm
JiAhb2JqZWN0cy0+aXNFbXB0eSgpOwogICAgIH0KICAgICBzdGF0aWMgYm9vbCBoYXNQZXJjZW50
SGVpZ2h0Q29udGFpbmVyTWFwKCk7CiAgICAgc3RhdGljIGJvb2wgaGFzUGVyY2VudEhlaWdodERl
c2NlbmRhbnQoUmVuZGVyQm94Jik7CkBAIC0xNjYsOCArMTY2LDggQEAgcHVibGljOgogCiAgICAg
TGF5b3V0UmVjdCBsb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KGNvbnN0IExheW91dFBvaW50JiBw
aHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBsb2dpY2FsUmVjdCk7CiAKLSAgICB2
b2lkIGFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKFJlbmRlcklubGluZSYpOwotICAgIGJvb2wg
cGFpbnRzQ29udGludWF0aW9uT3V0bGluZShSZW5kZXJJbmxpbmUmKTsKKyAgICB2b2lkIGFkZENv
bnRpbnVhdGlvbldpdGhPdXRsaW5lKFJlbmRlcklubGluZSopOworICAgIGJvb2wgcGFpbnRzQ29u
dGludWF0aW9uT3V0bGluZShSZW5kZXJJbmxpbmUqKTsKIAogICAgIHN0YXRpYyBSZW5kZXJQdHI8
UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXko
Y29uc3QgUmVuZGVyQm94JiBwYXJlbnQsIERpc3BsYXlUeXBlID0gRGlzcGxheVR5cGU6OkJsb2Nr
KTsKICAgICBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c0Jsb2NrKERpc3Bs
YXlUeXBlID0gRGlzcGxheVR5cGU6OkJsb2NrKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggMzU2ZGUzMTcyYmRjLi4yZTQ1N2UwMjcw
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBA
IC0xOTksMTQgKzE5OSwxNCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVidWlsZEZsb2F0aW5n
T2JqZWN0U2V0RnJvbUludHJ1ZGluZ0Zsb2F0cygpCiAgICAgaWYgKG1fZmxvYXRpbmdPYmplY3Rz
KQogICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0SG9yaXpvbnRhbFdyaXRpbmdNb2RlKGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpOwogCi0gICAgV2Vha0hhc2hTZXQ8UmVuZGVyQm94PiBv
bGRJbnRydWRpbmdGbG9hdFNldDsKKyAgICBIYXNoU2V0PFJlbmRlckJveCo+IG9sZEludHJ1ZGlu
Z0Zsb2F0U2V0OwogICAgIGlmICghY2hpbGRyZW5JbmxpbmUoKSAmJiBtX2Zsb2F0aW5nT2JqZWN0
cykgewogICAgICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQg
PSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgICAgIGF1dG8gZW5kID0gZmxvYXRpbmdP
YmplY3RTZXQuZW5kKCk7CiAgICAgICAgIGZvciAoYXV0byBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgRmxvYXRpbmdPYmplY3Qq
IGZsb2F0aW5nT2JqZWN0ID0gaXQtPmdldCgpOwogICAgICAgICAgICAgaWYgKCFmbG9hdGluZ09i
amVjdC0+aXNEZXNjZW5kYW50KCkpCi0gICAgICAgICAgICAgICAgb2xkSW50cnVkaW5nRmxvYXRT
ZXQuYWRkKGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgICBvbGRJ
bnRydWRpbmdGbG9hdFNldC5hZGQoJmZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpy
ZWJ1aWxkRmxvYXRpbmdPYmplY3RTZXRGcm9tSW50cnVkaW5nRmxvYXRzKCkKICAgICBpZiAoYXZv
aWRzRmxvYXRzKCkgfHwgaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIHx8IGlzUmVuZGVyVmll
dygpIHx8IGlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBpc1RhYmxlQ2VsbCgp
KSB7CiAgICAgICAgIGlmIChtX2Zsb2F0aW5nT2JqZWN0cykKICAgICAgICAgICAgIG1fZmxvYXRp
bmdPYmplY3RzLT5jbGVhcigpOwotICAgICAgICBpZiAoIW9sZEludHJ1ZGluZ0Zsb2F0U2V0Lmlz
RW1wdHlJZ25vcmluZ051bGxSZWZlcmVuY2VzKCkpCisgICAgICAgIGlmICghb2xkSW50cnVkaW5n
RmxvYXRTZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgbWFya0FsbERlc2NlbmRhbnRzV2l0aEZs
b2F0c0ZvckxheW91dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA0LDE3ICszMDQs
MTcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlYnVpbGRGbG9hdGluZ09iamVjdFNldEZyb21J
bnRydWRpbmdGbG9hdHMoKQogICAgICAgICB9CiAKICAgICAgICAgbWFya0xpbmVzRGlydHlJbkJs
b2NrUmFuZ2UoY2hhbmdlTG9naWNhbFRvcCwgY2hhbmdlTG9naWNhbEJvdHRvbSk7Ci0gICAgfSBl
bHNlIGlmICghb2xkSW50cnVkaW5nRmxvYXRTZXQuaXNFbXB0eUlnbm9yaW5nTnVsbFJlZmVyZW5j
ZXMoKSkgeworICAgIH0gZWxzZSBpZiAoIW9sZEludHJ1ZGluZ0Zsb2F0U2V0LmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgcHJldmlvdXNseSBpbnRydWRpbmcgZmxvYXRzIHRo
YXQgbm8gbG9uZ2VyIGludHJ1ZGUsIHRoZW4gY2hpbGRyZW4gd2l0aCBmbG9hdHMKICAgICAgICAg
Ly8gc2hvdWxkIGFsc28gZ2V0IGxheW91dCBiZWNhdXNlIHRoZXkgbWlnaHQgbmVlZCB0aGVpciBm
bG9hdGluZyBvYmplY3QgbGlzdHMgY2xlYXJlZC4KLSAgICAgICAgaWYgKG1fZmxvYXRpbmdPYmpl
Y3RzLT5zZXQoKS5zaXplKCkgPCBvbGRJbnRydWRpbmdGbG9hdFNldC5jb21wdXRlU2l6ZSgpKQor
ICAgICAgICBpZiAobV9mbG9hdGluZ09iamVjdHMtPnNldCgpLnNpemUoKSA8IG9sZEludHJ1ZGlu
Z0Zsb2F0U2V0LnNpemUoKSkKICAgICAgICAgICAgIG1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9h
dHNGb3JMYXlvdXQoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBGbG9hdGlu
Z09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7
CiAgICAgICAgICAgICBhdXRvIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwotICAgICAg
ICAgICAgZm9yIChhdXRvIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5k
ICYmICFvbGRJbnRydWRpbmdGbG9hdFNldC5pc0VtcHR5SWdub3JpbmdOdWxsUmVmZXJlbmNlcygp
OyArK2l0KQotICAgICAgICAgICAgICAgIG9sZEludHJ1ZGluZ0Zsb2F0U2V0LnJlbW92ZSgoKml0
KS0+cmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpZiAoIW9sZEludHJ1ZGluZ0Zsb2F0U2V0Lmlz
RW1wdHlJZ25vcmluZ051bGxSZWZlcmVuY2VzKCkpCisgICAgICAgICAgICBmb3IgKGF1dG8gaXQg
PSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQgJiYgIW9sZEludHJ1ZGluZ0Zs
b2F0U2V0LmlzRW1wdHkoKTsgKytpdCkKKyAgICAgICAgICAgICAgICBvbGRJbnRydWRpbmdGbG9h
dFNldC5yZW1vdmUoJigqaXQpLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIGlmICghb2xkSW50
cnVkaW5nRmxvYXRTZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIG1hcmtBbGxEZXNjZW5k
YW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTkzOCw3ICs5
MzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQo
KQogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkVXBkYXRlT3ZlcmZsb3cgPSBmYWxzZTsKLSAgICBX
ZWFrTGlzdEhhc2hTZXQ8TGVnYWN5Um9vdElubGluZUJveD4gbGluZUJveGVzOworICAgIExpc3RI
YXNoU2V0PExlZ2FjeVJvb3RJbmxpbmVCb3gqPiBsaW5lQm94ZXM7CiAgICAgZm9yIChJbmxpbmVX
YWxrZXIgd2Fsa2VyKCp0aGlzKTsgIXdhbGtlci5hdEVuZCgpOyB3YWxrZXIuYWR2YW5jZSgpKSB7
CiAgICAgICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIgPSAqd2Fsa2VyLmN1cnJlbnQoKTsKICAg
ICAgICAgaWYgKCFyZW5kZXJlci5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVuZGVyZXIu
aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSB8fCByZW5kZXJlci5pc0Zsb2F0aW5nKCkpKSB7CkBA
IC05NDYsNyArOTQ2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNpbXBsaWZpZWROb3JtYWxG
bG93TGF5b3V0KCkKICAgICAgICAgICAgIGJveC5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICAg
ICAgc2hvdWxkVXBkYXRlT3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgaWYgKGJveC5pbmxp
bmVCb3hXcmFwcGVyKCkpCi0gICAgICAgICAgICAgICAgbGluZUJveGVzLmFkZChib3guaW5saW5l
Qm94V3JhcHBlcigpLT5yb290KCkpOworICAgICAgICAgICAgICAgIGxpbmVCb3hlcy5hZGQoJmJv
eC5pbmxpbmVCb3hXcmFwcGVyKCktPnJvb3QoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVu
ZGVyVGV4dD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlcklubGluZT4ocmVuZGVyZXIpKQogICAgICAg
ICAgICAgcmVuZGVyZXIuY2xlYXJOZWVkc0xheW91dCgpOwogICAgIH0KQEAgLTk2MCw4ICs5NjAs
MTAgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCkK
ICAgICB9CiAKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0
YU1hcDsKLSAgICBmb3IgKGF1dG8mIGJveCA6IGxpbmVCb3hlcykKLSAgICAgICAgYm94LmNvbXB1
dGVPdmVyZmxvdyhib3gubGluZVRvcCgpLCBib3gubGluZUJvdHRvbSgpLCB0ZXh0Qm94RGF0YU1h
cCk7CisgICAgZm9yIChhdXRvIGl0ID0gbGluZUJveGVzLmJlZ2luKCksIGVuZCA9IGxpbmVCb3hl
cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gq
IGJveCA9ICppdDsKKyAgICAgICAgYm94LT5jb21wdXRlT3ZlcmZsb3coYm94LT5saW5lVG9wKCks
IGJveC0+bGluZUJvdHRvbSgpLCB0ZXh0Qm94RGF0YU1hcCk7CisgICAgfQogfQogCiB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6Y29tcHV0ZUFuZFNldExpbmVMYXlvdXRQYXRoKCkKQEAgLTIxNTgsNyAr
MjE2MCw3IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpoYXNOZXh0UGFnZShMYXlvdXRVbml0IGxv
Z2ljYWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgcGFnCiAKICAgICBSZW5kZXJGcmFnbWVudENv
bnRhaW5lciogc3RhcnRGcmFnbWVudCA9IG51bGxwdHI7CiAgICAgUmVuZGVyRnJhZ21lbnRDb250
YWluZXIqIGVuZEZyYWdtZW50ID0gbnVsbHB0cjsKLSAgICBmcmFnbWVudGVkRmxvdy0+Z2V0RnJh
Z21lbnRSYW5nZUZvckJveCgqdGhpcywgc3RhcnRGcmFnbWVudCwgZW5kRnJhZ21lbnQpOworICAg
IGZyYWdtZW50ZWRGbG93LT5nZXRGcmFnbWVudFJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0RnJhZ21l
bnQsIGVuZEZyYWdtZW50KTsKICAgICByZXR1cm4gKGVuZEZyYWdtZW50ICYmIGZyYWdtZW50ICE9
IGVuZEZyYWdtZW50KTsKIH0KIApAQCAtMjUwOSw3ICsyNTExLDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmFkZE92ZXJmbG93RnJvbUZsb2F0cygpCiAgICAgZm9yIChhdXRvIGl0ID0gZmxvYXRp
bmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IGF1
dG8mIGZsb2F0aW5nT2JqZWN0ID0gKml0LT5nZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2Jq
ZWN0LmlzRGVzY2VuZGFudCgpKQotICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoZmxv
YXRpbmdPYmplY3QucmVuZGVyZXIoKSwgZmxvYXRpbmdPYmplY3QubG9jYXRpb25PZmZzZXRPZkJv
cmRlckJveCgpKTsKKyAgICAgICAgICAgIGFkZE92ZXJmbG93RnJvbUNoaWxkKCZmbG9hdGluZ09i
amVjdC5yZW5kZXJlcigpLCBmbG9hdGluZ09iamVjdC5sb2NhdGlvbk9mZnNldE9mQm9yZGVyQm94
KCkpOwogICAgIH0KIH0KIApAQCAtMzE1NCw3ICszMTU2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
bG9ja0Zsb3c6OmFkZE92ZXJoYW5naW5nRmxvYXRzKFJlbmRlckJsb2NrRmxvdyYgY2hpbGQsIGJv
b2wgbWEKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGZsb2F0IGRvZXNu
J3Qgb3ZlcmhhbmcsIGl0IGRpZG4ndCBnZXQgcHV0IGludG8gb3VyIGxpc3QuIFdlIG5lZWQgdG8g
YWRkIGl0cyBvdmVyZmxvdyBpbiB0byB0aGUgY2hpbGQgbm93LgogICAgICAgICAgICAgaWYgKGZs
b2F0aW5nT2JqZWN0LmlzRGVzY2VuZGFudCgpKQotICAgICAgICAgICAgICAgIGNoaWxkLmFkZE92
ZXJmbG93RnJvbUNoaWxkKHJlbmRlcmVyLCBmbG9hdGluZ09iamVjdC5sb2NhdGlvbk9mZnNldE9m
Qm9yZGVyQm94KCkpOworICAgICAgICAgICAgICAgIGNoaWxkLmFkZE92ZXJmbG93RnJvbUNoaWxk
KCZyZW5kZXJlciwgZmxvYXRpbmdPYmplY3QubG9jYXRpb25PZmZzZXRPZkJvcmRlckJveCgpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBmNjE4ODdkZTRjODYuLmRh
M2Y5OTUxOGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTIw
Nyw3ICsyMDcsNyBAQCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogUmVuZGVyQm94OjpjbGFtcFRv
U3RhcnRBbmRFbmRGcmFnbWVudHMoUmVuZGVyRnJhZ21lbnRDbwogICAgIC8vIHRoZXkgb3ZlcmZs
b3cgaW50bywgd2hpY2ggbWFrZXMgbm8gc2Vuc2Ugd2hlbiB0aGlzIGJsb2NrIGRvZXNuJ3QgZXhp
c3QgaW4gfGZyYWdtZW50fCBhdCBhbGwuCiAgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIHN0
YXJ0RnJhZ21lbnQgPSBudWxscHRyOwogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBlbmRG
cmFnbWVudCA9IG51bGxwdHI7Ci0gICAgaWYgKCFmcmFnbWVudGVkRmxvdy0+Z2V0RnJhZ21lbnRS
YW5nZUZvckJveCgqdGhpcywgc3RhcnRGcmFnbWVudCwgZW5kRnJhZ21lbnQpKQorICAgIGlmICgh
ZnJhZ21lbnRlZEZsb3ctPmdldEZyYWdtZW50UmFuZ2VGb3JCb3godGhpcywgc3RhcnRGcmFnbWVu
dCwgZW5kRnJhZ21lbnQpKQogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAKICAgICBpZiAoZnJh
Z21lbnQtPmxvZ2ljYWxUb3BGb3JGcmFnbWVudGVkRmxvd0NvbnRlbnQoKSA8IHN0YXJ0RnJhZ21l
bnQtPmxvZ2ljYWxUb3BGb3JGcmFnbWVudGVkRmxvd0NvbnRlbnQoKSkKQEAgLTIyNyw5ICsyMjcs
MTIgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc0ZyYWdtZW50UmFuZ2VJbkZyYWdtZW50ZWRGbG93KCkg
Y29uc3QKICAgICByZXR1cm4gZnJhZ21lbnRlZEZsb3ctPmhhc0NhY2hlZEZyYWdtZW50UmFuZ2VG
b3JCb3goKnRoaXMpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpZW50Qm94UmVjdElu
RnJhZ21lbnQoY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXImIGZyYWdtZW50KSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaWVudEJveFJlY3RJbkZyYWdtZW50KGNvbnN0IFJlbmRl
ckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCkgY29uc3QKIHsKLSAgICBMYXlvdXRSZWN0IGNs
aWVudEJveCA9IGJvcmRlckJveFJlY3RJbkZyYWdtZW50KCZmcmFnbWVudCk7CisgICAgaWYgKCFm
cmFnbWVudCkKKyAgICAgICAgcmV0dXJuIGNsaWVudEJveFJlY3QoKTsKKworICAgIExheW91dFJl
Y3QgY2xpZW50Qm94ID0gYm9yZGVyQm94UmVjdEluRnJhZ21lbnQoZnJhZ21lbnQpOwogICAgIGNs
aWVudEJveC5zZXRMb2NhdGlvbihjbGllbnRCb3gubG9jYXRpb24oKSArIExheW91dFNpemUoYm9y
ZGVyTGVmdCgpLCBib3JkZXJUb3AoKSkpOwogICAgIGNsaWVudEJveC5zZXRTaXplKGNsaWVudEJv
eC5zaXplKCkgLSBMYXlvdXRTaXplKGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyB2ZXJ0
aWNhbFNjcm9sbGJhcldpZHRoKCksIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCkgKyBob3Jp
em9udGFsU2Nyb2xsYmFySGVpZ2h0KCkpKTsKIApAQCAtNjUxLDcgKzY1NCw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojpib3VuZGluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1CiB2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFJlbmRlckZyYWdt
ZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7Ci0g
ICAgaWYgKGZyYWdtZW50ZWRGbG93ICYmIGZyYWdtZW50ZWRGbG93LT5hYnNvbHV0ZVF1YWRzRm9y
Qm94KHF1YWRzLCB3YXNGaXhlZCwgKnRoaXMpKQorICAgIGlmIChmcmFnbWVudGVkRmxvdyAmJiBm
cmFnbWVudGVkRmxvdy0+YWJzb2x1dGVRdWFkc0ZvckJveChxdWFkcywgd2FzRml4ZWQsIHRoaXMp
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGxvY2FsUmVjdCA9IEZsb2F0UmVjdCB7IDAs
IDAsIHdpZHRoKCksIGhlaWdodCgpIH07CkBAIC00OTg3LDcgKzQ5OTAsNyBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCwgY29uc3QgUmVuZAogICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxS
ZW5kZXJCb3g+KCp0aGlzKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyRnJhZ21lbnRlZEZsb3c+
KCp0aGlzKSkgewogICAgICAgICAgICAgQVNTRVJUKGZyYWdtZW50KTsKLSAgICAgICAgICAgIGlm
ICghZG93bmNhc3Q8UmVuZGVyRnJhZ21lbnRlZEZsb3c+KCp0aGlzKS5vYmplY3RTaG91bGRGcmFn
bWVudEluRmxvd0ZyYWdtZW50KHJlbmRlcmVyLCBmcmFnbWVudCkpCisgICAgICAgICAgICBpZiAo
IWRvd25jYXN0PFJlbmRlckZyYWdtZW50ZWRGbG93PigqdGhpcykub2JqZWN0U2hvdWxkRnJhZ21l
bnRJbkZsb3dGcmFnbWVudCgmcmVuZGVyZXIsIGZyYWdtZW50KSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCkBAIC01MDk0LDcgKzUwOTcsNyBAQCB2b2lkIFJlbmRlckJv
eDo6YWRkVmlzdWFsRWZmZWN0T3ZlcmZsb3coKQogICAgIGFkZFZpc3VhbE92ZXJmbG93KGFwcGx5
VmlzdWFsRWZmZWN0T3ZlcmZsb3coYm9yZGVyQm94UmVjdCgpKSk7CiAKICAgICBpZiAoYXV0byog
ZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpKQotICAgICAgICBmcmFn
bWVudGVkRmxvdy0+YWRkRnJhZ21lbnRzVmlzdWFsRWZmZWN0T3ZlcmZsb3coKnRoaXMpOworICAg
ICAgICBmcmFnbWVudGVkRmxvdy0+YWRkRnJhZ21lbnRzVmlzdWFsRWZmZWN0T3ZlcmZsb3codGhp
cyk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyQm94OjphcHBseVZpc3VhbEVmZmVjdE92ZXJmbG93
KGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkgY29uc3QKQEAgLTUxNDEsMjAgKzUxNDQsMjAg
QEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmFwcGx5VmlzdWFsRWZmZWN0T3ZlcmZsb3coY29uc3Qg
TGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb24KICAgICByZXR1cm4gTGF5b3V0UmVjdChvdmVyZmxv
d01pblgsIG92ZXJmbG93TWluWSwgb3ZlcmZsb3dNYXhYIC0gb3ZlcmZsb3dNaW5YLCBvdmVyZmxv
d01heFkgLSBvdmVyZmxvd01pblkpOwogfQogCi12b2lkIFJlbmRlckJveDo6YWRkT3ZlcmZsb3dG
cm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEp
Cit2b2lkIFJlbmRlckJveDo6YWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBj
aGlsZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEpCiB7CiAgICAgLy8gTmV2ZXIgYWxsb3cgZmxv
dyB0aHJlYWRzIHRvIHByb3BhZ2F0ZSBvdmVyZmxvdyB1cCB0byBhIHBhcmVudC4KLSAgICBpZiAo
Y2hpbGQuaXNSZW5kZXJGcmFnbWVudGVkRmxvdygpKQorICAgIGlmIChjaGlsZC0+aXNSZW5kZXJG
cmFnbWVudGVkRmxvdygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBmcmFnbWVudGVk
RmxvdyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7CisgICAgUmVuZGVyRnJhZ21lbnRlZEZs
b3cqIGZyYWdtZW50ZWRGbG93ID0gZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKICAgICBpZiAo
ZnJhZ21lbnRlZEZsb3cpCi0gICAgICAgIGZyYWdtZW50ZWRGbG93LT5hZGRGcmFnbWVudHNPdmVy
Zmxvd0Zyb21DaGlsZCgqdGhpcywgY2hpbGQsIGRlbHRhKTsKKyAgICAgICAgZnJhZ21lbnRlZEZs
b3ctPmFkZEZyYWdtZW50c092ZXJmbG93RnJvbUNoaWxkKHRoaXMsIGNoaWxkLCBkZWx0YSk7CiAK
ICAgICAvLyBPbmx5IHByb3BhZ2F0ZSBsYXlvdXQgb3ZlcmZsb3cgZnJvbSB0aGUgY2hpbGQgaWYg
dGhlIGNoaWxkIGlzbid0IGNsaXBwaW5nIGl0cyBvdmVyZmxvdy4gIElmIGl0IGlzLCB0aGVuCiAg
ICAgLy8gaXRzIG92ZXJmbG93IGlzIGludGVybmFsIHRvIGl0LCBhbmQgd2UgZG9uJ3QgY2FyZSBh
Ym91dCBpdC4gbGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24gdGFrZXMgY2FyZSBvZiB0
aGlzCiAgICAgLy8gYW5kIGp1c3QgcHJvcGFnYXRlcyB0aGUgYm9yZGVyIGJveCByZWN0IGluc3Rl
YWQuCi0gICAgTGF5b3V0UmVjdCBjaGlsZExheW91dE92ZXJmbG93UmVjdCA9IGNoaWxkLmxheW91
dE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKCZzdHlsZSgpKTsKKyAgICBMYXlvdXRSZWN0IGNo
aWxkTGF5b3V0T3ZlcmZsb3dSZWN0ID0gY2hpbGQtPmxheW91dE92ZXJmbG93UmVjdEZvclByb3Bh
Z2F0aW9uKCZzdHlsZSgpKTsKICAgICBjaGlsZExheW91dE92ZXJmbG93UmVjdC5tb3ZlKGRlbHRh
KTsKICAgICBhZGRMYXlvdXRPdmVyZmxvdyhjaGlsZExheW91dE92ZXJmbG93UmVjdCk7CiAKQEAg
LTUxNjksMTcgKzUxNzIsMTcgQEAgdm9pZCBSZW5kZXJCb3g6OmFkZE92ZXJmbG93RnJvbUNoaWxk
KGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGQKIAogICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0UmVjdD4gY2hpbGRWaXN1YWxPdmVyZmxvd1JlY3Q7CiAgICAgYXV0byBj
b21wdXRlQ2hpbGRWaXN1YWxPdmVyZmxvd1JlY3QgPSBbJl0gKCkgewotICAgICAgICBjaGlsZFZp
c3VhbE92ZXJmbG93UmVjdCA9IGNoaWxkLnZpc3VhbE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9u
KCZzdHlsZSgpKTsKKyAgICAgICAgY2hpbGRWaXN1YWxPdmVyZmxvd1JlY3QgPSBjaGlsZC0+dmlz
dWFsT3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oJnN0eWxlKCkpOwogICAgICAgICBjaGlsZFZp
c3VhbE92ZXJmbG93UmVjdC0+bW92ZShkZWx0YSk7CiAgICAgfTsKICAgICAvLyBJZiB0aGlzIGJs
b2NrIGlzIGZsb3dlZCBpbnNpZGUgYSBmbG93IHRocmVhZCwgbWFrZSBzdXJlIGl0cyBvdmVyZmxv
dyBpcyBwcm9wYWdhdGVkIHRvIHRoZSBjb250YWluaW5nIGZyYWdtZW50cy4KICAgICBpZiAoZnJh
Z21lbnRlZEZsb3cpIHsKICAgICAgICAgY29tcHV0ZUNoaWxkVmlzdWFsT3ZlcmZsb3dSZWN0KCk7
Ci0gICAgICAgIGZyYWdtZW50ZWRGbG93LT5hZGRGcmFnbWVudHNWaXN1YWxPdmVyZmxvdygqdGhp
cywgKmNoaWxkVmlzdWFsT3ZlcmZsb3dSZWN0KTsKKyAgICAgICAgZnJhZ21lbnRlZEZsb3ctPmFk
ZEZyYWdtZW50c1Zpc3VhbE92ZXJmbG93KHRoaXMsICpjaGlsZFZpc3VhbE92ZXJmbG93UmVjdCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVXBkYXRlIG91ciB2aXN1YWwgb3ZlcmZsb3cgaW4g
Y2FzZSB0aGUgY2hpbGQgc3BpbGxzIG91dCB0aGUgYmxvY2ssIGJ1dCBvbmx5IGlmIHdlIHdlcmUg
Z29pbmcgdG8gcGFpbnQKICAgICAgICAgLy8gdGhlIGNoaWxkIGJsb2NrIG91cnNlbHZlcy4KLSAg
ICAgICAgaWYgKGNoaWxkLmhhc1NlbGZQYWludGluZ0xheWVyKCkpCisgICAgICAgIGlmIChjaGls
ZC0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKCFjaGlsZFZpc3VhbE92ZXJmbG93UmVjdCkKQEAgLTUyMzgsOCArNTI0MSw5IEBAIHZv
aWQgUmVuZGVyQm94OjphZGRWaXN1YWxPdmVyZmxvdyhjb25zdCBMYXlvdXRSZWN0JiByZWN0KQog
dm9pZCBSZW5kZXJCb3g6OmNsZWFyT3ZlcmZsb3coKQogewogICAgIG1fb3ZlcmZsb3cgPSBudWxs
cHRyOwotICAgIGlmIChhdXRvKiBmcmFnbWVudGVkRmxvdyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRG
bG93KCkpCi0gICAgICAgIGZyYWdtZW50ZWRGbG93LT5jbGVhckZyYWdtZW50c092ZXJmbG93KCp0
aGlzKTsKKyAgICBSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3Np
bmdGcmFnbWVudGVkRmxvdygpOworICAgIGlmIChmcmFnbWVudGVkRmxvdykKKyAgICAgICAgZnJh
Z21lbnRlZEZsb3ctPmNsZWFyRnJhZ21lbnRzT3ZlcmZsb3codGhpcyk7CiB9CiAgICAgCiBib29s
IFJlbmRlckJveDo6cGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGJkODY2NmJkYjAxYy4uYjk0ZGEy
ZWJmNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0xNzAsOCArMTcw
LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkVmlzdWFsRWZmZWN0T3ZlcmZsb3coKTsK
ICAgICBMYXlvdXRSZWN0IGFwcGx5VmlzdWFsRWZmZWN0T3ZlcmZsb3coY29uc3QgTGF5b3V0UmVj
dCYpIGNvbnN0OwotICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94
JiBjaGlsZCkgeyBhZGRPdmVyZmxvd0Zyb21DaGlsZChjaGlsZCwgY2hpbGQubG9jYXRpb25PZmZz
ZXQoKSk7IH0KLSAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKTsKKyAgICB2b2lkIGFkZE92ZXJmbG93RnJv
bUNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIHsgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY2hp
bGQsIGNoaWxkLT5sb2NhdGlvbk9mZnNldCgpKTsgfQorICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9t
Q2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEpOwog
CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRl
clN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+KSBjb25zdCBvdmVycmlkZTsKIApAQCAt
MzU1LDcgKzM1NSw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gUmVuZGVyQm94RnJhZ21lbnRJbmZv
RmxhZ3MgeyBDYWNoZVJlbmRlckJveEZyYWdtZW50SW5mbywgRG9Ob3RDYWNoZVJlbmRlckJveEZy
YWdtZW50SW5mbyB9OwogICAgIExheW91dFJlY3QgYm9yZGVyQm94UmVjdEluRnJhZ21lbnQoY29u
c3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqLCBSZW5kZXJCb3hGcmFnbWVudEluZm9GbGFncyA9
IENhY2hlUmVuZGVyQm94RnJhZ21lbnRJbmZvKSBjb25zdDsKLSAgICBMYXlvdXRSZWN0IGNsaWVu
dEJveFJlY3RJbkZyYWdtZW50KGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyJikgY29uc3Q7
CisgICAgTGF5b3V0UmVjdCBjbGllbnRCb3hSZWN0SW5GcmFnbWVudChjb25zdCBSZW5kZXJGcmFn
bWVudENvbnRhaW5lciopIGNvbnN0OwogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBjbGFt
cFRvU3RhcnRBbmRFbmRGcmFnbWVudHMoUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBjb25zdDsK
ICAgICBib29sIGhhc0ZyYWdtZW50UmFuZ2VJbkZyYWdtZW50ZWRGbG93KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmlu
ZGV4IDYzODlhYzU0ZGJiYS4uYmQ1OTdkYmY2ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTIxMzgsOCArMjEzOCw4IEBAIGJvb2wg
UmVuZGVyRmxleGlibGVCb3g6OmNoaWxkSGFzUGVyY2VudEhlaWdodERlc2NlbmRhbnRzKGNvbnN0
IFJlbmRlckJveCYgcmVuZGVyCiAgICAgLy8gcmV0dXJuIGZhbHNlIGZvciBhIGNoaWxkIG9mIGEg
PGJ1dHRvbj4gd2l0aCBhIHBlcmNlbnRhZ2UgaGVpZ2h0LgogICAgIGlmIChoYXNQZXJjZW50SGVp
Z2h0RGVzY2VuZGFudHMoKSAmJiBza2lwQ29udGFpbmluZ0Jsb2NrRm9yUGVyY2VudEhlaWdodENh
bGN1bGF0aW9uKHJlbmRlcmVyLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IHJlbmRlcmVy
LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpKSB7CiAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnRz
ID0gKnBlcmNlbnRIZWlnaHREZXNjZW5kYW50cygpOwotICAgICAgICBmb3IgKGF1dG8mIGRlc2Nl
bmRhbnQgOiBkZXNjZW5kYW50cykgewotICAgICAgICAgICAgaWYgKHJlbmRlckJsb2NrLmlzQ29u
dGFpbmluZ0Jsb2NrQW5jZXN0b3JGb3IoZGVzY2VuZGFudCkpCisgICAgICAgIGZvciAoYXV0byog
ZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyQmxvY2su
aXNDb250YWluaW5nQmxvY2tBbmNlc3RvckZvcigqZGVzY2VuZGFudCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCBi
b29sIFJlbmRlckZsZXhpYmxlQm94OjpjaGlsZEhhc1BlcmNlbnRIZWlnaHREZXNjZW5kYW50cyhj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcgogCiAgICAgZm9yIChhdXRvIGl0ID0gcGVyY2VudEhlaWdo
dERlc2NlbmRhbnRzLT5iZWdpbigpLCBlbmQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMtPmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgYm9vbCBoYXNPdXRPZkZsb3dBbmNlc3Rv
ciA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gKCppdCkuY29udGFpbmlu
Z0Jsb2NrKCk7IGFuY2VzdG9yICYmIGFuY2VzdG9yICE9ICZyZW5kZXJCbG9jazsgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBhbmNl
c3RvciA9ICgqaXQpLT5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0g
JnJlbmRlckJsb2NrOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgewog
ICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAg
ICAgICAgICAgICAgIGhhc091dE9mRmxvd0FuY2VzdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFn
bWVudENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21l
bnRDb250YWluZXIuY3BwCmluZGV4IDViNjFlNjIzZDhmNC4uNGQwZGFjYzgyMTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5j
cHAKQEAgLTQwNiwxMiArNDA2LDEyIEBAIHZvaWQgUmVuZGVyRnJhZ21lbnRDb250YWluZXI6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzRGlydHkoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjplbnN1
cmVPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgUmVmUHRyPFJlbmRlck92ZXJm
bG93PiYgb3ZlcmZsb3csIGJvb2wgZm9yY2VDcmVhdGlvbikgY29uc3QKK3ZvaWQgUmVuZGVyRnJh
Z21lbnRDb250YWluZXI6OmVuc3VyZU92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94
LCBSZWZQdHI8UmVuZGVyT3ZlcmZsb3c+JiBvdmVyZmxvdywgYm9vbCBmb3JjZUNyZWF0aW9uKSBj
b25zdAogewogICAgIEFTU0VSVChtX2ZyYWdtZW50ZWRGbG93LT5yZW5kZXJGcmFnbWVudENvbnRh
aW5lckxpc3QoKS5jb250YWlucygqdGhpcykpOwogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0g
ICAgYXV0byogYm94SW5mbyA9IHJlbmRlckJveEZyYWdtZW50SW5mbygmYm94KTsKKyAgICBSZW5k
ZXJCb3hGcmFnbWVudEluZm8qIGJveEluZm8gPSByZW5kZXJCb3hGcmFnbWVudEluZm8oYm94KTsK
ICAgICBpZiAoIWJveEluZm8gJiYgIWZvcmNlQ3JlYXRpb24pCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDIwLDE0ICs0MjAsMTQgQEAgdm9pZCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6ZW5zdXJl
T3ZlcmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIFJlZlB0cjwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBMYXlvdXRSZWN0IGJvcmRlckJveCA9IGJveC5ib3JkZXJC
b3hSZWN0SW5GcmFnbWVudCh0aGlzKTsKKyAgICBMYXlvdXRSZWN0IGJvcmRlckJveCA9IGJveC0+
Ym9yZGVyQm94UmVjdEluRnJhZ21lbnQodGhpcyk7CiAgICAgTGF5b3V0UmVjdCBjbGllbnRCb3g7
CiAgICAgQVNTRVJUKG1fZnJhZ21lbnRlZEZsb3ctPm9iamVjdFNob3VsZEZyYWdtZW50SW5GbG93
RnJhZ21lbnQoYm94LCB0aGlzKSk7CiAKICAgICBpZiAoIWJvcmRlckJveC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYm9yZGVyQm94ID0gcmVjdEZsb3dQb3J0aW9uRm9yQm94KGJveCwgYm9yZGVyQm94
KTsKICAgICAgICAgCi0gICAgICAgIGNsaWVudEJveCA9IGJveC5jbGllbnRCb3hSZWN0SW5GcmFn
bWVudCgqdGhpcyk7CisgICAgICAgIGNsaWVudEJveCA9IGJveC0+Y2xpZW50Qm94UmVjdEluRnJh
Z21lbnQodGhpcyk7CiAgICAgICAgIGNsaWVudEJveCA9IHJlY3RGbG93UG9ydGlvbkZvckJveChi
b3gsIGNsaWVudEJveCk7CiAgICAgICAgIAogICAgICAgICBtX2ZyYWdtZW50ZWRGbG93LT5mbGlw
Rm9yV3JpdGluZ01vZGVMb2NhbENvb3JkaW5hdGVzKGJvcmRlckJveCk7CkBAIC00NDEsNyArNDQx
LDcgQEAgdm9pZCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6ZW5zdXJlT3ZlcmZsb3dGb3JCb3go
Y29uc3QgUmVuZGVyQm94JiBib3gsIFJlZlB0cjwKICAgICAgICAgb3ZlcmZsb3cgPSBhZG9wdFJl
ZihuZXcgUmVuZGVyT3ZlcmZsb3coY2xpZW50Qm94LCBib3JkZXJCb3gpKTsKIH0KIAotTGF5b3V0
UmVjdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6cmVjdEZsb3dQb3J0aW9uRm9yQm94KGNvbnN0
IFJlbmRlckJveCYgYm94LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KSBjb25zdAorTGF5b3V0UmVj
dCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6cmVjdEZsb3dQb3J0aW9uRm9yQm94KGNvbnN0IFJl
bmRlckJveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIExheW91
dFJlY3QgbWFwcGVkUmVjdCA9IG1fZnJhZ21lbnRlZEZsb3ctPm1hcEZyb21Mb2NhbFRvRnJhZ21l
bnRlZEZsb3coYm94LCByZWN0KTsKIApAQCAtNDY0LDcgKzQ2NCw3IEBAIExheW91dFJlY3QgUmVu
ZGVyRnJhZ21lbnRDb250YWluZXI6OnJlY3RGbG93UG9ydGlvbkZvckJveChjb25zdCBSZW5kZXJC
b3gmIGJveCwKICAgICByZXR1cm4gbV9mcmFnbWVudGVkRmxvdy0+bWFwRnJvbUZyYWdtZW50ZWRG
bG93VG9Mb2NhbChib3gsIG1hcHBlZFJlY3QpOwogfQogCi12b2lkIFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyOjphZGRMYXlvdXRPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyRnJhZ21lbnRDb250YWluZXI6OmFkZExh
eW91dE92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0KQogewogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDc4LDcgKzQ3OCw3IEBAIHZvaWQgUmVuZGVyRnJhZ21lbnRDb250YWluZXI6OmFkZExheW91dE92
ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zCiAgICAgZnJhZ21lbnRPdmVy
Zmxvdy0+YWRkTGF5b3V0T3ZlcmZsb3cocmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyRnJhZ21lbnRD
b250YWluZXI6OmFkZFZpc3VhbE92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBj
b25zdCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6YWRk
VmlzdWFsT3ZlcmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IExheW91dFJl
Y3QmIHJlY3QpCiB7CiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBA
IC01MDMsNyArNTAzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6dmlz
dWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGNvbnN0IFJlbmRlckJveE1vZGUKIAogICAgIGlmIChpczxS
ZW5kZXJCb3g+KGJveCkpIHsKICAgICAgICAgUmVmUHRyPFJlbmRlck92ZXJmbG93PiBvdmVyZmxv
dzsKLSAgICAgICAgZW5zdXJlT3ZlcmZsb3dGb3JCb3goZG93bmNhc3Q8UmVuZGVyQm94Pihib3gp
LCBvdmVyZmxvdywgdHJ1ZSk7CisgICAgICAgIGVuc3VyZU92ZXJmbG93Rm9yQm94KCZkb3duY2Fz
dDxSZW5kZXJCb3g+KGJveCksIG92ZXJmbG93LCB0cnVlKTsKIAogICAgICAgICBBU1NFUlQob3Zl
cmZsb3cpOwogICAgICAgICByZXR1cm4gb3ZlcmZsb3ctPnZpc3VhbE92ZXJmbG93UmVjdCgpOwpA
QCAtNTE0LDI1ICs1MTQsMjUgQEAgTGF5b3V0UmVjdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6
dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGNvbnN0IFJlbmRlckJveE1vZGUKIH0KIAogLy8gRklY
TUU6IFRoaXMgZG9lc24ndCB3b3JrIGZvciB3cml0aW5nIG1vZGVzLgotTGF5b3V0UmVjdCBSZW5k
ZXJGcmFnbWVudENvbnRhaW5lcjo6bGF5b3V0T3ZlcmZsb3dSZWN0Rm9yQm94Rm9yUHJvcGFnYXRp
b24oY29uc3QgUmVuZGVyQm94JiBib3gpCitMYXlvdXRSZWN0IFJlbmRlckZyYWdtZW50Q29udGFp
bmVyOjpsYXlvdXRPdmVyZmxvd1JlY3RGb3JCb3hGb3JQcm9wYWdhdGlvbihjb25zdCBSZW5kZXJC
b3gqIGJveCkKIHsKICAgICAvLyBPbmx5IHByb3BhZ2F0ZSBpbnRlcmlvciBsYXlvdXQgb3ZlcmZs
b3cgaWYgd2UgZG9uJ3QgY2xpcCBpdC4KLSAgICBMYXlvdXRSZWN0IHJlY3QgPSBib3guYm9yZGVy
Qm94UmVjdEluRnJhZ21lbnQodGhpcyk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gYm94LT5ib3Jk
ZXJCb3hSZWN0SW5GcmFnbWVudCh0aGlzKTsKICAgICByZWN0ID0gcmVjdEZsb3dQb3J0aW9uRm9y
Qm94KGJveCwgcmVjdCk7Ci0gICAgaWYgKCFib3guaGFzTm9uVmlzaWJsZU92ZXJmbG93KCkpIHsK
KyAgICBpZiAoIWJveC0+aGFzTm9uVmlzaWJsZU92ZXJmbG93KCkpIHsKICAgICAgICAgUmVmUHRy
PFJlbmRlck92ZXJmbG93PiBvdmVyZmxvdzsKICAgICAgICAgZW5zdXJlT3ZlcmZsb3dGb3JCb3go
Ym94LCBvdmVyZmxvdywgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChvdmVyZmxvdyk7CiAgICAgICAg
IHJlY3QudW5pdGUob3ZlcmZsb3ctPmxheW91dE92ZXJmbG93UmVjdCgpKTsKICAgICB9CiAKLSAg
ICBib29sIGhhc1RyYW5zZm9ybSA9IGJveC5pc1RyYW5zZm9ybWVkKCk7Ci0gICAgaWYgKGJveC5p
c0luRmxvd1Bvc2l0aW9uZWQoKSB8fCBoYXNUcmFuc2Zvcm0pIHsKKyAgICBib29sIGhhc1RyYW5z
Zm9ybSA9IGJveC0+aXNUcmFuc2Zvcm1lZCgpOworICAgIGlmIChib3gtPmlzSW5GbG93UG9zaXRp
b25lZCgpIHx8IGhhc1RyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQotICAg
ICAgICAgICAgcmVjdCA9IGJveC5sYXllcigpLT5jdXJyZW50VHJhbnNmb3JtKCkubWFwUmVjdChy
ZWN0KTsKKyAgICAgICAgICAgIHJlY3QgPSBib3gtPmxheWVyKCktPmN1cnJlbnRUcmFuc2Zvcm0o
KS5tYXBSZWN0KHJlY3QpOwogCi0gICAgICAgIGlmIChib3guaXNJbkZsb3dQb3NpdGlvbmVkKCkp
Ci0gICAgICAgICAgICByZWN0Lm1vdmUoYm94Lm9mZnNldEZvckluRmxvd1Bvc2l0aW9uKCkpOwor
ICAgICAgICBpZiAoYm94LT5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIHJlY3Qu
bW92ZShib3gtPm9mZnNldEZvckluRmxvd1Bvc2l0aW9uKCkpOwogICAgIH0KIAogICAgIHJldHVy
biByZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdt
ZW50Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRD
b250YWluZXIuaAppbmRleCBlMjBkMmQ0OWFmZWQuLjkxNDE1YTRmNjNiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmgKQEAgLTEw
MSwxMyArMTAxLDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0TGF5ZXJG
cmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0
UmVjdCYpIHsgfQogCi0gICAgdm9pZCBhZGRMYXlvdXRPdmVyZmxvd0ZvckJveChjb25zdCBSZW5k
ZXJCb3gmLCBjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgdm9pZCBhZGRWaXN1YWxPdmVyZmxvd0Zv
ckJveChjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBhZGRM
YXlvdXRPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gqLCBjb25zdCBMYXlvdXRSZWN0Jik7
CisgICAgdm9pZCBhZGRWaXN1YWxPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gqLCBjb25z
dCBMYXlvdXRSZWN0Jik7CiAgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3go
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmKSBjb25zdDsKLSAgICBMYXlvdXRSZWN0IGxheW91
dE92ZXJmbG93UmVjdEZvckJveEZvclByb3BhZ2F0aW9uKGNvbnN0IFJlbmRlckJveCYpOworICAg
IExheW91dFJlY3QgbGF5b3V0T3ZlcmZsb3dSZWN0Rm9yQm94Rm9yUHJvcGFnYXRpb24oY29uc3Qg
UmVuZGVyQm94Kik7CiAgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3hGb3JQ
cm9wYWdhdGlvbihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYpOwogCi0gICAgTGF5b3V0UmVj
dCByZWN0Rmxvd1BvcnRpb25Gb3JCb3goY29uc3QgUmVuZGVyQm94JiwgY29uc3QgTGF5b3V0UmVj
dCYpIGNvbnN0OworICAgIExheW91dFJlY3QgcmVjdEZsb3dQb3J0aW9uRm9yQm94KGNvbnN0IFJl
bmRlckJveCosIGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldEZy
YWdtZW50T2JqZWN0c0ZyYWdtZW50U3R5bGUoKTsKICAgICB2b2lkIHJlc3RvcmVGcmFnbWVudE9i
amVjdHNPcmlnaW5hbFN0eWxlKCk7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJvdGVjdGVkOgogICAg
IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBSZW5kZXJG
cmFnbWVudGVkRmxvdyopOwogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKERvY3VtZW50Jiwg
UmVuZGVyU3R5bGUmJiwgUmVuZGVyRnJhZ21lbnRlZEZsb3cqKTsKIAotICAgIHZvaWQgZW5zdXJl
T3ZlcmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94JiwgUmVmUHRyPFJlbmRlck92ZXJmbG93PiYs
IGJvb2wpIGNvbnN0OworICAgIHZvaWQgZW5zdXJlT3ZlcmZsb3dGb3JCb3goY29uc3QgUmVuZGVy
Qm94KiwgUmVmUHRyPFJlbmRlck92ZXJmbG93PiYsIGJvb2wpIGNvbnN0OwogCiAgICAgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0
ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlv
dXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKaW5kZXggYTA0Y2ZhYTcx
NTViLi5jZmZkNTRkNWUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYWdtZW50ZWRGbG93LmNwcApAQCAtMjIwLDEzICsyMjAsMTMgQEAgdm9pZCBSZW5kZXJG
cmFnbWVudGVkRmxvdzo6cmVwYWludFJlY3RhbmdsZUluRnJhZ21lbnRzKGNvbnN0IExheW91dFJl
Y3QmIHJlcGFpbnQKICAgICAgICAgZnJhZ21lbnQucmVwYWludEZyYWdtZW50ZWRGbG93Q29udGVu
dChyZXBhaW50UmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmFic29sdXRl
UXVhZHNGb3JCb3goVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCwgY29u
c3QgUmVuZGVyQm94JiBib3gpIGNvbnN0Citib29sIFJlbmRlckZyYWdtZW50ZWRGbG93OjphYnNv
bHV0ZVF1YWRzRm9yQm94KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQs
IGNvbnN0IFJlbmRlckJveCogYm94KSBjb25zdAogewogICAgIGlmICghaGFzVmFsaWRGcmFnbWVu
dEluZm8oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBib3hSZWN0ID0gRmxv
YXRSZWN0IHsgeyB9LCBib3guc2l6ZSgpIH07Ci0gICAgYXV0byBib3hSZWN0SW5GbG93Q29vcmRp
bmF0ZXMgPSBMYXlvdXRSZWN0IHsgYm94LmxvY2FsVG9Db250YWluZXJRdWFkKGJveFJlY3QsIHRo
aXMpLmJvdW5kaW5nQm94KCkgfTsKKyAgICBhdXRvIGJveFJlY3QgPSBGbG9hdFJlY3QgeyB7IH0s
IGJveC0+c2l6ZSgpIH07CisgICAgYXV0byBib3hSZWN0SW5GbG93Q29vcmRpbmF0ZXMgPSBMYXlv
dXRSZWN0IHsgYm94LT5sb2NhbFRvQ29udGFpbmVyUXVhZChib3hSZWN0LCB0aGlzKS5ib3VuZGlu
Z0JveCgpIH07CiAKICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogc3RhcnRGcmFnbWVudCA9
IG51bGxwdHI7CiAgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGVuZEZyYWdtZW50ID0gbnVs
bHB0cjsKQEAgLTMzNCw3ICszMzQsNyBAQCBMYXlvdXRQb2ludCBSZW5kZXJGcmFnbWVudGVkRmxv
dzo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoY29uc3QgUgogICAgICAg
ICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBvYmplY3QgaXMgaW4gYSBkaWZmZXJlbnQgZnJhZ21lbnQu
CiAgICAgICAgICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogcGFyZW50U3RhcnRGcmFnbWVu
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogcGFyZW50
RW5kRnJhZ21lbnQgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGdldEZyYWdtZW50UmFuZ2VG
b3JCb3goKm9iakNvbnRhaW5pbmdCbG9jaywgcGFyZW50U3RhcnRGcmFnbWVudCwgcGFyZW50RW5k
RnJhZ21lbnQpICYmIHBhcmVudFN0YXJ0RnJhZ21lbnQgIT0gc3RhcnRGcmFnbWVudCkgeworICAg
ICAgICAgICAgaWYgKGdldEZyYWdtZW50UmFuZ2VGb3JCb3gob2JqQ29udGFpbmluZ0Jsb2NrLCBw
YXJlbnRTdGFydEZyYWdtZW50LCBwYXJlbnRFbmRGcmFnbWVudCkgJiYgcGFyZW50U3RhcnRGcmFn
bWVudCAhPSBzdGFydEZyYWdtZW50KSB7CiAgICAgICAgICAgICAgICAgd2FzQ29tcHV0ZWRSZWxh
dGl2ZVRvT3RoZXJGcmFnbWVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6
cmVtb3ZlUmVuZGVyQm94RnJhZ21lbnRJbmZvKFJlbmRlckJveCYgYm94KQogCiAgICAgUmVuZGVy
RnJhZ21lbnRDb250YWluZXIqIHN0YXJ0RnJhZ21lbnQgPSBudWxscHRyOwogICAgIFJlbmRlckZy
YWdtZW50Q29udGFpbmVyKiBlbmRGcmFnbWVudCA9IG51bGxwdHI7Ci0gICAgaWYgKGdldEZyYWdt
ZW50UmFuZ2VGb3JCb3goYm94LCBzdGFydEZyYWdtZW50LCBlbmRGcmFnbWVudCkpIHsKKyAgICBp
ZiAoZ2V0RnJhZ21lbnRSYW5nZUZvckJveCgmYm94LCBzdGFydEZyYWdtZW50LCBlbmRGcmFnbWVu
dCkpIHsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9mcmFnbWVudExpc3QuZmluZCgqc3RhcnRG
cmFnbWVudCksIGVuZCA9IG1fZnJhZ21lbnRMaXN0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyJiBmcmFnbWVudCA9ICppdDsKICAg
ICAgICAgICAgIGZyYWdtZW50LnJlbW92ZVJlbmRlckJveEZyYWdtZW50SW5mbyhib3gpOwpAQCAt
NDk1LDE2ICs0OTUsMTYgQEAgdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6cmVtb3ZlTGluZUZy
YWdtZW50SW5mbyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmwKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihjaGVja0xpbmVzQ29uc2lzdGVuY3koYmxvY2tGbG93KSk7
CiB9CiAKLXZvaWQgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmxvZ2ljYWxXaWR0aENoYW5nZWRJbkZy
YWdtZW50c0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrJiBibG9jaywgYm9vbCYgcmVsYXlvdXRD
aGlsZHJlbikKK3ZvaWQgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmxvZ2ljYWxXaWR0aENoYW5nZWRJ
bkZyYWdtZW50c0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgYm9vbCYgcmVsYXlv
dXRDaGlsZHJlbikKIHsKICAgICBpZiAoIWhhc1ZhbGlkRnJhZ21lbnRJbmZvKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gaXQgPSBtX2ZyYWdtZW50UmFuZ2VNYXAuZmluZCgmYmxvY2sp
OworICAgIGF1dG8gaXQgPSBtX2ZyYWdtZW50UmFuZ2VNYXAuZmluZChibG9jayk7CiAgICAgaWYg
KGl0ID09IG1fZnJhZ21lbnRSYW5nZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byYgcmFuZ2UgPSBpdC0+dmFsdWU7CisgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXJSYW5n
ZSYgcmFuZ2UgPSBpdC0+dmFsdWU7CiAgICAgYm9vbCByYW5nZUludmFsaWRhdGVkID0gcmFuZ2Uu
cmFuZ2VJbnZhbGlkYXRlZCgpOwogICAgIHJhbmdlLmNsZWFyUmFuZ2VJbnZhbGlkYXRlZCgpOwog
CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6bG9naWNhbFdp
ZHRoQ2hhbmdlZEluRnJhZ21lbnRzRm9yQmxvY2soY29uc3QgUmVuZGVyQmwKIAogICAgIC8vIE5v
dCBuZWNlc3NhcnkgZm9yIHRoZSBmbG93IHRocmVhZCwgc2luY2Ugd2UgYWxyZWFkeSBjb21wdXRl
ZCB0aGUgY29ycmVjdCBpbmZvIGZvciBpdC4KICAgICAvLyBJZiB0aGUgZnJhZ21lbnRzIGhhdmUg
Y2hhbmdlZCBpbnZhbGlkYXRlIHRoZSBjaGlsZHJlbi4KLSAgICBpZiAoJmJsb2NrID09IHRoaXMp
IHsKKyAgICBpZiAoYmxvY2sgPT0gdGhpcykgewogICAgICAgICByZWxheW91dENoaWxkcmVuID0g
bV9wYWdlTG9naWNhbFNpemVDaGFuZ2VkOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMw
LDE0ICs1MzAsMTQgQEAgdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6bG9naWNhbFdpZHRoQ2hh
bmdlZEluRnJhZ21lbnRzRm9yQmxvY2soY29uc3QgUmVuZGVyQmwKICAgICAgICAgQVNTRVJUKCFm
cmFnbWVudC5uZWVkc0xheW91dCgpIHx8IGZyYWdtZW50LmlzUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXJTZXQoKSk7CiAKICAgICAgICAgLy8gV2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBjb21wdXRlZCBm
b3IgdGhpcyBmcmFnbWVudCBzbyB3ZSBuZWVkIHRvIGRvIGl0LgotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiBvbGRJbmZvID0gZnJhZ21lbnQudGFrZVJlbmRl
ckJveEZyYWdtZW50SW5mbygmYmxvY2spOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
Qm94RnJhZ21lbnRJbmZvPiBvbGRJbmZvID0gZnJhZ21lbnQudGFrZVJlbmRlckJveEZyYWdtZW50
SW5mbyhibG9jayk7CiAgICAgICAgIGlmICghb2xkSW5mbykgewogICAgICAgICAgICAgcmVsYXlv
dXRDaGlsZHJlbiA9IHJhbmdlSW52YWxpZGF0ZWQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBMYXlvdXRVbml0IG9sZExvZ2ljYWxXaWR0aCA9IG9sZEluZm8tPmxv
Z2ljYWxXaWR0aCgpOwotICAgICAgICBSZW5kZXJCb3hGcmFnbWVudEluZm8qIG5ld0luZm8gPSBi
bG9jay5yZW5kZXJCb3hGcmFnbWVudEluZm8oJmZyYWdtZW50KTsKKyAgICAgICAgUmVuZGVyQm94
RnJhZ21lbnRJbmZvKiBuZXdJbmZvID0gYmxvY2stPnJlbmRlckJveEZyYWdtZW50SW5mbygmZnJh
Z21lbnQpOwogICAgICAgICBpZiAoIW5ld0luZm8gfHwgbmV3SW5mby0+bG9naWNhbFdpZHRoKCkg
IT0gb2xkTG9naWNhbFdpZHRoKSB7CiAgICAgICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1
ZTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYzMiwxMiArNjMyLDEzIEBAIGJvb2wgUmVuZGVy
RnJhZ21lbnRlZEZsb3c6Omhhc0NhY2hlZEZyYWdtZW50UmFuZ2VGb3JCb3goY29uc3QgUmVuZGVy
Qm94JiBib3gpIGNvCiAgICAgcmV0dXJuIG1fZnJhZ21lbnRSYW5nZU1hcC5jb250YWlucygmYm94
KTsKIH0KIAotYm9vbCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Z2V0RnJhZ21lbnRSYW5nZUZvckJv
eEZyb21DYWNoZWRJbmZvKGNvbnN0IFJlbmRlckJveCYgYm94LCBSZW5kZXJGcmFnbWVudENvbnRh
aW5lciomIHN0YXJ0RnJhZ21lbnQsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgZW5kRnJhZ21l
bnQpIGNvbnN0Citib29sIFJlbmRlckZyYWdtZW50ZWRGbG93OjpnZXRGcmFnbWVudFJhbmdlRm9y
Qm94RnJvbUNhY2hlZEluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKiYgc3RhcnRGcmFnbWVudCwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqJiBlbmRGcmFn
bWVudCkgY29uc3QKIHsKKyAgICBBU1NFUlQoYm94KTsKICAgICBBU1NFUlQoaGFzVmFsaWRGcmFn
bWVudEluZm8oKSk7CiAgICAgQVNTRVJUKChzdGFydEZyYWdtZW50ID09IG51bGxwdHIpICYmIChl
bmRGcmFnbWVudCA9PSBudWxscHRyKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9mcmFnbWVudFJhbmdl
TWFwLmZpbmQoJmJveCk7CisgICAgYXV0byBpdCA9IG1fZnJhZ21lbnRSYW5nZU1hcC5maW5kKGJv
eCk7CiAgICAgaWYgKGl0ICE9IG1fZnJhZ21lbnRSYW5nZU1hcC5lbmQoKSkgewogICAgICAgICBj
b25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lclJhbmdlJiByYW5nZSA9IGl0LT52YWx1ZTsKICAg
ICAgICAgc3RhcnRGcmFnbWVudCA9IHJhbmdlLnN0YXJ0RnJhZ21lbnQoKTsKQEAgLTY0OSw4ICs2
NTAsMTAgQEAgYm9vbCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Z2V0RnJhZ21lbnRSYW5nZUZvckJv
eEZyb21DYWNoZWRJbmZvKGNvbnN0IFJlbmRlckJveCYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmdldEZyYWdtZW50UmFuZ2VGb3JCb3goY29uc3Qg
UmVuZGVyQm94JiBib3gsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgc3RhcnRGcmFnbWVudCwg
UmVuZGVyRnJhZ21lbnRDb250YWluZXIqJiBlbmRGcmFnbWVudCkgY29uc3QKK2Jvb2wgUmVuZGVy
RnJhZ21lbnRlZEZsb3c6OmdldEZyYWdtZW50UmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiBi
b3gsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgc3RhcnRGcmFnbWVudCwgUmVuZGVyRnJhZ21l
bnRDb250YWluZXIqJiBlbmRGcmFnbWVudCkgY29uc3QKIHsKKyAgICBBU1NFUlQoYm94KTsKKwog
ICAgIHN0YXJ0RnJhZ21lbnQgPSBlbmRGcmFnbWVudCA9IG51bGxwdHI7CiAgICAgaWYgKCFoYXNW
YWxpZEZyYWdtZW50SW5mbygpKSAvLyBXZSBjbGVhciB0aGUgcmFuZ2VzIHdoZW4gd2UgaW52YWxp
ZGF0ZSB0aGUgZnJhZ21lbnRzLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NjYsOCArNjY5
LDEwIEBAIGJvb2wgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmdldEZyYWdtZW50UmFuZ2VGb3JCb3go
Y29uc3QgUmVuZGVyQm94JiBib3gsIFJlbmRlckZyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIFJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb21wdXRlZEZyYWdtZW50UmFuZ2VGb3JCb3goY29u
c3QgUmVuZGVyQm94JiBib3gsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgc3RhcnRGcmFnbWVu
dCwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqJiBlbmRGcmFnbWVudCkgY29uc3QKK2Jvb2wgUmVu
ZGVyRnJhZ21lbnRlZEZsb3c6OmNvbXB1dGVkRnJhZ21lbnRSYW5nZUZvckJveChjb25zdCBSZW5k
ZXJCb3gqIGJveCwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqJiBzdGFydEZyYWdtZW50LCBSZW5k
ZXJGcmFnbWVudENvbnRhaW5lciomIGVuZEZyYWdtZW50KSBjb25zdAogeworICAgIEFTU0VSVChi
b3gpOworCiAgICAgc3RhcnRGcmFnbWVudCA9IGVuZEZyYWdtZW50ID0gbnVsbHB0cjsKICAgICBp
ZiAoIWhhc1ZhbGlkRnJhZ21lbnRJbmZvKCkpIC8vIFdlIGNsZWFyIHRoZSByYW5nZXMgd2hlbiB3
ZSBpbnZhbGlkYXRlIHRoZSBmcmFnbWVudHMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3
Niw3ICs2ODEsNyBAQCBib29sIFJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb21wdXRlZEZyYWdtZW50
UmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIFJlbgogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIFNlYXJjaCB0aGUgZnJhZ21lbnQgcmFuZ2UgdXNpbmcgdGhlIGluZm9ybWF0
aW9uIHByb3ZpZGVkIGJ5IHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluLgotICAgIGF1dG8qIGNv
bnRhaW5pbmdCbG9jayA9IGNvbnN0X2Nhc3Q8UmVuZGVyQm94Kj4oJmJveCk7CisgICAgYXV0byog
Y29udGFpbmluZ0Jsb2NrID0gY29uc3RfY2FzdDxSZW5kZXJCb3gqPihib3gpOwogICAgIHdoaWxl
ICghY29udGFpbmluZ0Jsb2NrLT5pc1JlbmRlckZyYWdtZW50ZWRGbG93KCkpIHsKICAgICAgICAg
TGVnYWN5SW5saW5lRWxlbWVudEJveCogYm94V3JhcHBlciA9IGNvbnRhaW5pbmdCbG9jay0+aW5s
aW5lQm94V3JhcHBlcigpOwogICAgICAgICBpZiAoYm94V3JhcHBlciAmJiBib3hXcmFwcGVyLT5y
b290KCkuY29udGFpbmluZ0ZyYWdtZW50KCkpIHsKQEAgLTcxOCwxMSArNzIzLDEyIEBAIGJvb2wg
UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmZyYWdtZW50SW5SYW5nZShjb25zdCBSZW5kZXJGcmFnbWVu
dENvbnRhaW5lciogdGFyZ2V0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlckZy
YWdtZW50ZWRGbG93OjpvYmplY3RTaG91bGRGcmFnbWVudEluRmxvd0ZyYWdtZW50KGNvbnN0IFJl
bmRlck9iamVjdCYgb2JqZWN0LCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogZnJhZ21l
bnQpIGNvbnN0Citib29sIFJlbmRlckZyYWdtZW50ZWRGbG93OjpvYmplY3RTaG91bGRGcmFnbWVu
dEluRmxvd0ZyYWdtZW50KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBSZW5kZXJG
cmFnbWVudENvbnRhaW5lciogZnJhZ21lbnQpIGNvbnN0CiB7CisgICAgQVNTRVJUKG9iamVjdCk7
CiAgICAgQVNTRVJUKGZyYWdtZW50KTsKICAgICAKLSAgICBSZW5kZXJGcmFnbWVudGVkRmxvdyog
ZnJhZ21lbnRlZEZsb3cgPSBvYmplY3QuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKKyAgICBS
ZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cgPSBvYmplY3QtPmVuY2xvc2luZ0Zy
YWdtZW50ZWRGbG93KCk7CiAgICAgaWYgKGZyYWdtZW50ZWRGbG93ICE9IHRoaXMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtNzMzLDExICs3MzksMTEgQEAgYm9vbCBSZW5kZXJGcmFnbWVu
dGVkRmxvdzo6b2JqZWN0U2hvdWxkRnJhZ21lbnRJbkZsb3dGcmFnbWVudChjb25zdCBSZW5kZXJP
YmplY3QKICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogZW5jbG9zaW5nQm94RW5kRnJhZ21l
bnQgPSBudWxscHRyOwogICAgIC8vIElmIHRoZSBib3ggaGFzIG5vIHJhbmdlLCBkbyBub3QgY2hl
Y2sgZnJhZ21lbnRJblJhbmdlLiBCb3hlcyBpbnNpZGUgaW5saW5lcyBkbyBub3QgZ2V0IHJhbmdl
cy4KICAgICAvLyBJbnN0ZWFkLCB0aGUgY29udGFpbmluZyBSb290SW5saW5lQm94IHdpbGwgYWJv
cnQgd2hlbiB0cnlpbmcgdG8gcGFpbnQgaW5zaWRlIHRoZSB3cm9uZyBmcmFnbWVudC4KLSAgICBp
ZiAoY29tcHV0ZWRGcmFnbWVudFJhbmdlRm9yQm94KG9iamVjdC5lbmNsb3NpbmdCb3goKSwgZW5j
bG9zaW5nQm94U3RhcnRGcmFnbWVudCwgZW5jbG9zaW5nQm94RW5kRnJhZ21lbnQpCisgICAgaWYg
KGNvbXB1dGVkRnJhZ21lbnRSYW5nZUZvckJveCgmb2JqZWN0LT5lbmNsb3NpbmdCb3goKSwgZW5j
bG9zaW5nQm94U3RhcnRGcmFnbWVudCwgZW5jbG9zaW5nQm94RW5kRnJhZ21lbnQpCiAgICAgICAg
ICYmICFmcmFnbWVudEluUmFuZ2UoZnJhZ21lbnQsIGVuY2xvc2luZ0JveFN0YXJ0RnJhZ21lbnQs
IGVuY2xvc2luZ0JveEVuZEZyYWdtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIHJldHVybiBvYmplY3QuaXNCb3goKSB8fCBvYmplY3QuaXNSZW5kZXJJbmxpbmUoKTsKKyAg
ICByZXR1cm4gb2JqZWN0LT5pc0JveCgpIHx8IG9iamVjdC0+aXNSZW5kZXJJbmxpbmUoKTsKIH0K
IAogYm9vbCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6b2JqZWN0SW5GbG93RnJhZ21lbnQoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFn
bWVudCkgY29uc3QKQEAgLTc1NCw3ICs3NjAsNyBAQCBib29sIFJlbmRlckZyYWdtZW50ZWRGbG93
OjpvYmplY3RJbkZsb3dGcmFnbWVudChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29ucwog
CiAgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGVuY2xvc2luZ0JveFN0YXJ0RnJhZ21lbnQg
PSBudWxscHRyOwogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBlbmNsb3NpbmdCb3hFbmRG
cmFnbWVudCA9IG51bGxwdHI7Ci0gICAgaWYgKCFnZXRGcmFnbWVudFJhbmdlRm9yQm94KG9iamVj
dC0+ZW5jbG9zaW5nQm94KCksIGVuY2xvc2luZ0JveFN0YXJ0RnJhZ21lbnQsIGVuY2xvc2luZ0Jv
eEVuZEZyYWdtZW50KSkKKyAgICBpZiAoIWdldEZyYWdtZW50UmFuZ2VGb3JCb3goJm9iamVjdC0+
ZW5jbG9zaW5nQm94KCksIGVuY2xvc2luZ0JveFN0YXJ0RnJhZ21lbnQsIGVuY2xvc2luZ0JveEVu
ZEZyYWdtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFmcmFnbWVudElu
UmFuZ2UoZnJhZ21lbnQsIGVuY2xvc2luZ0JveFN0YXJ0RnJhZ21lbnQsIGVuY2xvc2luZ0JveEVu
ZEZyYWdtZW50KSkKQEAgLTk0NCw3ICs5NTAsNyBAQCB2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93
OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuYwog
ICAgIGlmICh0aGlzID09IGFuY2VzdG9yQ29udGFpbmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoYXV0byogZnJhZ21lbnQgPSBtYXBGcm9tRmxvd1RvRnJhZ21lbnQodHJhbnNmb3JtU3Rh
dGUpKSB7CisgICAgaWYgKFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCA9IG1hcEZy
b21GbG93VG9GcmFnbWVudCh0cmFuc2Zvcm1TdGF0ZSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRo
ZSBjYXN0IGJlbG93IGlzIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBzb2x1dGlvbiwgd2UgbWF5IG5l
ZWQgdG8gZmluZCBhIGJldHRlciB3YXkuCiAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogZnJh
Z21lbnRPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJPYmplY3QqPihmcmFnbWVudCk7
CiAKQEAgLTk1NSw3ICs5NjEsNyBAQCB2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93OjptYXBMb2Nh
bFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuYwogICAgICAgICBp
ZiAoUmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdtZW50RnJhZ21lbnRlZEZsb3cgPSBmcmFnbWVu
dC0+ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKSkgewogICAgICAgICAgICAgUmVuZGVyRnJhZ21l
bnRDb250YWluZXIqIHN0YXJ0RnJhZ21lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgUmVuZGVy
RnJhZ21lbnRDb250YWluZXIqIGVuZEZyYWdtZW50ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGlm
IChmcmFnbWVudEZyYWdtZW50ZWRGbG93LT5nZXRGcmFnbWVudFJhbmdlRm9yQm94KCpmcmFnbWVu
dCwgc3RhcnRGcmFnbWVudCwgZW5kRnJhZ21lbnQpKSB7CisgICAgICAgICAgICBpZiAoZnJhZ21l
bnRGcmFnbWVudGVkRmxvdy0+Z2V0RnJhZ21lbnRSYW5nZUZvckJveChmcmFnbWVudCwgc3RhcnRG
cmFnbWVudCwgZW5kRnJhZ21lbnQpKSB7CiAgICAgICAgICAgICAgICAgQ3VycmVudFJlbmRlckZy
YWdtZW50Q29udGFpbmVyTWFpbnRhaW5lciBmcmFnbWVudE1haW50YWluZXIoKnN0YXJ0RnJhZ21l
bnQpOwogICAgICAgICAgICAgICAgIGZyYWdtZW50T2JqZWN0LT5tYXBMb2NhbFRvQ29udGFpbmVy
KGFuY2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTk2Nyw0NiArOTczLDQ1IEBAIHZvaWQgUmVuZGVyRnJh
Z21lbnRlZEZsb3c6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogYW5jCiB9CiAKIC8vIEZJWE1FOiBNYWtlIHRoaXMgZnVuY3Rpb24gZmFzdGVyLiBXYWxr
aW5nIHRoZSByZW5kZXIgdHJlZSBpcyBzbG93LCBiZXR0ZXIgdXNlIGEgY2FjaGluZyBtZWNoYW5p
c20gKGUuZy4gfGNhY2hlZE9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdEZyYWdtZW50fCkuCi1M
YXlvdXRSZWN0IFJlbmRlckZyYWdtZW50ZWRGbG93OjptYXBGcm9tTG9jYWxUb0ZyYWdtZW50ZWRG
bG93KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QpIGNv
bnN0CitMYXlvdXRSZWN0IFJlbmRlckZyYWdtZW50ZWRGbG93OjptYXBGcm9tTG9jYWxUb0ZyYWdt
ZW50ZWRGbG93KGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJl
Y3QpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBib3hSZWN0ID0gbG9jYWxSZWN0OwogCi0gICAg
YXV0byogY29udGFpbmVyQm94ID0gJmJveDsKLSAgICB3aGlsZSAoY29udGFpbmVyQm94ICYmIGNv
bnRhaW5lckJveCAhPSB0aGlzKSB7Ci0gICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluZXJCbG9j
ayA9IGNvbnRhaW5lckJveC0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgd2hpbGUgKGJveCAmJiBi
b3ggIT0gdGhpcykgeworICAgICAgICBSZW5kZXJCbG9jayogY29udGFpbmVyQmxvY2sgPSBib3gt
PmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICBBU1NFUlQoY29udGFpbmVyQmxvY2spOwogICAg
ICAgICBpZiAoIWNvbnRhaW5lckJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIExheW91dFJlY3Qo
KTsKLSAgICAgICAgTGF5b3V0UG9pbnQgY3VycmVudEJveExvY2F0aW9uID0gY29udGFpbmVyQm94
LT5sb2NhdGlvbigpOworICAgICAgICBMYXlvdXRQb2ludCBjdXJyZW50Qm94TG9jYXRpb24gPSBi
b3gtPmxvY2F0aW9uKCk7CiAKLSAgICAgICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgpLndy
aXRpbmdNb2RlKCkgIT0gY29udGFpbmVyQm94LT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpCi0gICAg
ICAgICAgICBjb250YWluZXJCb3gtPmZsaXBGb3JXcml0aW5nTW9kZShib3hSZWN0KTsKKyAgICAg
ICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkgIT0gYm94LT5zdHls
ZSgpLndyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICBib3gtPmZsaXBGb3JXcml0aW5nTW9kZShi
b3hSZWN0KTsKIAogICAgICAgICBib3hSZWN0Lm1vdmVCeShjdXJyZW50Qm94TG9jYXRpb24pOwot
ICAgICAgICBjb250YWluZXJCb3ggPSBjb250YWluZXJCbG9jazsKKyAgICAgICAgYm94ID0gY29u
dGFpbmVyQmxvY2s7CiAgICAgfQogCiAgICAgcmV0dXJuIGJveFJlY3Q7CiB9CiAKIC8vIEZJWE1F
OiBNYWtlIHRoaXMgZnVuY3Rpb24gZmFzdGVyLiBXYWxraW5nIHRoZSByZW5kZXIgdHJlZSBpcyBz
bG93LCBiZXR0ZXIgdXNlIGEgY2FjaGluZyBtZWNoYW5pc20gKGUuZy4gfGNhY2hlZE9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdEZyYWdtZW50fCkuCi1MYXlvdXRSZWN0IFJlbmRlckZyYWdtZW50
ZWRGbG93OjptYXBGcm9tRnJhZ21lbnRlZEZsb3dUb0xvY2FsKGNvbnN0IFJlbmRlckJveCYgYm94
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJGcmFnbWVu
dGVkRmxvdzo6bWFwRnJvbUZyYWdtZW50ZWRGbG93VG9Mb2NhbChjb25zdCBSZW5kZXJCb3gqIGJv
eCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IGxvY2Fs
UmVjdCA9IHJlY3Q7Ci0gICAgaWYgKCZib3ggPT0gdGhpcykKKyAgICBpZiAoYm94ID09IHRoaXMp
CiAgICAgICAgIHJldHVybiBsb2NhbFJlY3Q7CiAKLSAgICBSZW5kZXJCbG9jayogY29udGFpbmVy
QmxvY2sgPSBib3guY29udGFpbmluZ0Jsb2NrKCk7CisgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5l
ckJsb2NrID0gYm94LT5jb250YWluaW5nQmxvY2soKTsKICAgICBBU1NFUlQoY29udGFpbmVyQmxv
Y2spOwogICAgIGlmICghY29udGFpbmVyQmxvY2spCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0
KCk7Ci0gICAgbG9jYWxSZWN0ID0gbWFwRnJvbUZyYWdtZW50ZWRGbG93VG9Mb2NhbCgqY29udGFp
bmVyQmxvY2ssIGxvY2FsUmVjdCk7CisgICAgbG9jYWxSZWN0ID0gbWFwRnJvbUZyYWdtZW50ZWRG
bG93VG9Mb2NhbChjb250YWluZXJCbG9jaywgbG9jYWxSZWN0KTsKIAotICAgIExheW91dFBvaW50
IGN1cnJlbnRCb3hMb2NhdGlvbiA9IGJveC5sb2NhdGlvbigpOworICAgIExheW91dFBvaW50IGN1
cnJlbnRCb3hMb2NhdGlvbiA9IGJveC0+bG9jYXRpb24oKTsKICAgICBsb2NhbFJlY3QubW92ZUJ5
KC1jdXJyZW50Qm94TG9jYXRpb24pOwogCi0gICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgp
LndyaXRpbmdNb2RlKCkgIT0gYm94LnN0eWxlKCkud3JpdGluZ01vZGUoKSkKLSAgICAgICAgYm94
LmZsaXBGb3JXcml0aW5nTW9kZShsb2NhbFJlY3QpOworICAgIGlmIChjb250YWluZXJCbG9jay0+
c3R5bGUoKS53cml0aW5nTW9kZSgpICE9IGJveC0+c3R5bGUoKS53cml0aW5nTW9kZSgpKQorICAg
ICAgICBib3gtPmZsaXBGb3JXcml0aW5nTW9kZShsb2NhbFJlY3QpOwogCiAgICAgcmV0dXJuIGxv
Y2FsUmVjdDsKIH0KQEAgLTEwMjIsNyArMTAyNyw3IEBAIHZvaWQgUmVuZGVyRnJhZ21lbnRlZEZs
b3c6OmZsaXBGb3JXcml0aW5nTW9kZUxvY2FsQ29vcmRpbmF0ZXMoTGF5b3V0UmVjdCYgcmVjdCkK
ICAgICAgICAgcmVjdC5zZXRYKDAgLSByZWN0Lm1heFgoKSk7CiB9CiAKLXZvaWQgUmVuZGVyRnJh
Z21lbnRlZEZsb3c6OmFkZEZyYWdtZW50c1Zpc3VhbEVmZmVjdE92ZXJmbG93KGNvbnN0IFJlbmRl
ckJveCYgYm94KQordm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6YWRkRnJhZ21lbnRzVmlzdWFs
RWZmZWN0T3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiBib3gpCiB7CiAgICAgUmVuZGVyRnJhZ21l
bnRDb250YWluZXIqIHN0YXJ0RnJhZ21lbnQgPSBudWxscHRyOwogICAgIFJlbmRlckZyYWdtZW50
Q29udGFpbmVyKiBlbmRGcmFnbWVudCA9IG51bGxwdHI7CkBAIC0xMDMyLDggKzEwMzcsOCBAQCB2
b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93OjphZGRGcmFnbWVudHNWaXN1YWxFZmZlY3RPdmVyZmxv
dyhjb25zdCBSZW5kZXJCb3gmIGJveAogICAgIGZvciAoYXV0byBpdGVyID0gbV9mcmFnbWVudExp
c3QuZmluZCgqc3RhcnRGcmFnbWVudCksIGVuZCA9IG1fZnJhZ21lbnRMaXN0LmVuZCgpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyJiBmcmFn
bWVudCA9ICppdGVyOwogCi0gICAgICAgIExheW91dFJlY3QgYm9yZGVyQm94ID0gYm94LmJvcmRl
ckJveFJlY3RJbkZyYWdtZW50KCZmcmFnbWVudCk7Ci0gICAgICAgIGJvcmRlckJveCA9IGJveC5h
cHBseVZpc3VhbEVmZmVjdE92ZXJmbG93KGJvcmRlckJveCk7CisgICAgICAgIExheW91dFJlY3Qg
Ym9yZGVyQm94ID0gYm94LT5ib3JkZXJCb3hSZWN0SW5GcmFnbWVudCgmZnJhZ21lbnQpOworICAg
ICAgICBib3JkZXJCb3ggPSBib3gtPmFwcGx5VmlzdWFsRWZmZWN0T3ZlcmZsb3coYm9yZGVyQm94
KTsKICAgICAgICAgYm9yZGVyQm94ID0gZnJhZ21lbnQucmVjdEZsb3dQb3J0aW9uRm9yQm94KGJv
eCwgYm9yZGVyQm94KTsKIAogICAgICAgICBmcmFnbWVudC5hZGRWaXN1YWxPdmVyZmxvd0ZvckJv
eChib3gsIGJvcmRlckJveCk7CkBAIC0xMDQyLDcgKzEwNDcsNyBAQCB2b2lkIFJlbmRlckZyYWdt
ZW50ZWRGbG93OjphZGRGcmFnbWVudHNWaXN1YWxFZmZlY3RPdmVyZmxvdyhjb25zdCBSZW5kZXJC
b3gmIGJveAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6YWRkRnJhZ21l
bnRzVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQordm9p
ZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6YWRkRnJhZ21lbnRzVmlzdWFsT3ZlcmZsb3dGcm9tVGhl
bWUoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQogewogICAgIFJlbmRlckZyYWdtZW50Q29udGFp
bmVyKiBzdGFydEZyYWdtZW50ID0gbnVsbHB0cjsKICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5l
ciogZW5kRnJhZ21lbnQgPSBudWxscHRyOwpAQCAtMTA1MiwxMSArMTA1NywxMSBAQCB2b2lkIFJl
bmRlckZyYWdtZW50ZWRGbG93OjphZGRGcmFnbWVudHNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShj
b25zdCBSZW5kZXJCbG9jawogICAgIGZvciAoYXV0byBpdGVyID0gbV9mcmFnbWVudExpc3QuZmlu
ZCgqc3RhcnRGcmFnbWVudCksIGVuZCA9IG1fZnJhZ21lbnRMaXN0LmVuZCgpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyJiBmcmFnbWVudCA9
ICppdGVyOwogCi0gICAgICAgIExheW91dFJlY3QgYm9yZGVyQm94ID0gYmxvY2suYm9yZGVyQm94
UmVjdEluRnJhZ21lbnQoJmZyYWdtZW50KTsKKyAgICAgICAgTGF5b3V0UmVjdCBib3JkZXJCb3gg
PSBibG9jay0+Ym9yZGVyQm94UmVjdEluRnJhZ21lbnQoJmZyYWdtZW50KTsKICAgICAgICAgYm9y
ZGVyQm94ID0gZnJhZ21lbnQucmVjdEZsb3dQb3J0aW9uRm9yQm94KGJsb2NrLCBib3JkZXJCb3gp
OwogCiAgICAgICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3QgPSBib3JkZXJCb3g7Ci0gICAgICAg
IGJsb2NrLnRoZW1lKCkuYWRqdXN0UmVwYWludFJlY3QoYmxvY2ssIGluZmxhdGVkUmVjdCk7Cisg
ICAgICAgIGJsb2NrLT50aGVtZSgpLmFkanVzdFJlcGFpbnRSZWN0KCpibG9jaywgaW5mbGF0ZWRS
ZWN0KTsKIAogICAgICAgICBmcmFnbWVudC5hZGRWaXN1YWxPdmVyZmxvd0ZvckJveChibG9jaywg
c25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChpbmZsYXRlZFJlY3QpKSk7CiAgICAgICAgIGlmICgm
ZnJhZ21lbnQgPT0gZW5kRnJhZ21lbnQpCkBAIC0xMDY0LDcgKzEwNjksNyBAQCB2b2lkIFJlbmRl
ckZyYWdtZW50ZWRGbG93OjphZGRGcmFnbWVudHNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShjb25z
dCBSZW5kZXJCbG9jawogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6YWRk
RnJhZ21lbnRzT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFJl
bmRlckJveCYgY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKQordm9pZCBSZW5kZXJGcmFn
bWVudGVkRmxvdzo6YWRkRnJhZ21lbnRzT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94
KiBib3gsIGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKQog
ewogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBzdGFydEZyYWdtZW50ID0gbnVsbHB0cjsK
ICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogZW5kRnJhZ21lbnQgPSBudWxscHRyOwpAQCAt
MTA4OSwxMiArMTA5NCwxMiBAQCB2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93OjphZGRGcmFnbWVu
dHNPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBSZW5kZXJCb3gmIGJveCwgYwogICAgICAgICAKICAg
ICAgICAgZnJhZ21lbnQuYWRkTGF5b3V0T3ZlcmZsb3dGb3JCb3goYm94LCBjaGlsZExheW91dE92
ZXJmbG93UmVjdCk7CiAKLSAgICAgICAgaWYgKGNoaWxkLmhhc1NlbGZQYWludGluZ0xheWVyKCkg
fHwgYm94Lmhhc05vblZpc2libGVPdmVyZmxvdygpKSB7CisgICAgICAgIGlmIChjaGlsZC0+aGFz
U2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBib3gtPmhhc05vblZpc2libGVPdmVyZmxvdygpKSB7CiAg
ICAgICAgICAgICBpZiAoJmZyYWdtZW50ID09IGVuZEZyYWdtZW50KQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgTGF5b3V0
UmVjdCBjaGlsZFZpc3VhbE92ZXJmbG93UmVjdCA9IGZyYWdtZW50LnZpc3VhbE92ZXJmbG93UmVj
dEZvckJveEZvclByb3BhZ2F0aW9uKGNoaWxkKTsKKyAgICAgICAgTGF5b3V0UmVjdCBjaGlsZFZp
c3VhbE92ZXJmbG93UmVjdCA9IGZyYWdtZW50LnZpc3VhbE92ZXJmbG93UmVjdEZvckJveEZvclBy
b3BhZ2F0aW9uKCpjaGlsZCk7CiAgICAgICAgIGNoaWxkVmlzdWFsT3ZlcmZsb3dSZWN0Lm1vdmUo
ZGVsdGEpOwogICAgICAgICBmcmFnbWVudC5hZGRWaXN1YWxPdmVyZmxvd0ZvckJveChib3gsIGNo
aWxkVmlzdWFsT3ZlcmZsb3dSZWN0KTsKIApAQCAtMTEwMyw3ICsxMTA4LDcgQEAgdm9pZCBSZW5k
ZXJGcmFnbWVudGVkRmxvdzo6YWRkRnJhZ21lbnRzT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVu
ZGVyQm94JiBib3gsIGMKICAgICB9CiB9CiAgICAgCi12b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93
OjphZGRGcmFnbWVudHNMYXlvdXRPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3Qg
TGF5b3V0UmVjdCYgbGF5b3V0T3ZlcmZsb3cpCit2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93Ojph
ZGRGcmFnbWVudHNMYXlvdXRPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gqIGJveCwgY29uc3QgTGF5
b3V0UmVjdCYgbGF5b3V0T3ZlcmZsb3cpCiB7CiAgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIq
IHN0YXJ0RnJhZ21lbnQgPSBudWxscHRyOwogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBl
bmRGcmFnbWVudCA9IG51bGxwdHI7CkBAIC0xMTIxLDcgKzExMjYsNyBAQCB2b2lkIFJlbmRlckZy
YWdtZW50ZWRGbG93OjphZGRGcmFnbWVudHNMYXlvdXRPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gm
IGJveCwgY29ucwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6YWRkRnJh
Z21lbnRzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IExheW91dFJl
Y3QmIHZpc3VhbE92ZXJmbG93KQordm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6YWRkRnJhZ21l
bnRzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IExheW91dFJlY3Qm
IHZpc3VhbE92ZXJmbG93KQogewogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBzdGFydEZy
YWdtZW50ID0gbnVsbHB0cjsKICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogZW5kRnJhZ21l
bnQgPSBudWxscHRyOwpAQCAtMTEzOSw3ICsxMTQ0LDcgQEAgdm9pZCBSZW5kZXJGcmFnbWVudGVk
Rmxvdzo6YWRkRnJhZ21lbnRzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyQm94JiBib3gsIGNv
bnMKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNsZWFyRnJhZ21lbnRz
T3ZlcmZsb3coY29uc3QgUmVuZGVyQm94JiBib3gpCit2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93
OjpjbGVhckZyYWdtZW50c092ZXJmbG93KGNvbnN0IFJlbmRlckJveCogYm94KQogewogICAgIFJl
bmRlckZyYWdtZW50Q29udGFpbmVyKiBzdGFydEZyYWdtZW50ID0gbnVsbHB0cjsKICAgICBSZW5k
ZXJGcmFnbWVudENvbnRhaW5lciogZW5kRnJhZ21lbnQgPSBudWxscHRyOwpAQCAtMTE0Nyw4ICsx
MTUyLDggQEAgdm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y2xlYXJGcmFnbWVudHNPdmVyZmxv
dyhjb25zdCBSZW5kZXJCb3gmIGJveCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
IGl0ZXIgPSBtX2ZyYWdtZW50TGlzdC5maW5kKCpzdGFydEZyYWdtZW50KSwgZW5kID0gbV9mcmFn
bWVudExpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgYXV0byYgZnJh
Z21lbnQgPSAqaXRlcjsKLSAgICAgICAgYXV0byogYm94SW5mbyA9IGZyYWdtZW50LnJlbmRlckJv
eEZyYWdtZW50SW5mbygmYm94KTsKKyAgICAgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXImIGZy
YWdtZW50ID0gKml0ZXI7CisgICAgICAgIFJlbmRlckJveEZyYWdtZW50SW5mbyogYm94SW5mbyA9
IGZyYWdtZW50LnJlbmRlckJveEZyYWdtZW50SW5mbyhib3gpOwogICAgICAgICBpZiAoYm94SW5m
byAmJiBib3hJbmZvLT5vdmVyZmxvdygpKQogICAgICAgICAgICAgYm94SW5mby0+Y2xlYXJPdmVy
ZmxvdygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
Z21lbnRlZEZsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVk
Rmxvdy5oCmluZGV4IDQ1NzE0MzNkMzU1YS4uZDMyYWUxNTk0ZWZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaApAQCAtMTExLDcgKzExMSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIG1hcEZy
b21GbG93VG9GcmFnbWVudChUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCi0gICAgdm9pZCBsb2dp
Y2FsV2lkdGhDaGFuZ2VkSW5GcmFnbWVudHNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayYsIGJv
b2wmKTsKKyAgICB2b2lkIGxvZ2ljYWxXaWR0aENoYW5nZWRJbkZyYWdtZW50c0ZvckJsb2NrKGNv
bnN0IFJlbmRlckJsb2NrKiwgYm9vbCYpOwogCiAgICAgTGF5b3V0VW5pdCBjb250ZW50TG9naWNh
bFdpZHRoT2ZGaXJzdEZyYWdtZW50KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb250ZW50TG9n
aWNhbEhlaWdodE9mRmlyc3RGcmFnbWVudCgpIGNvbnN0OwpAQCAtMTIxLDE1ICsxMjEsMTUgQEAg
cHVibGljOgogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBsYXN0RnJhZ21lbnQoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFnbWVudFJhbmdlRm9yQm94KGNvbnN0IFJlbmRl
ckJveCYsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIq
KTsKLSAgICBib29sIGdldEZyYWdtZW50UmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94JiwgUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIqJiBzdGFydEZyYWdtZW50LCBSZW5kZXJGcmFnbWVudENvbnRh
aW5lciomIGVuZEZyYWdtZW50KSBjb25zdDsKLSAgICBib29sIGNvbXB1dGVkRnJhZ21lbnRSYW5n
ZUZvckJveChjb25zdCBSZW5kZXJCb3gmLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciomIHN0YXJ0
RnJhZ21lbnQsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgZW5kRnJhZ21lbnQpIGNvbnN0Owor
ICAgIGJvb2wgZ2V0RnJhZ21lbnRSYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJG
cmFnbWVudENvbnRhaW5lciomIHN0YXJ0RnJhZ21lbnQsIFJlbmRlckZyYWdtZW50Q29udGFpbmVy
KiYgZW5kRnJhZ21lbnQpIGNvbnN0OworICAgIGJvb2wgY29tcHV0ZWRGcmFnbWVudFJhbmdlRm9y
Qm94KGNvbnN0IFJlbmRlckJveCosIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgc3RhcnRGcmFn
bWVudCwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqJiBlbmRGcmFnbWVudCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNDYWNoZWRGcmFnbWVudFJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCYpIGNvbnN0
OwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIG9iamVjdCBpcyBpbiBmcmFnbWVudCBhbmQgdGhlIGZy
YWdtZW50IGlzIHBhcnQgb2YgdGhpcyBmbG93IHRocmVhZC4KICAgICBib29sIG9iamVjdEluRmxv
d0ZyYWdtZW50KGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFp
bmVyKikgY29uc3Q7CiAgICAgCiAgICAgLy8gQ2hlY2sgaWYgdGhlIG9iamVjdCBzaG91bGQgYmUg
cGFpbnRlZCBpbiB0aGlzIGZyYWdtZW50IGFuZCBpZiB0aGUgZnJhZ21lbnQgaXMgcGFydCBvZiB0
aGlzIGZsb3cgdGhyZWFkLgotICAgIGJvb2wgb2JqZWN0U2hvdWxkRnJhZ21lbnRJbkZsb3dGcmFn
bWVudChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciop
IGNvbnN0OworICAgIGJvb2wgb2JqZWN0U2hvdWxkRnJhZ21lbnRJbkZsb3dGcmFnbWVudChjb25z
dCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopIGNvbnN0Owog
CiAgICAgdm9pZCBtYXJrRnJhZ21lbnRzRm9yT3ZlcmZsb3dMYXlvdXRJZk5lZWRlZCgpOwogCkBA
IC0xNDUsMTUgKzE0NSwxNSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RGcmFnbWVudChjb25zdCBSZW5kZXJCbG9jayopIGNvbnN0OwogICAgIHZv
aWQgY2xlYXJSZW5kZXJCb3hGcmFnbWVudEluZm9BbmRDdXN0b21TdHlsZShjb25zdCBSZW5kZXJC
b3gmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciosIGNvbnN0IFJlbmRlckZyYWdtZW50
Q29udGFpbmVyKiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqLCBjb25zdCBSZW5kZXJG
cmFnbWVudENvbnRhaW5lciopOwogCi0gICAgdm9pZCBhZGRGcmFnbWVudHNWaXN1YWxFZmZlY3RP
dmVyZmxvdyhjb25zdCBSZW5kZXJCb3gmKTsKLSAgICB2b2lkIGFkZEZyYWdtZW50c1Zpc3VhbE92
ZXJmbG93RnJvbVRoZW1lKGNvbnN0IFJlbmRlckJsb2NrJik7Ci0gICAgdm9pZCBhZGRGcmFnbWVu
dHNPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBSZW5kZXJCb3gmLCBj
b25zdCBMYXlvdXRTaXplJik7Ci0gICAgdm9pZCBhZGRGcmFnbWVudHNMYXlvdXRPdmVyZmxvdyhj
b25zdCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgdm9pZCBhZGRGcmFnbWVu
dHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRSZWN0Jik7Ci0g
ICAgdm9pZCBjbGVhckZyYWdtZW50c092ZXJmbG93KGNvbnN0IFJlbmRlckJveCYpOworICAgIHZv
aWQgYWRkRnJhZ21lbnRzVmlzdWFsRWZmZWN0T3ZlcmZsb3coY29uc3QgUmVuZGVyQm94Kik7Cisg
ICAgdm9pZCBhZGRGcmFnbWVudHNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShjb25zdCBSZW5kZXJC
bG9jayopOworICAgIHZvaWQgYWRkRnJhZ21lbnRzT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVu
ZGVyQm94KiwgY29uc3QgUmVuZGVyQm94KiwgY29uc3QgTGF5b3V0U2l6ZSYpOworICAgIHZvaWQg
YWRkRnJhZ21lbnRzTGF5b3V0T3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiwgY29uc3QgTGF5b3V0
UmVjdCYpOworICAgIHZvaWQgYWRkRnJhZ21lbnRzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVy
Qm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOworICAgIHZvaWQgY2xlYXJGcmFnbWVudHNPdmVyZmxv
dyhjb25zdCBSZW5kZXJCb3gqKTsKIAotICAgIExheW91dFJlY3QgbWFwRnJvbUZyYWdtZW50ZWRG
bG93VG9Mb2NhbChjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7Ci0g
ICAgTGF5b3V0UmVjdCBtYXBGcm9tTG9jYWxUb0ZyYWdtZW50ZWRGbG93KGNvbnN0IFJlbmRlckJv
eCYsIGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IG1hcEZyb21GcmFn
bWVudGVkRmxvd1RvTG9jYWwoY29uc3QgUmVuZGVyQm94KiwgY29uc3QgTGF5b3V0UmVjdCYpIGNv
bnN0OworICAgIExheW91dFJlY3QgbWFwRnJvbUxvY2FsVG9GcmFnbWVudGVkRmxvdyhjb25zdCBS
ZW5kZXJCb3gqLCBjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAKICAgICB2b2lkIGZsaXBGb3JX
cml0aW5nTW9kZUxvY2FsQ29vcmRpbmF0ZXMoTGF5b3V0UmVjdCYpIGNvbnN0OwogCkBAIC0xNjIs
NyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBmcmFnbWVudEluUmFuZ2UoY29uc3QgUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIqIHRhcmdldEZyYWdtZW50LCBjb25zdCBSZW5kZXJGcmFnbWVu
dENvbnRhaW5lciogc3RhcnRGcmFnbWVudCwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIq
IGVuZEZyYWdtZW50KSBjb25zdDsKIAotICAgIGJvb2wgYWJzb2x1dGVRdWFkc0ZvckJveChWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqLCBjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKKyAgICBib29s
IGFic29sdXRlUXVhZHNGb3JCb3goVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiwgY29uc3QgUmVu
ZGVyQm94KikgY29uc3Q7CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCkBAIC0yMDAs
NyArMjAwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlRnJhZ21lbnRzRnJhZ21lbnRl
ZEZsb3dQb3J0aW9uUmVjdCgpOwogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25zdCBMYXlvdXRS
ZWN0JikgY29uc3Q7CiAKLSAgICBib29sIGdldEZyYWdtZW50UmFuZ2VGb3JCb3hGcm9tQ2FjaGVk
SW5mbyhjb25zdCBSZW5kZXJCb3gmLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciomIHN0YXJ0RnJh
Z21lbnQsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgZW5kRnJhZ21lbnQpIGNvbnN0OworICAg
IGJvb2wgZ2V0RnJhZ21lbnRSYW5nZUZvckJveEZyb21DYWNoZWRJbmZvKGNvbnN0IFJlbmRlckJv
eCosIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiYgc3RhcnRGcmFnbWVudCwgUmVuZGVyRnJhZ21l
bnRDb250YWluZXIqJiBlbmRGcmFnbWVudCkgY29uc3Q7CiAKICAgICB2b2lkIHJlbW92ZVJlbmRl
ckJveEZyYWdtZW50SW5mbyhSZW5kZXJCb3gmKTsKICAgICB2b2lkIHJlbW92ZUxpbmVGcmFnbWVu
dEluZm8oY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCmluZGV4IDI1NjgxNmZiMDQxMS4uNzhlYzY1YWQ2YTBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtODUsNyArODUsNyBAQCB2
b2lkIFJlbmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAgICAgaWYgKGNvbnRhaW5p
bmdCbG9ja1BhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUpIHsKICAgICAgICAgICAgIGlmIChSZW5k
ZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKSkgewogICAgICAgICAgICAgICAgIGlmIChS
ZW5kZXJCbG9jayogY2JDYiA9IGNiLT5jb250YWluaW5nQmxvY2soKSkKLSAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFjYkNiLT5wYWludHNDb250aW51YXRpb25PdXRsaW5lKCp0aGlzKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghY2JDYi0+cGFpbnRzQ29udGludWF0aW9uT3V0bGlu
ZSh0aGlzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGZmY2I2NTQxODlmNi4uY2I2ZmY0NzRi
YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTIw
NSw3ICsxMjA1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om91dHB1dFJlZ2lvbnNJbmZvcm1hdGlv
bihUZXh0U3RyZWFtJiBzdHJlYW0pIGNvbnN0CiAKICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5l
ciogc3RhcnRDb250YWluZXIgPSBudWxscHRyOwogICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVy
KiBlbmRDb250YWluZXIgPSBudWxscHRyOwotICAgIGZyYWdtZW50ZWRGbG93LT5nZXRGcmFnbWVu
dFJhbmdlRm9yQm94KGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpLCBzdGFydENvbnRhaW5lciwg
ZW5kQ29udGFpbmVyKTsKKyAgICBmcmFnbWVudGVkRmxvdy0+Z2V0RnJhZ21lbnRSYW5nZUZvckJv
eChkb3duY2FzdDxSZW5kZXJCb3g+KHRoaXMpLCBzdGFydENvbnRhaW5lciwgZW5kQ29udGFpbmVy
KTsKICAgICBzdHJlYW0gPDwgIiBbc3BhbnMgZnJhZ21lbnQgY29udGFpbmVycyBpbiBmbG93ICIg
PDwgZnJhZ21lbnRlZEZsb3cgPDwgIiBmcm9tICIgPDwgc3RhcnRDb250YWluZXIgPDwgIiB0byAi
IDw8IGVuZENvbnRhaW5lciA8PCAiXSI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCmluZGV4IDRkOTgxNDRhYTE1Yy4uNDRjMGE0NjE0NDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTY5OSwxMiArNjk5LDEyIEBAIHZv
aWQgUmVuZGVyVGFibGU6OmFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkKICAgICB9CiAKICAgICAv
LyBBZGQgb3ZlcmZsb3cgZnJvbSBvdXIgY2FwdGlvbi4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9jYXB0aW9ucy5zaXplKCk7IGkrKykKLSAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hp
bGQoKm1fY2FwdGlvbnNbaV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhcHRp
b25zLnNpemUoKTsgaSsrKSAKKyAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQobV9jYXB0aW9u
c1tpXS5nZXQoKSk7CiAKICAgICAvLyBBZGQgb3ZlcmZsb3cgZnJvbSBvdXIgc2VjdGlvbnMuCi0g
ICAgZm9yIChhdXRvKiBzZWN0aW9uID0gdG9wU2VjdGlvbigpOyBzZWN0aW9uOyBzZWN0aW9uID0g
c2VjdGlvbkJlbG93KHNlY3Rpb24pKQotICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZCgqc2Vj
dGlvbik7CisgICAgZm9yIChSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSB0b3BTZWN0aW9u
KCk7IHNlY3Rpb247IHNlY3Rpb24gPSBzZWN0aW9uQmVsb3coc2VjdGlvbikpCisgICAgICAgIGFk
ZE92ZXJmbG93RnJvbUNoaWxkKHNlY3Rpb24pOwogfQogCiB2b2lkIFJlbmRlclRhYmxlOjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRl
eCBiNzY2OTZmZGZmYjEuLmQyMzg4NTFhZGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTUxNCw4ICs1MTQsOCBAQCB2b2lkIFJl
bmRlclRhYmxlU2VjdGlvbjo6cmVsYXlvdXRDZWxsSWZGbGV4ZWQoUmVuZGVyVGFibGVDZWxsJiBj
ZWxsLCBpbnQgcm93SW5kZQogCiAgICAgaWYgKCFjZWxsQ2hpbGRyZW5GbGV4KSB7CiAgICAgICAg
IGlmIChUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogcGVyY2VudEhlaWdodERlc2NlbmRhbnRz
ID0gY2VsbC5wZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMoKSkgewotICAgICAgICAgICAgZm9yIChh
dXRvJiBkZXNjZW5kYW50IDogKnBlcmNlbnRIZWlnaHREZXNjZW5kYW50cykgewotICAgICAgICAg
ICAgICAgIGlmIChmbGV4QWxsQ2hpbGRyZW4gfHwgc2hvdWxkRmxleENlbGxDaGlsZChjZWxsLCBk
ZXNjZW5kYW50KSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBkZXNjZW5kYW50IDogKnBlcmNl
bnRIZWlnaHREZXNjZW5kYW50cykgeworICAgICAgICAgICAgICAgIGlmIChmbGV4QWxsQ2hpbGRy
ZW4gfHwgc2hvdWxkRmxleENlbGxDaGlsZChjZWxsLCAqZGVzY2VuZGFudCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgY2VsbENoaWxkcmVuRmxleCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTY2MCwxMyArNjYwLDEzIEBAIHZvaWQgUmVu
ZGVyVGFibGVTZWN0aW9uOjpjb21wdXRlT3ZlcmZsb3dGcm9tQ2VsbHModW5zaWduZWQgdG90YWxS
b3dzLCB1bnNpZ25lZCBuCiAgICAgLy8gTm93IHRoYXQgb3VyIGhlaWdodCBoYXMgYmVlbiBkZXRl
cm1pbmVkLCBhZGQgaW4gb3ZlcmZsb3cgZnJvbSBjZWxscy4KICAgICBmb3IgKHVuc2lnbmVkIHIg
PSAwOyByIDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBjID0gMDsg
YyA8IG5FZmZDb2xzOyBjKyspIHsKLSAgICAgICAgICAgIGF1dG8mIGNzID0gY2VsbEF0KHIsIGMp
OwotICAgICAgICAgICAgYXV0byogY2VsbCA9IGNzLnByaW1hcnlDZWxsKCk7CisgICAgICAgICAg
ICBDZWxsU3RydWN0JiBjcyA9IGNlbGxBdChyLCBjKTsKKyAgICAgICAgICAgIFJlbmRlclRhYmxl
Q2VsbCogY2VsbCA9IGNzLnByaW1hcnlDZWxsKCk7CiAgICAgICAgICAgICBpZiAoIWNlbGwgfHwg
Y3MuaW5Db2xTcGFuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KHIgPCB0b3RhbFJvd3MgLSAxICYmIGNlbGwgPT0gcHJpbWFyeUNlbGxBdChyICsgMSwgYykpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGls
ZCgqY2VsbCk7CisgICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChjZWxsKTsKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgaGFzT3ZlcmZsb3dpbmdDZWxsIHw9IGNlbGwtPmhh
c1Zpc3VhbE92ZXJmbG93KCk7CiAjZW5kaWYKQEAgLTEyODcsNyArMTI4Nyw3IEBAIHZvaWQgUmVu
ZGVyVGFibGVTZWN0aW9uOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhCiAgICAgICAgICAgICAvLyBUbyBtYWtlIHN1cmUgd2UgcHJvcGVybHkg
cmVwYWludCB0aGUgc2VjdGlvbiwgd2UgcmVwYWludCBhbGwgdGhlIG92ZXJmbG93aW5nIGNlbGxz
IHRoYXQgd2UgY29sbGVjdGVkLgogICAgICAgICAgICAgYXV0byBjZWxscyA9IGNvcHlUb1ZlY3Rv
cihtX292ZXJmbG93aW5nQ2VsbHMpOwogCi0gICAgICAgICAgICBXZWFrSGFzaFNldDxSZW5kZXJU
YWJsZUNlbGw+IHNwYW5uaW5nQ2VsbHM7CisgICAgICAgICAgICBIYXNoU2V0PFJlbmRlclRhYmxl
Q2VsbCo+IHNwYW5uaW5nQ2VsbHM7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgciA9IGRp
cnRpZWRSb3dzLnN0YXJ0OyByIDwgZGlydGllZFJvd3MuZW5kOyByKyspIHsKICAgICAgICAgICAg
ICAgICBSZW5kZXJUYWJsZVJvdyogcm93ID0gbV9ncmlkW3JdLnJvd1JlbmRlcmVyOwpAQCAtMTMw
Miw3ICsxMzAyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50T2JqZWN0KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJl
bnQuY2VsbHNbaV0tPnJvd1NwYW4oKSA+IDEgfHwgY3VycmVudC5jZWxsc1tpXS0+Y29sU3Bhbigp
ID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3Bhbm5pbmdDZWxscy5h
ZGQoKmN1cnJlbnQuY2VsbHNbaV0pLmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzcGFubmluZ0NlbGxzLmFkZChjdXJyZW50LmNlbGxzW2ldKS5pc05ld0VudHJ5
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Nl
bGVjdGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9u
UmFuZ2VEYXRhLmNwcAppbmRleCBhZGVjZTQxYjJhMDQuLjlkMDY0NWM3YjM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6Y2xlYXIoKQogCiB2b2lkIFNlbGVj
dGlvblJhbmdlRGF0YTo6cmVwYWludCgpIGNvbnN0CiB7Ci0gICAgV2Vha0hhc2hTZXQ8UmVuZGVy
QmxvY2s+IHByb2Nlc3NlZEJsb2NrczsKKyAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vz
c2VkQmxvY2tzOwogICAgIFJlbmRlck9iamVjdCogZW5kID0gbnVsbHB0cjsKICAgICBpZiAobV9y
ZW5kZXJSYW5nZS5lbmQoKSkKICAgICAgICAgZW5kID0gcmVuZGVyZXJBZnRlck9mZnNldCgqbV9y
ZW5kZXJSYW5nZS5lbmQoKSwgbV9yZW5kZXJSYW5nZS5lbmRPZmZzZXQoKSk7CkBAIC0xNTQsNyAr
MTU0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnJlcGFpbnQoKSBjb25zdAogICAgICAg
ICBSZW5kZXJTZWxlY3Rpb25HZW9tZXRyeSgqcmVuZGVyZXIsIHRydWUpLnJlcGFpbnQoKTsKICAg
ICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFu
ZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCiAgICAgICAgIGZv
ciAoYXV0byogYmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnJlbmRlcmVyKTsgYmxv
Y2s7IGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpibG9jaykpIHsKLSAgICAgICAg
ICAgIGlmICghcHJvY2Vzc2VkQmxvY2tzLmFkZCgqYmxvY2spLmlzTmV3RW50cnkpCisgICAgICAg
ICAgICBpZiAoIXByb2Nlc3NlZEJsb2Nrcy5hZGQoYmxvY2spLmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBSZW5kZXJTZWxlY3Rpb25HZW9tZXRyeSgqYmxv
Y2ssIHRydWUpLnJlcGFpbnQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMjM0ODJiNDM1Mjc1Li4wMDI4ZWEwODQ5
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cApAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Ym91bmRpbmdSZWN0cyhW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYKIHZvaWQgUmVuZGVy
U1ZHUm9vdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewogICAgIGF1dG8qIGZyYWdtZW50ZWRGbG93ID0gZW5jbG9zaW5nRnJh
Z21lbnRlZEZsb3coKTsKLSAgICBpZiAoZnJhZ21lbnRlZEZsb3cgJiYgZnJhZ21lbnRlZEZsb3ct
PmFic29sdXRlUXVhZHNGb3JCb3gocXVhZHMsIHdhc0ZpeGVkLCAqdGhpcykpCisgICAgaWYgKGZy
YWdtZW50ZWRGbG93ICYmIGZyYWdtZW50ZWRGbG93LT5hYnNvbHV0ZVF1YWRzRm9yQm94KHF1YWRz
LCB3YXNGaXhlZCwgdGhpcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIHF1YWRzLmFwcGVuZChs
b2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCB7IGJvcmRlckJveFJlY3QoKSB9LCBVc2VUcmFu
c2Zvcm1zLCB3YXNGaXhlZCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>