<?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>126256</bug_id>
          
          <creation_ts>2013-12-27 00:20:44 -0800</creation_ts>
          <short_desc>REGRESSION(r161096): Made lots of tests crash (Requested by ap on #webkit).</short_desc>
          <delta_ts>2013-12-27 00:23:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126250</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>963082</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-27 00:20:44 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/161096 broke the build:
Made lots of tests crash (Requested by ap on #webkit).

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>963084</commentid>
    <comment_count>1</comment_count>
      <attachid>220052</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-27 00:20:56 -0800</bug_when>
    <thetext>Created attachment 220052
ROLLOUT of r161096

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 rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout 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>963085</commentid>
    <comment_count>2</comment_count>
      <attachid>220052</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-27 00:23:09 -0800</bug_when>
    <thetext>Comment on attachment 220052
ROLLOUT of r161096

Clearing flags on attachment: 220052

Committed r161097: &lt;http://trac.webkit.org/changeset/161097&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963086</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-27 00:23:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220052</attachid>
            <date>2013-12-27 00:20:56 -0800</date>
            <delta_ts>2013-12-27 00:23:09 -0800</delta_ts>
            <desc>ROLLOUT of r161096</desc>
            <filename>bug-126256-20131227002055.patch</filename>
            <type>text/plain</type>
            <size>42287</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxMDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM5NzNhMmQzOTI3Zjcz
NmEwYWI1OWFjY2YxODE2YTRhNzNmNzlhOS4uNDRmMGJjNzJiNmRkYTg3ZDhhNjRlODA3MTcwNzE4
MjEyZTk3ZmY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEzLTEyLTI3ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTYxMDk2LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xNjEwOTYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjI1NgorCisgICAgICAgIE1hZGUgbG90cyBvZiB0ZXN0cyBjcmFzaCAoUmVxdWVz
dGVkIGJ5IGFwIG9uICN3ZWJraXQpLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjp3aWxsUmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnRleHRJbnNlcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6dGV4dFJlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRleHROb2Rl
c01lcmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dE5vZGVTcGxpdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9jdW1lbnRXaWxsU3VzcGVuZEZvclBhZ2VDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFn
ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjptZWRpYVZvbHVtZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcHRpb25QcmVmZXJlbmNlc0No
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnZhbGlkYXRlQXV0b1NpemluZ05v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXNldEF1dG9TaXppbmdOb2Rlcyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4pOgorICAg
ICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uT2JzZXJ2ZXI6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNl
cnZlcjo6Z2V0T2JzZXJ2ZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2Vy
dmVyOjpkZWxpdmVyKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmlzT2xkVmFsdWVSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXA6OmVucXVldWVNdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6Y2xlYXJUcmFuc2llbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmFkZFJlZ2lzdHJh
dGlvbk5vZGVzVG9TZXQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmR1bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpp
bnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVMaXN0c05vZGVEYXRhOjppbnZhbGlkYXRlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RN
YXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5v
dGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2gpOgorICAgICAgICAqIGRvbS9Ob2Rl
UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZG9wdERv
Y3VtZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNsb3NlTWVzc2FnZVBvcnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFkanVzdE1pbmlt
dW1UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmRpZENoYW5nZVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwpOgorICAgICAgICAqIGRvbS9XZWJL
aXROYW1lZEZsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93OjpnZXRS
ZWdpb25zQnlDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Z2V0
UmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldENvbnRlbnQp
OgorCiAyMDEzLTEyLTI2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Q29udmVydCBzb21lIG9mIFdlYkNvcmUvZG9tIG92ZXIgdG8gcmFuZ2UtZm9yIGxvb3BzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNDM3NjRmZjk2MWUxYjBjYjQ1YTM4NzBj
YjNmZmEwNTM2OWYzMDZiYy4uNDI1NzY5MzJiODBlOGNmMmNlNGE4OGI4ZDNjNTFiMmU3Yzc1ZDgx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzAxLDIxICszMDEsMjMg
QEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdD
aGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxJbnNlcnRET01Ob2RlKCZkb2N1bWVudCgpLCB0aGlzKTsKIAogICAgIENoaWxkTGlzdE11
dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwotICAgIGZvciAoYXV0byYgY2hpbGQgOiB0YXJn
ZXRzKSB7CisgICAgZm9yIChhdXRvIGl0ID0gdGFyZ2V0cy5iZWdpbigpLCBlbmQgPSB0YXJnZXRz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTm9kZSYgY2hpbGQgPSBpdC0+Z2V0
KCk7CisKICAgICAgICAgLy8gRHVlIHRvIGFyYml0cmFyeSBjb2RlIHJ1bm5pbmcgaW4gcmVzcG9u
c2UgdG8gYSBET00gbXV0YXRpb24gZXZlbnQgaXQncwogICAgICAgICAvLyBwb3NzaWJsZSB0aGF0
ICJuZXh0IiBpcyBubyBsb25nZXIgYSBjaGlsZCBvZiAidGhpcyIuCiAgICAgICAgIC8vIEl0J3Mg
YWxzbyBwb3NzaWJsZSB0aGF0ICJjaGlsZCIgaGFzIGJlZW4gaW5zZXJ0ZWQgZWxzZXdoZXJlLgog
ICAgICAgICAvLyBJbiBlaXRoZXIgb2YgdGhvc2UgY2FzZXMsIHdlJ2xsIGp1c3Qgc3RvcC4KICAg
ICAgICAgaWYgKG5leHQtPnBhcmVudE5vZGUoKSAhPSB0aGlzKQogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICBpZiAoY2hpbGQucGFy
ZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgdHJlZVNjb3BlKCkuYWRv
cHRJZk5lZWRlZCgmY2hpbGQuZ2V0KCkpOworICAgICAgICB0cmVlU2NvcGUoKS5hZG9wdElmTmVl
ZGVkKCZjaGlsZCk7CiAKLSAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQuZ2V0KCksIGNo
aWxkLmdldCgpKTsKKyAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQuZ2V0KCksIGNoaWxk
KTsKIAotICAgICAgICB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oY2hpbGQuZ2V0KCkpOworICAg
ICAgICB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oY2hpbGQpOwogICAgIH0KIAogICAgIGRpc3Bh
dGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKQEAgLTQ1NSwyOCArNDU3LDMwIEBAIGJvb2wgQ29u
dGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUq
IG9sZENoaWxkLCBFeGNlCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0
RE9NTm9kZSgmZG9jdW1lbnQoKSwgdGhpcyk7CiAKICAgICAvLyBBZGQgdGhlIG5ldyBjaGlsZChy
ZW4pCi0gICAgZm9yIChhdXRvJiBjaGlsZCA6IHRhcmdldHMpIHsKKyAgICBmb3IgKGF1dG8gaXQg
PSB0YXJnZXRzLmJlZ2luKCksIGVuZCA9IHRhcmdldHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBOb2RlJiBjaGlsZCA9IGl0LT5nZXQoKTsKKwogICAgICAgICAvLyBEdWUgdG8g
YXJiaXRyYXJ5IGNvZGUgcnVubmluZyBpbiByZXNwb25zZSB0byBhIERPTSBtdXRhdGlvbiBldmVu
dCBpdCdzCiAgICAgICAgIC8vIHBvc3NpYmxlIHRoYXQgIm5leHQiIGlzIG5vIGxvbmdlciBhIGNo
aWxkIG9mICJ0aGlzIi4KICAgICAgICAgLy8gSXQncyBhbHNvIHBvc3NpYmxlIHRoYXQgImNoaWxk
IiBoYXMgYmVlbiBpbnNlcnRlZCBlbHNld2hlcmUuCiAgICAgICAgIC8vIEluIGVpdGhlciBvZiB0
aG9zZSBjYXNlcywgd2UnbGwganVzdCBzdG9wLgogICAgICAgICBpZiAobmV4dCAmJiBuZXh0LT5w
YXJlbnROb2RlKCkgIT0gdGhpcykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoY2hp
bGQtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgaWYgKGNoaWxkLnBhcmVudE5vZGUoKSkKICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVkZWQoJmNoaWxk
LmdldCgpKTsKKyAgICAgICAgdHJlZVNjb3BlKCkuYWRvcHRJZk5lZWRlZCgmY2hpbGQpOwogCiAg
ICAgICAgIC8vIEFkZCBjaGlsZCBiZWZvcmUgIm5leHQiLgogICAgICAgICB7CiAgICAgICAgICAg
ICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwogICAgICAg
ICAgICAgaWYgKG5leHQpCi0gICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKCpuZXh0
LCBjaGlsZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKCpuZXh0
LCBjaGlsZCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGRU
b0NvbnRhaW5lcigmY2hpbGQuZ2V0KCksICp0aGlzKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRD
aGlsZFRvQ29udGFpbmVyKCZjaGlsZCwgKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdXBk
YXRlVHJlZUFmdGVySW5zZXJ0aW9uKGNoaWxkLmdldCgpKTsKKyAgICAgICAgdXBkYXRlVHJlZUFm
dGVySW5zZXJ0aW9uKGNoaWxkKTsKICAgICB9CiAKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmll
ZEV2ZW50KCk7CkBAIC01MDEsMTIgKzUwNSwxMyBAQCBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlQ2hp
bGRyZW4oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyKQogICAgIGdldENoaWxkTm9kZXMoY29udGFp
bmVyLCBjaGlsZHJlbik7CiAKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNv
bnRhaW5lcik7Ci0gICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIG11
dGF0aW9uLndpbGxSZW1vdmVDaGlsZChjaGlsZC5nZXQoKSk7Ci0gICAgICAgIGNoaWxkLT5ub3Rp
ZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxsRGV0YWNoKCk7CisgICAgZm9yIChhdXRvIGl0ID0g
Y2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7ICsraXQpIHsKKyAgICAgICAg
Tm9kZSYgY2hpbGQgPSBpdC0+Z2V0KCk7CisgICAgICAgIG11dGF0aW9uLndpbGxSZW1vdmVDaGls
ZChjaGlsZCk7CisgICAgICAgIGNoaWxkLm5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxE
ZXRhY2goKTsKIAogICAgICAgICAvLyBmaXJlIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBtdXRhdGlv
biBldmVudHMuCi0gICAgICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkLmdldCgp
KTsKKyAgICAgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwogICAgIH0KIAog
ICAgIGNvbnRhaW5lci5kb2N1bWVudCgpLm5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoY29udGFp
bmVyKTsKQEAgLTcwNCwyMiArNzA5LDI0IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAv
LyBOb3cgYWN0dWFsbHkgYWRkIHRoZSBjaGlsZChyZW4pCiAgICAgQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZSBtdXRhdGlvbigqdGhpcyk7Ci0gICAgZm9yIChhdXRvJiBjaGlsZCA6IHRhcmdldHMpIHsK
KyAgICBmb3IgKGF1dG8gaXQgPSB0YXJnZXRzLmJlZ2luKCksIGVuZCA9IHRhcmdldHMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBOb2RlJiBjaGlsZCA9IGl0LT5nZXQoKTsKKwog
ICAgICAgICAvLyBJZiB0aGUgY2hpbGQgaGFzIGEgcGFyZW50IGFnYWluLCBqdXN0IHN0b3Agd2hh
dCB3ZSdyZSBkb2luZywgYmVjYXVzZQogICAgICAgICAvLyB0aGF0IG1lYW5zIHNvbWVvbmUgaXMg
ZG9pbmcgc29tZXRoaW5nIHdpdGggRE9NIG11dGF0aW9uIC0tIGNhbid0IHJlLXBhcmVudAogICAg
ICAgICAvLyBhIGNoaWxkIHRoYXQgYWxyZWFkeSBoYXMgYSBwYXJlbnQuCi0gICAgICAgIGlmIChj
aGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgdHJlZVNjb3BlKCkuYWRvcHRJZk5lZWRlZCgmY2hp
bGQuZ2V0KCkpOworICAgICAgICB0cmVlU2NvcGUoKS5hZG9wdElmTmVlZGVkKCZjaGlsZCk7CiAK
ICAgICAgICAgLy8gQXBwZW5kIGNoaWxkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKICAgICAgICAg
ewogICAgICAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNw
YXRjaDsKLSAgICAgICAgICAgIGFwcGVuZENoaWxkVG9Db250YWluZXIoJmNoaWxkLmdldCgpLCAq
dGhpcyk7CisgICAgICAgICAgICBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKCZjaGlsZCwgKnRoaXMp
OwogICAgICAgICB9CiAKLSAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKGNoaWxkLmdl
dCgpKTsKKyAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKGNoaWxkKTsKICAgICB9CiAK
ICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCBmYWQ3YmZiMDIzNzRmZTljMjFkNzA1OTljNDI4YTQ2NjFmZWMwNWM5Li43NTM0ZDZj
Njk5M2VhNDlhODJmYjYzNjMyMTgzMzJiZTFhMzhmODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTE1NTMsOCArMTU1Myw4IEBAIHZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JWaXNp
YmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQqIGVsZW1lbnQpCiB2b2lkIERvY3Vt
ZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKIHsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnZpc2liaWxpdHljaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNl
KSk7Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0Vs
ZW1lbnRzKQotICAgICAgICBlbGVtZW50LT52aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCk7CisgICAg
Zm9yIChhdXRvIGl0ID0gbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0VsZW1lbnRzLmJlZ2luKCk7
IGl0ICE9IG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tFbGVtZW50cy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgKCppdCktPnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKIH0KIAogUGFnZVZpc2liaWxp
dHlTdGF0ZSBEb2N1bWVudDo6cGFnZVZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0CkBAIC0zNTMwLDEx
ICszNTMwLDEyIEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaE5vZGVJdGVyYXRvcihOb2RlSXRlcmF0
b3IqIG5pKQogCiB2b2lkIERvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQo
Tm9kZSogbm9kZSwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogewotICAgIEhhc2hTZXQ8Tm9kZUl0
ZXJhdG9yKj4gbm9kZUl0ZXJhdG9yc0NvcHkgPSBtX25vZGVJdGVyYXRvcnM7Ci0gICAgZm9yIChh
dXRvKiBub2RlSXRlcmF0b3IgOiBub2RlSXRlcmF0b3JzQ29weSkgewotICAgICAgICBpZiAobm9k
ZUl0ZXJhdG9yLT5yb290KCkgPT0gbm9kZSkgewotICAgICAgICAgICAgZGV0YWNoTm9kZUl0ZXJh
dG9yKG5vZGVJdGVyYXRvcik7Ci0gICAgICAgICAgICBuZXdEb2N1bWVudC0+YXR0YWNoTm9kZUl0
ZXJhdG9yKG5vZGVJdGVyYXRvcik7CisgICAgSGFzaFNldDxOb2RlSXRlcmF0b3IqPiBub2RlSXRl
cmF0b3JzTGlzdCA9IG1fbm9kZUl0ZXJhdG9yczsKKyAgICBIYXNoU2V0PE5vZGVJdGVyYXRvcio+
Ojpjb25zdF9pdGVyYXRvciBub2RlSXRlcmF0b3JzRW5kID0gbm9kZUl0ZXJhdG9yc0xpc3QuZW5k
KCk7CisgICAgZm9yIChIYXNoU2V0PE5vZGVJdGVyYXRvcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG5vZGVJdGVyYXRvcnNMaXN0LmJlZ2luKCk7IGl0ICE9IG5vZGVJdGVyYXRvcnNFbmQ7ICsraXQp
IHsKKyAgICAgICAgaWYgKCgqaXQpLT5yb290KCkgPT0gbm9kZSkgeworICAgICAgICAgICAgZGV0
YWNoTm9kZUl0ZXJhdG9yKCppdCk7CisgICAgICAgICAgICBuZXdEb2N1bWVudC0+YXR0YWNoTm9k
ZUl0ZXJhdG9yKCppdCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zNTQyLDIxICszNTQzLDIx
IEBAIHZvaWQgRG9jdW1lbnQ6Om1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChOb2RlKiBu
b2RlLCBEb2N1bWVudCogbmV3RG9jdW1lbnQpCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVSYW5nZXNB
ZnRlckNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlJiBjb250YWluZXIpCiB7CiAgICAgaWYg
KCFtX3Jhbmdlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiByYW5nZSA6IG1fcmFu
Z2VzKQotICAgICAgICAgICAgcmFuZ2UtPm5vZGVDaGlsZHJlbkNoYW5nZWQoY29udGFpbmVyKTsK
KyAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9yYW5nZXMuYmVnaW4oKSwgZW5kID0gbV9yYW5nZXMu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICgqaXQpLT5ub2RlQ2hpbGRyZW5D
aGFuZ2VkKGNvbnRhaW5lcik7CiAgICAgfQogfQogCiB2b2lkIERvY3VtZW50Ojpub2RlQ2hpbGRy
ZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lcikKIHsKICAgICBpZiAoIW1f
cmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJhbmdlIDogbV9yYW5nZXMp
Ci0gICAgICAgICAgICByYW5nZS0+bm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChjb250YWluZXIp
OworICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX3Jhbmdlcy5iZWdpbigpLCBlbmQgPSBtX3Jhbmdl
cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgKCppdCktPm5vZGVDaGlsZHJl
bldpbGxCZVJlbW92ZWQoY29udGFpbmVyKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8qIG5vZGVJ
dGVyYXRvciA6IG1fbm9kZUl0ZXJhdG9ycykgeworICAgIGZvciAoYXV0byBpdCA9IG1fbm9kZUl0
ZXJhdG9ycy5iZWdpbigpLCBlbmQgPSBtX25vZGVJdGVyYXRvcnMuZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICBmb3IgKE5vZGUqIG4gPSBjb250YWluZXIuZmlyc3RDaGlsZCgpOyBu
OyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIG5vZGVJdGVyYXRvci0+bm9kZVdp
bGxCZVJlbW92ZWQobik7CisgICAgICAgICAgICAoKml0KS0+bm9kZVdpbGxCZVJlbW92ZWQobik7
CiAgICAgfQogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKQEAgLTM1
NzAsMTIgKzM1NzEsMTQgQEAgdm9pZCBEb2N1bWVudDo6bm9kZUNoaWxkcmVuV2lsbEJlUmVtb3Zl
ZChDb250YWluZXJOb2RlJiBjb250YWluZXIpCiAKIHZvaWQgRG9jdW1lbnQ6Om5vZGVXaWxsQmVS
ZW1vdmVkKE5vZGUqIG4pCiB7Ci0gICAgZm9yIChhdXRvKiBub2RlSXRlcmF0b3IgOiBtX25vZGVJ
dGVyYXRvcnMpCi0gICAgICAgIG5vZGVJdGVyYXRvci0+bm9kZVdpbGxCZVJlbW92ZWQobik7Cisg
ICAgSGFzaFNldDxOb2RlSXRlcmF0b3IqPjo6Y29uc3RfaXRlcmF0b3Igbm9kZUl0ZXJhdG9yc0Vu
ZCA9IG1fbm9kZUl0ZXJhdG9ycy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8Tm9kZUl0ZXJhdG9y
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2RlSXRlcmF0b3JzLmJlZ2luKCk7IGl0ICE9IG5v
ZGVJdGVyYXRvcnNFbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5ub2RlV2lsbEJlUmVtb3ZlZChu
KTsKIAogICAgIGlmICghbV9yYW5nZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byog
cmFuZ2UgOiBtX3JhbmdlcykKLSAgICAgICAgICAgIHJhbmdlLT5ub2RlV2lsbEJlUmVtb3ZlZChu
KTsKKyAgICAgICAgSGFzaFNldDxSYW5nZSo+Ojpjb25zdF9pdGVyYXRvciByYW5nZXNFbmQgPSBt
X3Jhbmdlcy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFJhbmdlKj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9yYW5nZXMuYmVnaW4oKTsgaXQgIT0gcmFuZ2VzRW5kOyArK2l0KQorICAgICAg
ICAgICAgKCppdCktPm5vZGVXaWxsQmVSZW1vdmVkKG4pOwogICAgIH0KIAogICAgIGlmIChGcmFt
ZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CkBAIC0zNTg4LDggKzM1OTEsOSBAQCB2b2lkIERv
Y3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBuKQogdm9pZCBEb2N1bWVudDo6dGV4dElu
c2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIGlmICghbV9yYW5nZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogcmFuZ2Ug
OiBtX3JhbmdlcykKLSAgICAgICAgICAgIHJhbmdlLT50ZXh0SW5zZXJ0ZWQodGV4dCwgb2Zmc2V0
LCBsZW5ndGgpOworICAgICAgICBIYXNoU2V0PFJhbmdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fcmFuZ2VzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8UmFuZ2UqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX3Jhbmdlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAg
ICAoKml0KS0+dGV4dEluc2VydGVkKHRleHQsIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9CiAKICAg
ICAvLyBVcGRhdGUgdGhlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNraW5n
LgpAQCAtMzU5OSw4ICszNjAzLDkgQEAgdm9pZCBEb2N1bWVudDo6dGV4dEluc2VydGVkKE5vZGUq
IHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogdm9pZCBEb2N1bWVudDo6
dGV4dFJlbW92ZWQoTm9kZSogdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgaWYgKCFtX3Jhbmdlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiBy
YW5nZSA6IG1fcmFuZ2VzKQotICAgICAgICAgICAgcmFuZ2UtPnRleHRSZW1vdmVkKHRleHQsIG9m
ZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgSGFzaFNldDxSYW5nZSo+Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX3Jhbmdlcy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFJhbmdlKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9yYW5nZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICAgICAgKCppdCktPnRleHRSZW1vdmVkKHRleHQsIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9CiAK
ICAgICAvLyBVcGRhdGUgdGhlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNr
aW5nLgpAQCAtMzYxMiw4ICszNjE3LDkgQEAgdm9pZCBEb2N1bWVudDo6dGV4dE5vZGVzTWVyZ2Vk
KFRleHQqIG9sZE5vZGUsIHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBpZiAoIW1fcmFuZ2VzLmlz
RW1wdHkoKSkgewogICAgICAgICBOb2RlV2l0aEluZGV4IG9sZE5vZGVXaXRoSW5kZXgob2xkTm9k
ZSk7Ci0gICAgICAgIGZvciAoYXV0byogcmFuZ2UgOiBtX3JhbmdlcykKLSAgICAgICAgICAgIHJh
bmdlLT50ZXh0Tm9kZXNNZXJnZWQob2xkTm9kZVdpdGhJbmRleCwgb2Zmc2V0KTsKKyAgICAgICAg
SGFzaFNldDxSYW5nZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jhbmdlcy5lbmQoKTsKKyAg
ICAgICAgZm9yIChIYXNoU2V0PFJhbmdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yYW5nZXMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgKCppdCktPnRleHROb2Rlc01l
cmdlZChvbGROb2RlV2l0aEluZGV4LCBvZmZzZXQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCB1cGRhdGUgbWFya2VycyBmb3Igc3BlbGxpbmcgYW5kIGdyYW1tYXIgY2hlY2tp
bmcuCkBAIC0zNjIyLDggKzM2MjgsOSBAQCB2b2lkIERvY3VtZW50Ojp0ZXh0Tm9kZXNNZXJnZWQo
VGV4dCogb2xkTm9kZSwgdW5zaWduZWQgb2Zmc2V0KQogdm9pZCBEb2N1bWVudDo6dGV4dE5vZGVT
cGxpdChUZXh0KiBvbGROb2RlKQogewogICAgIGlmICghbV9yYW5nZXMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGZvciAoYXV0byogcmFuZ2UgOiBtX3JhbmdlcykKLSAgICAgICAgICAgIHJhbmdlLT50
ZXh0Tm9kZVNwbGl0KG9sZE5vZGUpOworICAgICAgICBIYXNoU2V0PFJhbmdlKj46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fcmFuZ2VzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8UmFuZ2Uq
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jhbmdlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICAgICAoKml0KS0+dGV4dE5vZGVTcGxpdChvbGROb2RlKTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXBkYXRlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBn
cmFtbWFyIGNoZWNraW5nLgpAQCAtNDA4OCw4ICs0MDk1LDkgQEAgdm9pZCBEb2N1bWVudDo6ZG9j
dW1lbnRXaWxsU3VzcGVuZEZvclBhZ2VDYWNoZSgpCiB7CiAgICAgZG9jdW1lbnRXaWxsQmVjb21l
SW5hY3RpdmUoKTsKIAotICAgIGZvciAoYXV0byogZWxlbWVudCA6IG1fZG9jdW1lbnRTdXNwZW5z
aW9uQ2FsbGJhY2tFbGVtZW50cykKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnRXaWxsU3VzcGVu
ZEZvclBhZ2VDYWNoZSgpOworICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBt
X2RvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxlbWVudHMuZW5kKCk7CisgICAgZm9yIChIYXNo
U2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgaSA9IG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tF
bGVtZW50cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKQorICAgICAgICAoKmkpLT5kb2N1bWVudFdp
bGxTdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gQ2xlYXIg
dGhlIHVwZGF0ZSBmbGFnIHRvIGJlIGFibGUgdG8gY2hlY2sgaWYgdGhlIHZpZXdwb3J0IGFyZ3Vt
ZW50cyB1cGRhdGUKQEAgLTQxMDIsOCArNDExMCw5IEBAIHZvaWQgRG9jdW1lbnQ6OmRvY3VtZW50
RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpCiB7CiAgICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50
czsKICAgICBjb3B5VG9WZWN0b3IobV9kb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRz
LCBlbGVtZW50cyk7Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDogZWxlbWVudHMpCi0gICAgICAg
IGVsZW1lbnQtPmRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpOworICAgIFZlY3RvcjxF
bGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IGVsZW1lbnRzLmVuZCgpOworICAgIGZvciAoVmVjdG9y
PEVsZW1lbnQqPjo6aXRlcmF0b3IgaSA9IGVsZW1lbnRzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kp
CisgICAgICAgICgqaSktPmRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChyZW5kZXJWaWV3KCkpCkBAIC00
MTI5LDggKzQxMzgsOSBAQCB2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3Vz
cGVuc2lvbkNhbGxiYWNrcyhFbGVtZW50KiBlKQogCiB2b2lkIERvY3VtZW50OjptZWRpYVZvbHVt
ZURpZENoYW5nZSgpIAogewotICAgIGZvciAoYXV0byogZWxlbWVudCA6IG1fbWVkaWFWb2x1bWVD
YWxsYmFja0VsZW1lbnRzKQotICAgICAgICBlbGVtZW50LT5tZWRpYVZvbHVtZURpZENoYW5nZSgp
OworICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX21lZGlhVm9sdW1lQ2Fs
bGJhY2tFbGVtZW50cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRv
ciBpID0gbV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsr
aSkKKyAgICAgICAgKCppKS0+bWVkaWFWb2x1bWVEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBEb2N1
bWVudDo6cmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyhFbGVtZW50KiBlKQpAQCAtNDE1
MSw4ICs0MTYxLDkgQEAgdm9pZCBEb2N1bWVudDo6c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFu
Z2UoKQogCiB2b2lkIERvY3VtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIAog
ewotICAgIGZvciAoYXV0byogZWxlbWVudCA6IG1fcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
RWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdl
KCk7CisgICAgSGFzaFNldDxFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IG1fcHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkRWxlbWVudHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEVsZW1lbnQq
Pjo6aXRlcmF0b3IgaXQgPSBtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPnByaXZhdGVCcm93c2luZ1N0
YXRlRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yUHJpdmF0ZUJy
b3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQqIGUpCkBAIC00MTgxLDggKzQxOTIs
OSBAQCB2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZENhbGxiYWNrcyhFbGVtZW50KiBlKQogCiB2b2lkIERvY3VtZW50OjpjYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKCkKIHsKLSAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBtX2NhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRFbGVtZW50cykKLSAgICAgICAgZWxlbWVudC0+Y2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZCgpOworICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX2NhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRFbGVtZW50cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RWxl
bWVudCo+OjppdGVyYXRvciBpdCA9IG1fY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZEVsZW1lbnRz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQoKTsKIH0KICNlbmRpZgogCkBAIC00ODMwLDggKzQ4NDIsOCBAQCB2b2lkIERv
Y3VtZW50OjphZGRBdXRvU2l6aW5nTm9kZShOb2RlKiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXpl
KQogdm9pZCBEb2N1bWVudDo6dmFsaWRhdGVBdXRvU2l6aW5nTm9kZXMoKQogewogICAgIFZlY3Rv
cjxUZXh0QXV0b1NpemluZ0tleT4gbm9kZXNGb3JSZW1vdmFsOwotICAgIGZvciAoYXV0byYgYXV0
b1NpemluZ0tleVZhbHVlUGFpciA6IG1fdGV4dEF1dG9TaXplZE5vZGVzKSB7Ci0gICAgICAgIFJl
ZlB0cjxUZXh0QXV0b1NpemluZ1ZhbHVlPiB2YWx1ZSA9IGF1dG9TaXppbmdLZXlWYWx1ZVBhaXIu
dmFsdWU7CisgICAgZm9yIChhdXRvIGl0ID0gbV90ZXh0QXV0b1NpemVkTm9kZXMuYmVnaW4oKSwg
ZW5kID0gbV90ZXh0QXV0b1NpemVkTm9kZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBSZWZQdHI8VGV4dEF1dG9TaXppbmdWYWx1ZT4gdmFsdWUgPSBpdC0+dmFsdWU7CiAgICAg
ICAgIC8vIFVwZGF0ZSBhbGwgdGhlIG5vZGVzIGluIHRoZSBjb2xsZWN0aW9uIHRvIHJlZmxlY3Qg
dGhlIG5ldwogICAgICAgICAvLyBjYW5kaWRhdGUgc2l6ZS4KICAgICAgICAgaWYgKCF2YWx1ZSkK
QEAgLTQ4MzksNyArNDg1MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnZhbGlkYXRlQXV0b1NpemluZ05v
ZGVzKCkKIAogICAgICAgICB2YWx1ZS0+YWRqdXN0Tm9kZVNpemVzKCk7CiAgICAgICAgIGlmICgh
dmFsdWUtPm51bU5vZGVzKCkpCi0gICAgICAgICAgICBub2Rlc0ZvclJlbW92YWwuYXBwZW5kKGF1
dG9TaXppbmdLZXlWYWx1ZVBhaXIua2V5KTsKKyAgICAgICAgICAgIG5vZGVzRm9yUmVtb3ZhbC5h
cHBlbmQoaXQtPmtleSk7CiAgICAgfQogICAgIHVuc2lnbmVkIGNvdW50ID0gbm9kZXNGb3JSZW1v
dmFsLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKQEAg
LTQ4NDgsOSArNDg2MCwxMCBAQCB2b2lkIERvY3VtZW50Ojp2YWxpZGF0ZUF1dG9TaXppbmdOb2Rl
cygpCiAgICAgCiB2b2lkIERvY3VtZW50OjpyZXNldEF1dG9TaXppbmdOb2RlcygpCiB7Ci0gICAg
Zm9yIChhdXRvJiBhdXRvU2l6aW5nVmFsdWUgOiBtX3RleHRBdXRvU2l6ZWROb2Rlcy52YWx1ZXMo
KSkgewotICAgICAgICBpZiAoYXV0b1NpemluZ1ZhbHVlKQotICAgICAgICAgICAgYXV0b1Npemlu
Z1ZhbHVlLT5yZXNldCgpOworICAgIGZvciAoYXV0byBpdCA9IG1fdGV4dEF1dG9TaXplZE5vZGVz
LmJlZ2luKCksIGVuZCA9IG1fdGV4dEF1dG9TaXplZE5vZGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKKyAgICAgICAgUmVmUHRyPFRleHRBdXRvU2l6aW5nVmFsdWU+IHZhbHVlID0gaXQtPnZh
bHVlOworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICB2YWx1ZS0+cmVzZXQoKTsKICAg
ICB9CiAgICAgbV90ZXh0QXV0b1NpemVkTm9kZXMuY2xlYXIoKTsKIH0KQEAgLTUyODcsOSArNTMw
MCw5IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRGdWxsc2NyZWVuKCkKICAgICAgICAgCiAg
ICAgLy8gNC4gRm9yIGVhY2ggZGVzY2VuZGFudCBpbiBkZXNjZW5kYW50cywgZW1wdHkgZGVzY2Vu
ZGFudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjaywgYW5kIHF1ZXVlIGEKICAgICAvLyB0YXNr
IHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0cyBidWJibGVz
IGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSBvbiBkZXNjZW5kYW50LgotICAgIGZvciAoYXV0byYgZGVz
Y2VuZGFudCA6IGRlc2NlbmRhbnRzKSB7Ci0gICAgICAgIGRlc2NlbmRhbnQtPmNsZWFyRnVsbHNj
cmVlbkVsZW1lbnRTdGFjaygpOwotICAgICAgICBhZGREb2N1bWVudFRvRnVsbFNjcmVlbkNoYW5n
ZUV2ZW50UXVldWUoZGVzY2VuZGFudC5nZXQoKSk7CisgICAgZm9yIChEZXF1ZTxSZWZQdHI8RG9j
dW1lbnQ+Pjo6aXRlcmF0b3IgaSA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGkgIT0gZGVzY2VuZGFu
dHMuZW5kKCk7ICsraSkgeworICAgICAgICAoKmkpLT5jbGVhckZ1bGxzY3JlZW5FbGVtZW50U3Rh
Y2soKTsKKyAgICAgICAgYWRkRG9jdW1lbnRUb0Z1bGxTY3JlZW5DaGFuZ2VFdmVudFF1ZXVlKGkt
PmdldCgpKTsKICAgICB9CiAKICAgICAvLyA1LiBXaGlsZSBkb2MgaXMgbm90IG51bGwsIHJ1biB0
aGVzZSBzdWJzdGVwczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRl
eCBlNWQ1NmYwZTJkNTYwMjcwM2U4Y2Y1MDU2ZDZlNTU5MDFmNzYwMGExLi5iZjAwZmFjNDA5MTI2
ZDUzMTg0ZDJhMmZiZTc3ZmNjNjEzZmQwYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCkBAIC0xMTgsOCArMTE4LDggQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpk
aXNjb25uZWN0KCkKIHsKICAgICBtX3JlY29yZHMuY2xlYXIoKTsKICAgICBIYXNoU2V0PE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPiByZWdpc3RyYXRpb25zKG1fcmVnaXN0cmF0aW9ucyk7
Ci0gICAgZm9yIChhdXRvKiByZWdpc3RyYXRpb24gOiByZWdpc3RyYXRpb25zKQotICAgICAgICBN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyQW5kRGVsZXRlKHJlZ2lzdHJh
dGlvbik7CisgICAgZm9yIChIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPjo6
aXRlcmF0b3IgaXRlciA9IHJlZ2lzdHJhdGlvbnMuYmVnaW4oKTsgaXRlciAhPSByZWdpc3RyYXRp
b25zLmVuZCgpOyArK2l0ZXIpCisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246
OnVucmVnaXN0ZXJBbmREZWxldGUoKml0ZXIpOwogfQogCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6
Om9ic2VydmF0aW9uU3RhcnRlZChNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3Ry
YXRpb24pCkBAIC0xNjQsOCArMTY0LDggQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpzZXRIYXNU
cmFuc2llbnRSZWdpc3RyYXRpb24oKQogSGFzaFNldDxOb2RlKj4gTXV0YXRpb25PYnNlcnZlcjo6
Z2V0T2JzZXJ2ZWROb2RlcygpIGNvbnN0CiB7CiAgICAgSGFzaFNldDxOb2RlKj4gb2JzZXJ2ZWRO
b2RlczsKLSAgICBmb3IgKGF1dG8qIHJlZ2lzdHJhdGlvbiA6IG1fcmVnaXN0cmF0aW9ucykKLSAg
ICAgICAgcmVnaXN0cmF0aW9uLT5hZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KG9ic2VydmVkTm9k
ZXMpOworICAgIGZvciAoSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj46OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lzdHJhdGlvbnMuYmVnaW4oKTsgaXRlciAhPSBtX3Jl
Z2lzdHJhdGlvbnMuZW5kKCk7ICsraXRlcikKKyAgICAgICAgKCppdGVyKS0+YWRkUmVnaXN0cmF0
aW9uTm9kZXNUb1NldChvYnNlcnZlZE5vZGVzKTsKICAgICByZXR1cm4gb2JzZXJ2ZWROb2RlczsK
IH0KIApAQCAtMTgxLDkgKzE4MSw5IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlcigp
CiAgICAgLy8gQ2FsbGluZyBjbGVhclRyYW5zaWVudFJlZ2lzdHJhdGlvbnMoKSBjYW4gbW9kaWZ5
IG1fcmVnaXN0cmF0aW9ucywgc28gaXQncyBuZWNlc3NhcnkKICAgICAvLyB0byBtYWtlIGEgY29w
eSBvZiB0aGUgdHJhbnNpZW50IHJlZ2lzdHJhdGlvbnMgYmVmb3JlIG9wZXJhdGluZyBvbiB0aGVt
LgogICAgIFZlY3RvcjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiwgMT4gdHJhbnNpZW50
UmVnaXN0cmF0aW9uczsKLSAgICBmb3IgKGF1dG8qIHJlZ2lzdHJhdGlvbiA6IG1fcmVnaXN0cmF0
aW9ucykgewotICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5oYXNUcmFuc2llbnRSZWdpc3RyYXRp
b25zKCkpCi0gICAgICAgICAgICB0cmFuc2llbnRSZWdpc3RyYXRpb25zLmFwcGVuZChyZWdpc3Ry
YXRpb24pOworICAgIGZvciAoSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj46
Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lzdHJhdGlvbnMuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lz
dHJhdGlvbnMuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoKCppdGVyKS0+aGFzVHJhbnNp
ZW50UmVnaXN0cmF0aW9ucygpKQorICAgICAgICAgICAgdHJhbnNpZW50UmVnaXN0cmF0aW9ucy5h
cHBlbmQoKml0ZXIpOwogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zaWVu
dFJlZ2lzdHJhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHRyYW5zaWVudFJlZ2lzdHJhdGlv
bnNbaV0tPmNsZWFyVHJhbnNpZW50UmVnaXN0cmF0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggM2EwZDUz
ZTlhYzczZWFmMDYxZjdmMTMyYzhhMDI4ZTMyOTZkZWYzZC4uYzI4ZDJiZDkzZDQyMDMzM2ZlZGVm
MTk2MTZiZGZlMDQzY2JkMWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01Nyw4ICs1Nyw4IEBAIE11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNo
TWFwPE11dGF0aW9uT2JzCiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6Omlz
T2xkVmFsdWVSZXF1ZXN0ZWQoKQogewotICAgIGZvciAoYXV0byBvcHRpb25zIDogbV9vYnNlcnZl
cnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGhhc09sZFZhbHVlKG9wdGlvbnMpKQorICAgIGZv
ciAoSGFzaE1hcDxNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlv
bnM+OjppdGVyYXRvciBpdGVyID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgaXRlciAhPSBtX29ic2Vy
dmVycy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmIChoYXNPbGRWYWx1ZShpdGVyLT52YWx1
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjgsOSArNjgsOSBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjplbnF1
ZXVlTXV0YXRpb25SZWNvcmQoUGFzc1JlZlB0cjxNdXRhdGlvblJlYwogewogICAgIFJlZlB0cjxN
dXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBwcnBNdXRhdGlvbjsKICAgICBSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IG11dGF0aW9uV2l0aE51bGxPbGRWYWx1ZTsKLSAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyT3B0aW9uc1BhaXIgOiBtX29ic2VydmVycykgewotICAgICAgICBNdXRhdGlvbk9ic2VydmVy
KiBvYnNlcnZlciA9IG9ic2VydmVyT3B0aW9uc1BhaXIua2V5OwotICAgICAgICBpZiAoaGFzT2xk
VmFsdWUob2JzZXJ2ZXJPcHRpb25zUGFpci52YWx1ZSkpIHsKKyAgICBmb3IgKEhhc2hNYXA8TXV0
YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6aXRlcmF0b3Ig
aXRlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsr
aXRlcikgeworICAgICAgICBNdXRhdGlvbk9ic2VydmVyKiBvYnNlcnZlciA9IGl0ZXItPmtleTsK
KyAgICAgICAgaWYgKGhhc09sZFZhbHVlKGl0ZXItPnZhbHVlKSkgewogICAgICAgICAgICAgb2Jz
ZXJ2ZXItPmVucXVldWVNdXRhdGlvblJlY29yZChtdXRhdGlvbik7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGEwMmY2MzMxNDU1NDdkNzQwMzZmM2Q2MDJlMzYz
YWMxZGNiN2E5NzQuLjEyZTBiNDQxZjBlNGY3ZWMwZDJkZmMyZDdlNGMxNjAwNzMxYWQ2OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5jcHAKQEAgLTg3LDggKzg3LDggQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
OjpjbGVhclRyYW5zaWVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZm9yIChhdXRvJiBub2RlIDogKm1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpCi0g
ICAgICAgIG5vZGUtPnVucmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKHRoaXMpOwor
ICAgIGZvciAoTm9kZUhhc2hTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtX3RyYW5zaWVudFJlZ2lzdHJh
dGlvbk5vZGVzLT5iZWdpbigpOyBpdGVyICE9IG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMt
PmVuZCgpOyArK2l0ZXIpCisgICAgICAgICgqaXRlciktPnVucmVnaXN0ZXJUcmFuc2llbnRNdXRh
dGlvbk9ic2VydmVyKHRoaXMpOwogCiAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy5j
bGVhcigpOwogCkBAIC0xMjYsOCArMTI2LDggQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uOjphZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8Tm9kZSo+JiBub2QKICAg
ICBub2Rlcy5hZGQobV9yZWdpc3RyYXRpb25Ob2RlKTsKICAgICBpZiAoIW1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKGF1dG8mIG5vZGUgOiAq
bV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcykKLSAgICAgICAgbm9kZXMuYWRkKG5vZGUuZ2V0
KCkpOworICAgIGZvciAoTm9kZUhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RyYW5z
aWVudFJlZ2lzdHJhdGlvbk5vZGVzLT5iZWdpbigpOyBpdGVyICE9IG1fdHJhbnNpZW50UmVnaXN0
cmF0aW9uTm9kZXMtPmVuZCgpOyArK2l0ZXIpCisgICAgICAgIG5vZGVzLmFkZChpdGVyLT5nZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiMTAy
ZTEyNWFhNmU2OTM1MTVhYmM0NGY0YzJmNDg5MGNiZDg0NGEwLi5kOWRiYzkxZTAyNGEwYzNmNDIz
MmVkMmIyOThkZDNiYTg5OWVkYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMzEsNyArMTMxLDkg
QEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgc2l6ZV90IGVsZW1lbnRzV2l0aFJh
cmVEYXRhID0gMDsKICAgICBzaXplX3QgZWxlbWVudHNXaXRoTmFtZWROb2RlTWFwID0gMDsKIAot
ICAgIGZvciAoYXV0byogbm9kZSA6IGxpdmVOb2RlU2V0KSB7CisgICAgZm9yIChIYXNoU2V0PE5v
ZGUqPjo6aXRlcmF0b3IgaXQgPSBsaXZlTm9kZVNldC5iZWdpbigpOyBpdCAhPSBsaXZlTm9kZVNl
dC5lbmQoKTsgKytpdCkgeworICAgICAgICBOb2RlKiBub2RlID0gKml0OworCiAgICAgICAgIGlm
IChub2RlLT5oYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgICAgICArK25vZGVzV2l0aFJhcmVEYXRh
OwogICAgICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewpAQCAtMjM3LDggKzIz
OSw4IEBAIHZvaWQgTm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogICAgIHByaW50ZigiICBOdW1iZXIg
b2YgU2hhZG93Um9vdCBub2RlczogJXp1XG4iLCBzaGFkb3dSb290Tm9kZXMpOwogCiAgICAgcHJp
bnRmKCJFbGVtZW50IHRhZyBuYW1lIGRpc3RpYnV0aW9uOlxuIik7Ci0gICAgZm9yIChhdXRvIHN0
cmluZ1NpemVQYWlyIDogcGVyVGFnQ291bnQpCi0gICAgICAgIHByaW50ZigiICBOdW1iZXIgb2Yg
PCVzPiB0YWdzOiAlenVcbiIsIHN0cmluZ1NpemVQYWlyLmtleS51dGY4KCkuZGF0YSgpLCBzdHJp
bmdTaXplUGFpci52YWx1ZSk7CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgc2l6ZV90Pjo6aXRl
cmF0b3IgaXQgPSBwZXJUYWdDb3VudC5iZWdpbigpOyBpdCAhPSBwZXJUYWdDb3VudC5lbmQoKTsg
KytpdCkKKyAgICAgICAgcHJpbnRmKCIgIE51bWJlciBvZiA8JXM+IHRhZ3M6ICV6dVxuIiwgaXQt
PmtleS51dGY4KCkuZGF0YSgpLCBpdC0+dmFsdWUpOwogCiAgICAgcHJpbnRmKCJBdHRyaWJ1dGVz
OlxuIik7CiAgICAgcHJpbnRmKCIgIE51bWJlciBvZiBBdHRyaWJ1dGVzIChub24tTm9kZSBhbmQg
Tm9kZSk6ICV6dSBbJXp1XVxuIiwgYXR0cmlidXRlcywgc2l6ZW9mKEF0dHJpYnV0ZSkpOwpAQCAt
NzI1LDEwICs3MjcsMTAgQEAgYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0
QW5kQ29sbGVjdGlvbkNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKgogCiB2b2lkIERvY3VtZW50
OjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5h
bWUqIGF0dHJOYW1lKQogewotICAgIGZvciAoYXV0byogbm9kZUxpc3QgOiBtX2xpc3RzSW52YWxp
ZGF0ZWRBdERvY3VtZW50KQotICAgICAgICBub2RlTGlzdC0+aW52YWxpZGF0ZUNhY2hlKGF0dHJO
YW1lKTsKLSAgICBmb3IgKGF1dG8qIGNvbGxlY3Rpb24gOiBtX2NvbGxlY3Rpb25zSW52YWxpZGF0
ZWRBdERvY3VtZW50KQotICAgICAgICBjb2xsZWN0aW9uLT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5h
bWUpOworICAgIGZvciAoSGFzaFNldDxMaXZlTm9kZUxpc3QqPjo6aXRlcmF0b3IgaXQgPSBtX2xp
c3RzSW52YWxpZGF0ZWRBdERvY3VtZW50LmJlZ2luKCksIGVuZCA9IG1fbGlzdHNJbnZhbGlkYXRl
ZEF0RG9jdW1lbnQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmludmFs
aWRhdGVDYWNoZShhdHRyTmFtZSk7CisgICAgZm9yIChIYXNoU2V0PEhUTUxDb2xsZWN0aW9uKj46
Oml0ZXJhdG9yIGl0ID0gbV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudC5iZWdpbigp
LCBlbmQgPSBtX2NvbGxlY3Rpb25zSW52YWxpZGF0ZWRBdERvY3VtZW50LmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOwogfQog
CiB2b2lkIE5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2Vz
dG9ycyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSwgRWxlbWVudCogYXR0cmlidXRlT3du
ZXJFbGVtZW50KQpAQCAtMTY5OSwyMCArMTcwMSwyMCBAQCB2b2lkIE5vZGU6OnNob3dUcmVlRm9y
VGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3QKIAogdm9pZCBOb2RlTGlzdHNOb2RlRGF0YTo6aW52YWxp
ZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkKIHsKLSAgICBmb3IgKGF1
dG8qIG5vZGVMaXN0IDogbV9hdG9taWNOYW1lQ2FjaGVzLnZhbHVlcygpKQotICAgICAgICBub2Rl
TGlzdC0+aW52YWxpZGF0ZUNhY2hlKGF0dHJOYW1lKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2F0
b21pY05hbWVDYWNoZXMuYmVnaW4oKSwgZW5kID0gbV9hdG9taWNOYW1lQ2FjaGVzLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKGF0dHJO
YW1lKTsKIAotICAgIGZvciAoYXV0byogbm9kZUxpc3QgOiBtX25hbWVDYWNoZXMudmFsdWVzKCkp
Ci0gICAgICAgIG5vZGVMaXN0LT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOworICAgIGZvciAo
YXV0byBpdCA9IG1fbmFtZUNhY2hlcy5iZWdpbigpLCBlbmQgPSBtX25hbWVDYWNoZXMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoYXR0
ck5hbWUpOwogCi0gICAgZm9yIChhdXRvKiBjb2xsZWN0aW9uIDogbV9jYWNoZWRDb2xsZWN0aW9u
cy52YWx1ZXMoKSkKLSAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlKGF0dHJOYW1l
KTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2NhY2hlZENvbGxlY3Rpb25zLmJlZ2luKCksIGVuZCA9
IG1fY2FjaGVkQ29sbGVjdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQt
PnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOwogCiAgICAgaWYgKGF0dHJOYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8qIG5vZGVMaXN0IDogbV90YWdOb2RlTGlz
dENhY2hlTlMudmFsdWVzKCkpCi0gICAgICAgIG5vZGVMaXN0LT5pbnZhbGlkYXRlQ2FjaGUoKTsK
KyAgICBmb3IgKGF1dG8gaXQgPSBtX3RhZ05vZGVMaXN0Q2FjaGVOUy5iZWdpbigpLCBlbmQgPSBt
X3RhZ05vZGVMaXN0Q2FjaGVOUy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+
dmFsdWUtPmludmFsaWRhdGVDYWNoZSgpOwogfQogCiB2b2lkIE5vZGU6OmdldFN1YnJlc291cmNl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdApAQCAtMTc3NiwxNSArMTc3OCwxNiBA
QCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChhdXRvKiByZWdpc3RyeSA9IG11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyeSgpKSB7CisgICAgaWYgKFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbj4+KiByZWdpc3RyeSA9IG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0cnktPnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhyZWdpc3Ry
eS0+YXQoaSktPm11dGF0aW9uVHlwZXMoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
YXV0byogdHJhbnNpZW50UmVnaXN0cnkgPSB0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cnkoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlZ2lzdHJhdGlvbiA6ICp0cmFuc2llbnRSZWdp
c3RyeSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKHJl
Z2lzdHJhdGlvbi0+bXV0YXRpb25UeXBlcygpKTsKKyAgICBpZiAoSGFzaFNldDxNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudFJlZ2lzdHJ5ID0gdHJhbnNpZW50TXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKKyAgICAgICAgZm9yIChIYXNoU2V0PE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24qPjo6aXRlcmF0b3IgaXRlciA9IHRyYW5zaWVudFJlZ2lzdHJ5LT5i
ZWdpbigpOyBpdGVyICE9IHRyYW5zaWVudFJlZ2lzdHJ5LT5lbmQoKTsgKytpdGVyKSB7CisgICAg
ICAgICAgICBkb2N1bWVudCgpLmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcygoKml0ZXIpLT5tdXRh
dGlvblR5cGVzKCkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xOTI1LDExICsxOTI4LDEx
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlv
bihIYXNoTWFwPE11dGF0aW9uT2JzZXJ2ZXIqCiB7CiAgICAgaWYgKCFyZWdpc3RyeSkKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiAqcmVnaXN0cnkpIHsK
LSAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbSh0YXJn
ZXQsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7Ci0gICAgICAgICAgICBNdXRhdGlvblJlY29yZERl
bGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlvbnMgPSByZWdpc3RyYXRpb24tPmRlbGl2ZXJ5T3B0
aW9ucygpOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJh
dGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKKyAgICBmb3IgKHR5cGVuYW1lIFJl
Z2lzdHJ5OjppdGVyYXRvciBpdGVyID0gcmVnaXN0cnktPmJlZ2luKCk7IGl0ZXIgIT0gcmVnaXN0
cnktPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgY29uc3QgTXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uID0gKippdGVyOworICAgICAgICBpZiAocmVnaXN0cmF0aW9u
LnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20odGFyZ2V0LCB0eXBlLCBhdHRyaWJ1dGVOYW1lKSkg
eworICAgICAgICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRp
b25zID0gcmVnaXN0cmF0aW9uLmRlbGl2ZXJ5T3B0aW9ucygpOworICAgICAgICAgICAgSGFzaE1h
cDxNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+OjpBZGRS
ZXN1bHQgcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24ub2JzZXJ2ZXIoKSwgZGVs
aXZlcnlPcHRpb25zKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSB8PSBkZWxpdmVyeU9wdGlvbnM7CiAg
ICAgICAgIH0KQEAgLTIwMDMsMTUgKzIwMDYsMTUgQEAgdm9pZCBOb2RlOjpub3RpZnlNdXRhdGlv
bk9ic2VydmVyc05vZGVXaWxsRGV0YWNoKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChO
b2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiByZWdpc3RyeSA9IG5vZGUtPm11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyeSgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24+PiogcmVnaXN0cnkgPSBub2RlLT5tdXRhdGlvbk9ic2VydmVyUmVnaXN0cnko
KSkgewogICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNpemUgPSByZWdpc3RyeS0+c2l6ZSgpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAg
ICAgICAgcmVnaXN0cnktPmF0KGkpLT5vYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaCh0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvKiB0cmFuc2llbnRSZWdpc3RyeSA9IG5v
ZGUtPnRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIHJlZ2lzdHJhdGlvbiA6ICp0cmFuc2llbnRSZWdpc3RyeSkKLSAgICAgICAgICAg
ICAgICByZWdpc3RyYXRpb24tPm9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKHRoaXMpOwor
ICAgICAgICBpZiAoSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5z
aWVudFJlZ2lzdHJ5ID0gbm9kZS0+dHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkp
IHsKKyAgICAgICAgICAgIGZvciAoSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
Kj46Oml0ZXJhdG9yIGl0ZXIgPSB0cmFuc2llbnRSZWdpc3RyeS0+YmVnaW4oKTsgaXRlciAhPSB0
cmFuc2llbnRSZWdpc3RyeS0+ZW5kKCk7ICsraXRlcikKKyAgICAgICAgICAgICAgICAoKml0ZXIp
LT5vYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaCh0aGlzKTsKICAgICAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA2NGE4OTNkZWE3NDJmMGI5OTY2YmRh
OTYwMmVkZjg3ZjRhM2U0MDI1Li5hNDg4MGY4NDEzZjY4NTQwMWYwOTFjNTIxZWEzN2M4ZDBlZTEw
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yMjgsMjUgKzIyOCwyOSBAQCBw
dWJsaWM6CiAgICAgICAgIGludmFsaWRhdGVDYWNoZXMoKTsKIAogICAgICAgICBpZiAob2xkRG9j
dW1lbnQgIT0gbmV3RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byogbGlzdCA6IG1f
YXRvbWljTmFtZUNhY2hlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIG9sZERvY3VtZW50
LT51bnJlZ2lzdGVyTm9kZUxpc3QoKmxpc3QpOwotICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50
LT5yZWdpc3Rlck5vZGVMaXN0KCpsaXN0KTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpdCA9IG1f
YXRvbWljTmFtZUNhY2hlcy5iZWdpbigpLCBlbmQgPSBtX2F0b21pY05hbWVDYWNoZXMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgICAgIExpdmVOb2RlTGlzdCYgbGlzdCA9
ICppdC0+dmFsdWU7CisgICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJOb2Rl
TGlzdChsaXN0KTsKKyAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+cmVnaXN0ZXJOb2RlTGlz
dChsaXN0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZm9yIChhdXRvKiBsaXN0IDog
bV9uYW1lQ2FjaGVzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVu
cmVnaXN0ZXJOb2RlTGlzdCgqbGlzdCk7Ci0gICAgICAgICAgICAgICAgbmV3RG9jdW1lbnQtPnJl
Z2lzdGVyTm9kZUxpc3QoKmxpc3QpOworICAgICAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9uYW1l
Q2FjaGVzLmJlZ2luKCksIGVuZCA9IG1fbmFtZUNhY2hlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgICAgICAgICAgTGl2ZU5vZGVMaXN0JiBsaXN0ID0gKml0LT52YWx1ZTsKKyAg
ICAgICAgICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3Rlck5vZGVMaXN0KGxpc3QpOworICAg
ICAgICAgICAgICAgIG5ld0RvY3VtZW50LT5yZWdpc3Rlck5vZGVMaXN0KGxpc3QpOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKGF1dG8qIGxpc3QgOiBtX3RhZ05vZGVMaXN0Q2Fj
aGVOUy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghbGlzdC0+aXNSb290ZWRB
dERvY3VtZW50KCkpOwotICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyTm9k
ZUxpc3QoKmxpc3QpOwotICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LT5yZWdpc3Rlck5vZGVM
aXN0KCpsaXN0KTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpdCA9IG1fdGFnTm9kZUxpc3RDYWNo
ZU5TLmJlZ2luKCksIGVuZCA9IG1fdGFnTm9kZUxpc3RDYWNoZU5TLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgICAgICBMaXZlTm9kZUxpc3QmIGxpc3QgPSAqaXQtPnZhbHVl
OworICAgICAgICAgICAgICAgIEFTU0VSVCghbGlzdC5pc1Jvb3RlZEF0RG9jdW1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJOb2RlTGlzdChsaXN0KTsKKyAg
ICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+cmVnaXN0ZXJOb2RlTGlzdChsaXN0KTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgZm9yIChhdXRvIGNvbGxlY3Rpb24gOiBtX2NhY2hlZENv
bGxlY3Rpb25zLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVn
aXN0ZXJDb2xsZWN0aW9uKCpjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgICAgICBuZXdEb2N1bWVu
dC0+cmVnaXN0ZXJDb2xsZWN0aW9uKCpjb2xsZWN0aW9uKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byBpdCA9IG1fY2FjaGVkQ29sbGVjdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9jYWNoZWRDb2xsZWN0
aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAgICAgSFRNTENvbGxl
Y3Rpb24mIGNvbGxlY3Rpb24gPSAqaXQtPnZhbHVlOworICAgICAgICAgICAgICAgIG9sZERvY3Vt
ZW50LT51bnJlZ2lzdGVyQ29sbGVjdGlvbihjb2xsZWN0aW9uKTsKKyAgICAgICAgICAgICAgICBu
ZXdEb2N1bWVudC0+cmVnaXN0ZXJDb2xsZWN0aW9uKGNvbGxlY3Rpb24pOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCmluZGV4IDM2NGRkNDE1NDhhOThhOWY5MTU1NzU0ZTYwZjllYzFiZDMyZjg3
MmMuLmRkMzBkZDA3YzNkMTkyYTM0MjFkZjQyYzc3NGZjMDA2NThjMzMwZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTEwMywxNSArMTAz
LDE3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQog
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogewogICAg
IG1faW5EZXN0cnVjdG9yID0gdHJ1ZTsKLSAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9kZXN0
cnVjdGlvbk9ic2VydmVycykgeworICAgIGZvciAoSGFzaFNldDxDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcio+OjppdGVyYXRvciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5iZWdpbigp
OyBpdGVyICE9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIgPSBtX2Rlc3RydWN0
aW9uT2JzZXJ2ZXJzLmJlZ2luKCkpIHsKKyAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIqIG9ic2VydmVyID0gKml0ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMucmVt
b3ZlKG9ic2VydmVyKTsKICAgICAgICAgQVNTRVJUKG9ic2VydmVyLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgPT0gdGhpcyk7CiAgICAgICAgIG9ic2VydmVyLT5jb250ZXh0RGVzdHJveWVkKCk7
CiAgICAgfQogCi0gICAgZm9yIChhdXRvKiBwb3J0IDogbV9tZXNzYWdlUG9ydHMpIHsKLSAgICAg
ICAgQVNTRVJUKHBvcnQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAg
ICAgcG9ydC0+Y29udGV4dERlc3Ryb3llZCgpOworICAgIEhhc2hTZXQ8TWVzc2FnZVBvcnQqPjo6
aXRlcmF0b3IgbWVzc2FnZVBvcnRzRW5kID0gbV9tZXNzYWdlUG9ydHMuZW5kKCk7CisgICAgZm9y
IChIYXNoU2V0PE1lc3NhZ2VQb3J0Kj46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lc3NhZ2VQb3J0cy5i
ZWdpbigpOyBpdGVyICE9IG1lc3NhZ2VQb3J0c0VuZDsgKytpdGVyKSB7CisgICAgICAgIEFTU0VS
VCgoKml0ZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgICgq
aXRlciktPmNvbnRleHREZXN0cm95ZWQoKTsKICAgICB9CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAg
aWYgKG1fcHVibGljVVJMTWFuYWdlcikKQEAgLTE2NCwxMCArMTY2LDExIEBAIGJvb2wgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQogewogICAgIC8v
IE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5n
IGl0ZXJhdGlvbjogY2FuU3VzcGVuZCgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4K
ICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0cnVlOwotICAgIGZvciAoYXV0byog
YWN0aXZlRE9NT2JqZWN0IDogbV9hY3RpdmVET01PYmplY3RzKSB7Ci0gICAgICAgIEFTU0VSVChh
Y3RpdmVET01PYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAg
ICAgQVNTRVJUKGFjdGl2ZURPTU9iamVjdC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAg
ICAgICBpZiAoIWFjdGl2ZURPTU9iamVjdC0+Y2FuU3VzcGVuZCgpKSB7CisgICAgQWN0aXZlRE9N
T2JqZWN0c1NldDo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0
cy5lbmQoKTsKKyAgICBmb3IgKEFjdGl2ZURPTU9iamVjdHNTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBt
X2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0
ZXIpIHsKKyAgICAgICAgQVNTRVJUKCgqaXRlciktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9
PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKCgqaXRlciktPnN1c3BlbmRJZk5lZWRlZENhbGxlZCgp
KTsKKyAgICAgICAgaWYgKCEoKml0ZXIpLT5jYW5TdXNwZW5kKCkpIHsKICAgICAgICAgICAgIG1f
aXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CkBAIC0xODcsMTAgKzE5MCwxMSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29u
Rm9yUwogCiAgICAgLy8gTm8gcHJvdGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBj
aGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiBzdXNwZW5kKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJi
aXRyYXJ5IEpTLgogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7Ci0gICAg
Zm9yIChhdXRvKiBhY3RpdmVET01PYmplY3QgOiBtX2FjdGl2ZURPTU9iamVjdHMpIHsKLSAgICAg
ICAgQVNTRVJUKGFjdGl2ZURPTU9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRo
aXMpOwotICAgICAgICBBU1NFUlQoYWN0aXZlRE9NT2JqZWN0LT5zdXNwZW5kSWZOZWVkZWRDYWxs
ZWQoKSk7Ci0gICAgICAgIGFjdGl2ZURPTU9iamVjdC0+c3VzcGVuZCh3aHkpOworICAgIEFjdGl2
ZURPTU9iamVjdHNTZXQ6Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9i
amVjdHMuZW5kKCk7CisgICAgZm9yIChBY3RpdmVET01PYmplY3RzU2V0OjppdGVyYXRvciBpdGVy
ID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsg
KytpdGVyKSB7CisgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5zdXNwZW5kSWZOZWVkZWRDYWxs
ZWQoKSk7CisgICAgICAgICgqaXRlciktPnN1c3BlbmQod2h5KTsKICAgICB9CiAgICAgbV9pdGVy
YXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgbV9hY3RpdmVET01PYmplY3RzQXJl
U3VzcGVuZGVkID0gdHJ1ZTsKQEAgLTIwNSwxMCArMjA5LDExIEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNv
bkZvclN1CiAgICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkID0gZmFsc2U7CiAgICAg
Ly8gTm8gcHJvdGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJp
bmcgaXRlcmF0aW9uOiByZXN1bWUoKSBzaG91bGRuJ3QgZXhlY3V0ZSBhcmJpdHJhcnkgSlMuCiAg
ICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKLSAgICBmb3IgKGF1dG8qIGFj
dGl2ZURPTU9iamVjdCA6IG1fYWN0aXZlRE9NT2JqZWN0cykgewotICAgICAgICBBU1NFUlQoYWN0
aXZlRE9NT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7Ci0gICAgICAg
IEFTU0VSVChhY3RpdmVET01PYmplY3QtPnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKLSAgICAg
ICAgYWN0aXZlRE9NT2JqZWN0LT5yZXN1bWUoKTsKKyAgICBBY3RpdmVET01PYmplY3RzU2V0Ojpp
dGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOworICAg
IGZvciAoQWN0aXZlRE9NT2JqZWN0c1NldDo6aXRlcmF0b3IgaXRlciA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikgeworICAgICAg
ICBBU1NFUlQoKCppdGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAg
ICAgICBBU1NFUlQoKCppdGVyKS0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOworICAgICAgICAo
Kml0ZXIpLT5yZXN1bWUoKTsKICAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3Rz
ID0gZmFsc2U7CiB9CkBAIC0yMjAsMTAgKzIyNSwxMSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKICAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVT
dG9wcGVkID0gdHJ1ZTsKICAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01P
YmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHN0b3AoKSBzaG91bGRuJ3QgZXhlY3V0
ZSBhcmJpdHJhcnkgSlMuCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsK
LSAgICBmb3IgKGF1dG8qIGFjdGl2ZURPTU9iamVjdCA6IG1fYWN0aXZlRE9NT2JqZWN0cykgewot
ICAgICAgICBBU1NFUlQoYWN0aXZlRE9NT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
PT0gdGhpcyk7Ci0gICAgICAgIEFTU0VSVChhY3RpdmVET01PYmplY3QtPnN1c3BlbmRJZk5lZWRl
ZENhbGxlZCgpKTsKLSAgICAgICAgYWN0aXZlRE9NT2JqZWN0LT5zdG9wKCk7CisgICAgQWN0aXZl
RE9NT2JqZWN0c1NldDo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKKyAgICBmb3IgKEFjdGl2ZURPTU9iamVjdHNTZXQ6Oml0ZXJhdG9yIGl0ZXIg
PSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyAr
K2l0ZXIpIHsKKyAgICAgICAgQVNTRVJUKCgqaXRlciktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKCgqaXRlciktPnN1c3BlbmRJZk5lZWRlZENhbGxl
ZCgpKTsKKyAgICAgICAgKCppdGVyKS0+c3RvcCgpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKIApAQCAtMjcxLDExICsyNzcsMTEgQEAgdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojp3aWxsRGVzdHJveURlc3RydWN0aW9uT2JzZXJ2ZXIoQ29udGV4
dERlc3RydWN0aW9uT2IKICAgICBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZl
cik7CiB9CiAKLXZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2xvc2VNZXNzYWdlUG9ydHMo
KQotewotICAgIGZvciAoYXV0byogcG9ydCA6IG1fbWVzc2FnZVBvcnRzKSB7Ci0gICAgICAgIEFT
U0VSVChwb3J0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7Ci0gICAgICAgIHBv
cnQtPmNsb3NlKCk7Cit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNsb3NlTWVzc2FnZVBv
cnRzKCkgeworICAgIEhhc2hTZXQ8TWVzc2FnZVBvcnQqPjo6aXRlcmF0b3IgbWVzc2FnZVBvcnRz
RW5kID0gbV9tZXNzYWdlUG9ydHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PE1lc3NhZ2VQb3J0
Kj46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lc3NhZ2VQb3J0cy5iZWdpbigpOyBpdGVyICE9IG1lc3Nh
Z2VQb3J0c0VuZDsgKytpdGVyKSB7CisgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgICgqaXRlciktPmNsb3NlKCk7CiAgICAg
fQogfQogCkBAIC0zNjcsOCArMzczLDEwIEBAIFB1YmxpY1VSTE1hbmFnZXImIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnB1YmxpY1VSTE1hbmFnZXIoKQogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50
ZXJ2YWwpCiB7CiAgICAgaWYgKG1pbmltdW1UaW1lckludGVydmFsKCkgIT0gb2xkTWluaW11bVRp
bWVySW50ZXJ2YWwpIHsKLSAgICAgICAgZm9yIChhdXRvKiB0aW1lciA6IG1fdGltZW91dHMudmFs
dWVzKCkpCisgICAgICAgIGZvciAoVGltZW91dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fdGltZW91
dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAg
ICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnZhbHVlOwogICAgICAgICAgICAgdGltZXItPmFk
anVzdE1pbmltdW1UaW1lckludGVydmFsKG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIApAQCAtMzg0LDggKzM5MiwxMCBAQCBkb3VibGUgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6bWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdAogCiB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRpZENoYW5nZVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKQogewotICAg
IGZvciAoYXV0byogdGltZXIgOiBtX3RpbWVvdXRzLnZhbHVlcygpKQorICAgIGZvciAoVGltZW91
dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVv
dXRzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgRE9NVGltZXIqIHRpbWVyID0gaXRlci0+dmFs
dWU7CiAgICAgICAgIHRpbWVyLT5kaWRDaGFuZ2VBbGlnbm1lbnRJbnRlcnZhbCgpOworICAgIH0K
IH0KIAogZG91YmxlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnRpbWVyQWxpZ25tZW50SW50ZXJ2
YWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAppbmRleCAwMzUw
NGQzZDM3NjdhNWFjYTIzMzc4Y2RjNWY0ZDllMTk2YjQ1NWI1Li43NzU5Mjg2NjllYzU1NDc2NDNh
ZTczNTQ4YmM3ZGIxMTVmMGM1ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2Vi
S2l0TmFtZWRGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
LmNwcApAQCAtMTMwLDExICsxMzAsMTIgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gV2ViS2l0TmFt
ZWRGbG93OjpnZXRSZWdpb25zQnlDb250ZW50KE5vZGUqIGNvbnRlbnROb2RlKQogICAgIFZlY3Rv
cjxSZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwogCiAgICAgaWYgKGluRmxvd1RocmVhZChj
b250ZW50Tm9kZS0+cmVuZGVyZXIoKSwgbV9wYXJlbnRGbG93VGhyZWFkKSkgewotICAgICAgICBm
b3IgKGF1dG8qIHJlZ2lvbiA6IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgp
KSB7CisgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBtX3BhcmVu
dEZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXIg
PSByZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9IHJlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5v
dCBpbmNsdWRlZCBpbiB0aGUgbGlzdC4KICAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBiZSBpbmNs
dWRlZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3VwcG9ydCB0aGUgUmVnaW9uIGludGVyZmFjZQog
ICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1y
ZWdpb24taW50ZXJmYWNlCi0gICAgICAgICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCogcmVuZGVyUmVnaW9uID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChyZWdpb24pOworICAg
ICAgICAgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRlclJlZ2lvbiA9IHRv
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKml0ZXIpOwogICAgICAgICAgICAgaWYgKHJlbmRlclJl
Z2lvbi0+aXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24o
Y29udGVudE5vZGUtPnJlbmRlcmVyKCksIHJlbmRlclJlZ2lvbikpIHsKQEAgLTE1OCwxMSArMTU5
LDEzIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9ucygp
CiAgICAgICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlRW1wdHkoKTsKIAogICAg
IFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwotICAgIGZvciAoYXV0byByZWdp
b24gOiBtX3BhcmVudEZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKSkgeworCisgICAgY29u
c3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVu
ZGVyUmVnaW9uTGlzdCgpOworICAgIGZvciAoYXV0byBpdGVyID0gcmVnaW9uTGlzdC5iZWdpbigp
LCBlbmQgPSByZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlzdC4K
ICAgICAgICAgLy8gVGhleSB3aWxsIGJlIGluY2x1ZGVkIHdoZW4gd2Ugd2lsbCBwcm9wZXJseSBz
dXBwb3J0IHRoZSBSZWdpb24gaW50ZXJmYWNlCiAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3Jn
L2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9uLWludGVyZmFjZQotICAgICAgICBjb25zdCBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVyUmVnaW9uID0gdG9SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudChyZWdpb24pOworICAgICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
cmVuZGVyUmVnaW9uID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgqaXRlcik7CiAgICAgICAg
IGlmIChyZW5kZXJSZWdpb24tPmlzUHNldWRvRWxlbWVudFJlZ2lvbigpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIEFTU0VSVChyZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdFbGVtZW50
KCkpOwpAQCAtMTgzLDcgKzE4NiwxMCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXROYW1l
ZEZsb3c6OmdldENvbnRlbnQoKQogICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNy
ZWF0ZUVtcHR5KCk7CiAKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBjb250ZW50RWxlbWVudHM7
Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9wYXJlbnRGbG93VGhyZWFkLT5jb250ZW50RWxl
bWVudHMoKSkgeworCisgICAgY29uc3QgTmFtZWRGbG93Q29udGVudEVsZW1lbnRzJiBjb250ZW50
RWxlbWVudHNMaXN0ID0gbV9wYXJlbnRGbG93VGhyZWFkLT5jb250ZW50RWxlbWVudHMoKTsKKyAg
ICBmb3IgKGF1dG8gaXQgPSBjb250ZW50RWxlbWVudHNMaXN0LmJlZ2luKCksIGVuZCA9IGNvbnRl
bnRFbGVtZW50c0xpc3QuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gKml0OwogICAgICAgICBBU1NFUlQoZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgp
LT5mbG93VGhyZWFkKCkgPT0gbV9wYXJlbnRGbG93VGhyZWFkLT5mbG93VGhyZWFkTmFtZSgpKTsK
ICAgICAgICAgY29udGVudEVsZW1lbnRzLmFwcGVuZCgqZWxlbWVudCk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>