<?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>135538</bug_id>
          
          <creation_ts>2014-08-01 22:07:53 -0700</creation_ts>
          <short_desc>REGRESSION(r171957): Caused GTK assertions and test failures (Requested by smfr on #webkit).</short_desc>
          <delta_ts>2014-08-01 22:11:08 -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>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>134916</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>dino</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026440</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-01 22:07:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/171957 broke the build:
Caused GTK assertions and test failures (Requested by smfr 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>1026442</commentid>
    <comment_count>1</comment_count>
      <attachid>235930</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-01 22:08:29 -0700</bug_when>
    <thetext>Created attachment 235930
ROLLOUT of r171957

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>1026445</commentid>
    <comment_count>2</comment_count>
      <attachid>235930</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-01 22:11:05 -0700</bug_when>
    <thetext>Comment on attachment 235930
ROLLOUT of r171957

Clearing flags on attachment: 235930

Committed r171964: &lt;http://trac.webkit.org/changeset/171964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026446</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-01 22:11:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235930</attachid>
            <date>2014-08-01 22:08:29 -0700</date>
            <delta_ts>2014-08-01 22:11:05 -0700</delta_ts>
            <desc>ROLLOUT of r171957</desc>
            <filename>bug-135538-20140801220816.patch</filename>
            <type>text/plain</type>
            <size>66030</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM0YzgxZjcyNjQ2OWU0
NThiNTZiNDhhZmRiMzFmYjg0MWUyMTljNi4uNTZjNGI3ZGUzM2RkOGE4ZTAyYmI5YjZmZDU1YzVk
MWI5N2E3ZjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTAxICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTcxOTU3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1NTM4CisKKyAgICAgICAgQ2F1c2VkIEdUSyBhc3NlcnRpb25zIGFu
ZCB0ZXN0IGZhaWx1cmVzIChSZXF1ZXN0ZWQgYnkgc21mciBvbgorICAgICAgICAjd2Via2l0KS4K
KworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkNsZWFuIHVwIGltYWdl
IHN1YnNhbXBsaW5nIGNvZGUsIG1ha2UgaXQgbGVzcyBpT1Mtc3BlY2lmaWMiCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ5MTYKKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTcxOTU3CisKIDIwMTQtMDgtMDEgIE15bGVz
IEMuIE1heGZpZWxkICA8bGl0aGVydW1AZ21haWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQWxs
b3cgQ01ha2UgdG8gZmluZCBHTGliIG9uIEZyZWVCU0QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
YmYwN2NiNzc3NGVlYzFlYjYzZjU3N2ExMDZmOWY1OTNiYmU0M2M3Mi4uY2NhNzg3ODVhOTY4NmVh
MWY2ZDNjMGY3NTUzYzFiNmJjMDIyMDU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTUyMSw3
ICs1MjEsNiBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEwc3Ryb2tlUmVjdEVSS05T
XzlGbG9hdFJlY3RFZgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMWNsZWFyU2hhZG93
RXYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTJzZXRGaWxsQ29sb3JFUktOU181Q29s
b3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNHNldFN0
cm9rZUNvbG9yRVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKLV9fWk43V2ViQ29yZTE1R3Jh
cGhpY3NDb250ZXh0MTVkcmF3TmF0aXZlSW1hZ2VFUDdDR0ltYWdlUktOU185RmxvYXRTaXplRU5T
XzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUzlfTlNfMTdDb21wb3NpdGVPcGVyYXRvckVO
U185QmxlbmRNb2RlRU5TXzE2SW1hZ2VPcmllbnRhdGlvbkUKIF9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NDb250ZXh0MTVzZXRGaWxsR3JhZGllbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEdyYWRpZW50
RUVFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE4c2V0U2hvdWxkQW50aWFsaWFzRWIK
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTlzZXRJc0NBTGF5ZXJDb250ZXh0RWIKQEAg
LTIyMzgsNiArMjIzNyw3IEBAIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyOW1vdXNlRG93bkVQ
N05TRXZlbnQKIF9fWk43V2ViQ29yZTEzZ2V0UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8x
NUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTN0b0RldmljZVNwYWNlRVJLTlNfOUZs
b2F0UmVjdEVQOE5TV2luZG93CiBfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFibGVkRVJLTlNfMjFO
ZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVM1XworX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQxNWRyYXdOYXRpdmVJbWFnZUVQN0NHSW1hZ2VSS05TXzlGbG9hdFNpemVFTlNfMTBD
b2xvclNwYWNlRVJLTlNfOUZsb2F0UmVjdEVTOV9mTlNfMTdDb21wb3NpdGVPcGVyYXRvckVOU185
QmxlbmRNb2RlRU5TXzE2SW1hZ2VPcmllbnRhdGlvbkUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3ND
b250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0NDF1cGRh
dGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllc0VSS1MwXwogX19aTjdXZWJDb3Jl
MTZGb250UGxhdGZvcm1EYXRhQzFFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNf
MTZGb250V2lkdGhWYXJpYW50RQpAQCAtMjU4OCw2ICsyNTg4LDcgQEAgX19aTjdXZWJDb3JlMTVE
YXRhYmFzZVRyYWNrZXI0NGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2NoZWR1
bGVkRXYKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyN3RyYWNrZXJFdgogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQxMmRyYXdCaWRpVGV4dEVSS05TXzRGb250RVJLTlNfN1RleHRS
dW5FUktOU18xMEZsb2F0UG9pbnRFTlMxXzI0Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uRVBOU18x
MEJpZGlTdGF0dXNFaQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNWRyYXdMaW5lRm9y
VGV4dEVSS05TXzEwRmxvYXRQb2ludEVmYmIKK19fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0
MTVkcmF3TmF0aXZlSW1hZ2VFUDdDR0ltYWdlUktOU185RmxvYXRTaXplRU5TXzEwQ29sb3JTcGFj
ZUVSS05TXzlGbG9hdFJlY3RFUzlfZk5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFTlNfOUJsZW5kTW9k
ZUVOU18xNkltYWdlT3JpZW50YXRpb25FCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIy
c2V0RW1vamlEcmF3aW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIz
c2V0SXNBY2NlbGVyYXRlZENvbnRleHRFYgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHRD
MUVQOUNHQ29udGV4dGIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxNTdhNmVlZmVlMDI2ZDE2Y2UyYTNkMDA5OWJlOGUwODRlOWIx
Y2U3Li4wOWE3ODlkMjJlZjhjOTg3YWNiMWY1OWQ2NmIzODI4YmM1ZDVhYzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzMs
NyArNDczLDYgQEAKIAkJMEYxNzc0ODAxMzc4Qjc3MjAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9y
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE3
NzQ3RTEzNzhCNzcxMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCAqLzsgfTsKIAkJMEYx
Nzc0ODExMzc4Qjc3MjAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNzc0N0YxMzc4Qjc3MjAwOURB
NzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9TLm1tICovOyB9OwogCQkwRjI5QzE2RTEzMDBDMkUyMDAy
RDc5NEUgLyogQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjlDMTZEMTMwMEMyRTIwMDJENzk0RSAvKiBBY2Nl
c3NpYmlsaXR5QWxsSW5PbmUuY3BwICovOyB9OwotCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMg
LyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzQzcyNUQxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCAqLzsg
fTsKIAkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzREQ0NEQxMkY1RUExQjAw
MEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICovOyB9OwogCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkx
OTAgLyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLzsgfTsK
IAkJMEYzRjBFNTkxNTcwMzBDMzAwNkRBNTdGIC8qIFJlbmRlckdlb21ldHJ5TWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0YwRTU3MTU3MDMw
QzMwMDZEQTU3RiAvKiBSZW5kZXJHZW9tZXRyeU1hcC5jcHAgKi87IH07CkBAIC03NDE1LDcgKzc0
MTQsNiBAQAogCQkwRjE3NzQ3RTEzNzhCNzcxMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2Nyb2xsQW5pbWF0b3JJT1MuaDsg
cGF0aCA9IGlvcy9TY3JvbGxBbmltYXRvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjE3NzQ3RjEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTY3JvbGxBbmltYXRvcklPUy5t
bTsgcGF0aCA9IGlvcy9TY3JvbGxBbmltYXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYyOUMxNkQxMzAwQzJFMjAwMkQ3OTRFIC8qIEFjY2Vzc2liaWxpdHlBbGxJbk9u
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
QWxsSW5PbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNDNzI1RDE5NzQ4
NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dCbHVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Qmx1ci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjNGMEU1NzE1NzAzMEMzMDA2REE1N0YgLyogUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
R2VvbWV0cnlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0OTIsNyAr
MjA0OTAsNiBAQAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0
aW9uLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5n
TW9kZS5oICovLAogCQkJCUIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5o
ICovLAotCQkJCTBGM0M3MjVEMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFnZVNvdXJjZS5jcHAgKi8s
CiAJCQkJMDc5NDE3OTMxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGUu
aCAqLywKIAkJCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oICovLAogCQkJCTJENDZGMDREMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2lu
dC5jcHAgKi8sCkBAIC0yOTQ0MSw3ICsyOTQzOCw2IEBACiAJCQkJOTdCQzZBNDQxNTA1RjA4MTAw
MUI3NEFDIC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdC
QzZBNDcxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRThBNjc0NzE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBNEQxNTA1RjA4MTAwMUI3NEFDIC8qIFNR
TFN0YXRlbWVudFN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBNEYxNTA1RjA4MTAw
MUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFRTE4MTEz
MTZDMzE5RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAy
Yzc2ZmQwOGQ0M2JhNGY2N2U0MmQ2MTJlYWIxYmUwYjdjNjdmZTgzLi5mNWZlYWJkMTVhYTdkZmEx
NWRhY2RiNjc4MzI2NzI4NjBkMTJjMDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTI4OSw3ICsyODksMTYgQEAgTGF5b3V0U2l6ZSBDYWNoZWRJ
bWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
ZmxvYXQKICAgICB9CiAjZWxzZQogICAgIGlmIChtX2ltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSkKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBp
bWFnZVNpemUgPSBMYXlvdXRTaXplKHRvQml0bWFwSW1hZ2UobV9pbWFnZS5nZXQoKSktPnNpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24oKSk7CisjZWxzZQorICAgIHsKKyAgICAgICAgLy8gT24gaU9T
LCB0aGUgaW1hZ2UgbWF5IGhhdmUgYmVlbiBzdWJzYW1wbGVkIHRvIGFjY29tbW9kYXRlIG91ciBz
aXplIHJlc3RyaWN0aW9ucy4gSG93ZXZlcgorICAgICAgICAvLyB3ZSBzaG91bGQgdGVsbCB0aGUg
cmVuZGVyZXIgd2hhdCB0aGUgb3JpZ2luYWwgc2l6ZSB3YXMuCisgICAgICAgIGltYWdlU2l6ZSA9
IExheW91dFNpemUodG9CaXRtYXBJbWFnZShtX2ltYWdlLmdldCgpKS0+b3JpZ2luYWxTaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uKCkpOworICAgIH0gZWxzZSBpZiAobV9pbWFnZS0+aXNCaXRtYXBJ
bWFnZSgpKQorICAgICAgICBpbWFnZVNpemUgPSBMYXlvdXRTaXplKHRvQml0bWFwSW1hZ2UobV9p
bWFnZS5nZXQoKSktPm9yaWdpbmFsU2l6ZSgpKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQog
I2VuZGlmIC8vIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAKICAgICBlbHNlIGlmICht
X2ltYWdlLT5pc1NWR0ltYWdlKCkgJiYgc2l6ZVR5cGUgPT0gVXNlZFNpemUpIHsKQEAgLTM0Myw3
ICszNTIsNiBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgIC8v
IENyZWF0ZSB0aGUgaW1hZ2UgaWYgaXQgZG9lc24ndCB5ZXQgZXhpc3QuCiAgICAgaWYgKG1faW1h
Z2UpCiAgICAgICAgIHJldHVybjsKLQogI2lmIFVTRShDRykgJiYgIVVTRShXRUJLSVRfSU1BR0Vf
REVDT0RFUlMpCiAgICAgZWxzZSBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJhcHBsaWNh
dGlvbi9wZGYiKQogICAgICAgICBtX2ltYWdlID0gUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlKHRo
aXMpOwpAQCAtMzUyLDEwICszNjAsOCBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRl
SW1hZ2UoKQogICAgICAgICBSZWZQdHI8U1ZHSW1hZ2U+IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNy
ZWF0ZSh0aGlzKTsKICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdJbWFnZUNhY2hlPihzdmdJbWFnZS5nZXQoKSk7CiAgICAgICAgIG1faW1hZ2UgPSBzdmdJbWFn
ZS5yZWxlYXNlKCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UKICAgICAgICAgbV9pbWFnZSA9
IEJpdG1hcEltYWdlOjpjcmVhdGUodGhpcyk7Ci0gICAgICAgIHRvQml0bWFwSW1hZ2UobV9pbWFn
ZS5nZXQoKSktPnNldEFsbG93U3Vic2FtcGxpbmcobV9sb2FkZXIgJiYgbV9sb2FkZXItPmZyYW1l
TG9hZGVyKCktPmZyYW1lKCkuc2V0dGluZ3MoKS5pbWFnZVN1YnNhbXBsaW5nRW5hYmxlZCgpKTsK
LSAgICB9CiAKICAgICBpZiAobV9pbWFnZSkgewogICAgICAgICAvLyBTZW5kIHF1ZXVlZCBjb250
YWluZXIgc2l6ZSByZXF1ZXN0cy4KQEAgLTUxMiw2ICs1MTgsOCBAQCB2b2lkIENhY2hlZEltYWdl
OjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IGJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZUZvclJlbmRl
cmVyKHJlbmRlcmVyKTsKKyAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKKyAgICAgICAg
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7IC8vIGZvcmNlIGRlY29kZQogICAg
IHJldHVybiBpbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggOTNhZTE0ODgxNzM3MWU3
NDIzMDk5MTJkNjA5YWFhOTM0YWExYjE3YS4uN2ZlNTZiZjJlMDYyYmY0YTNkOTU2ZTJmMWRiZmRh
NWM3MTJkNzdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5z
IHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAg
SW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFJldHVybnMg
dGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBi
b29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQotICAgIGJvb2wg
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKKyAgICBi
b29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7IC8v
IFNpZGUgZWZmZWN0OiBlbnN1cmVzIGRlY29kZWQgaW1hZ2UgaXMgaW4gY2FjaGUsIHRoZXJlZm9y
ZSBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBhYm91dCB0byBkcmF3IHRoZSBpbWFnZS4KIAog
ICAgIHN0ZDo6cGFpcjxJbWFnZSosIGZsb2F0PiBicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikgY29uc3Q7IC8vIFJldHVybnMgYW4gaW1hZ2UgYW5kIHRoZSBpbWFnZSdzIHJlc29s
dXRpb24gc2NhbGUgZmFjdG9yLgogICAgIGJvb2wgd2lsbFBhaW50QnJva2VuSW1hZ2UoKSBjb25z
dDsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGQ3MTM0MTI0Njc3YTkzMDc5YmMzMGY5
YmZmZjE0MmQ0NmU2ZDAwMDAuLmU4NjUzZGZhZDZjMTI2NGVmM2Q0ODc0NDM0YTAwMGNmZTdjYjgz
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xMjcsNyArMTI3LDYgQEAgc3RhdGlj
IGNvbnN0IGJvb2wgZGVmYXVsdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9u
RW5hYmxlZCA9IHRydWU7CiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFQbGF5YmFja0Fs
bG93c0lubGluZSA9IGZhbHNlOwogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdE1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlID0gdHJ1ZTsKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRT
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IHRydWU7Ci1zdGF0aWMgY29uc3QgYm9vbCBk
ZWZhdWx0SW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQgPSB0cnVlOwogc3RhdGljIGNvbnN0IGJvb2wg
ZGVmYXVsdFNjcm9sbGluZ1RyZWVJbmNsdWRlc0ZyYW1lcyA9IHRydWU7CiAjZWxzZQogc3RhdGlj
IGNvbnN0IGJvb2wgZGVmYXVsdEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0ID0g
ZmFsc2U7CkBAIC0xMzYsNyArMTM1LDYgQEAgc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCA9IGZhbHNlOwogc3RhdGlj
IGNvbnN0IGJvb2wgZGVmYXVsdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUgPSB0cnVlOwogc3Rh
dGljIGNvbnN0IGJvb2wgZGVmYXVsdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlID0g
ZmFsc2U7CiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24gPSBmYWxzZTsKLXN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRJbWFnZVN1YnNhbXBsaW5n
RW5hYmxlZCA9IGZhbHNlOwogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdFNjcm9sbGluZ1RyZWVJ
bmNsdWRlc0ZyYW1lcyA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCmlu
ZGV4IDg3ZDQzZDA4ZDc1NWEwOGMxOTc1MjM0OTg0MmUyYjFlZmI1YjBiZGQuLjg5MGJiM2Y5YTkx
Mjc2NGRkNzBiMmVmOWExZDc2NDAyZTVhNWIwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpA
QCAtMTQxLDcgKzE0MSw2IEBAIG5vdGlmaWNhdGlvbnNFbmFibGVkIGluaXRpYWw9dHJ1ZQogbmVl
ZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcmsgaW5pdGlhbD1mYWxzZQogCiBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiBpbml0aWFsPWRlZmF1bHRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbgotaW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQgaW5pdGlhbD1kZWZhdWx0SW1hZ2VTdWJzYW1w
bGluZ0VuYWJsZWQKIHdhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZpb3IgaW5pdGlh
bD1mYWxzZQogcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCBpbml0aWFsPXRydWUKIGRldmlj
ZVN1cHBvcnRzVG91Y2ggaW5pdGlhbD1mYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDEwYTY2OTQyNDcwZGFkNDhmYWU3Yzli
OTE2OTY0MDk0YTFhZjJmMDIuLmE3N2Q1YWZhYzc5NzAzOTg3ZWVhM2Y5OTU0M2IxYTUzZTliYmRi
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJ
WE1FOiBXZSBzaG91bGQgYmV0dGVyIGludGVncmF0ZSB0aGUgaU9TIGFuZCBub24taU9TIGNvZGUg
aW4gdGhpcyBjbGFzcy4gVW5saWtlIG90aGVyIHBvcnRzLCB0aGUKKy8vIGlPUyBwb3J0IGNhY2hl
cyB0aGUgbWV0YWRhdGEgZm9yIGEgZnJhbWUgd2l0aG91dCBkZWNvZGluZyB0aGUgaW1hZ2UuCiBC
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJ
bWFnZShvYnNlcnZlcikKLSAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKLSAgICAs
IG1faW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQotICAgICwgbV9zaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbihmYWxzZSkKICAgICAsIG1fY3VycmVudEZyYW1lKDApCisgICAgLCBt
X2ZyYW1lcygwKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAg
LCBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQogICAgICwgbV9yZXBldGl0aW9uc0Nv
bXBsZXRlKDApCkBAIC02MSw5ICs2MSw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGV4cG9zZSBhIHNl
dHRpbmcgdG8gZW5hYmxlL2Rpc2FibGUgcHJvZ3Jlc3NpdmUgbG9hZGluZyByZW1vdmUgdGhlIFBM
QVRGT1JNKElPUyktZ3VhcmQuCiAgICAgLCBtX3Byb2dyZXNzaXZlTG9hZENodW5rVGltZSgwKQog
ICAgICwgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua0NvdW50KDApCi0gICAgLCBtX2FsbG93U3Vic2Ft
cGxpbmcodHJ1ZSkKLSNlbHNlCi0gICAgLCBtX2FsbG93U3Vic2FtcGxpbmcoZmFsc2UpCiAjZW5k
aWYKICAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQogICAgICwgbV9jaGVja2VkRm9yU29saWRD
b2xvcihmYWxzZSkKQEAgLTgzLDE3ICs4MCw2IEBAIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2Uo
KQogICAgIHN0b3BBbmltYXRpb24oKTsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1l
QXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lOwotfQotCiBib29sIEJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjYsNyArMTUyLDExIEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xl
YXJlZCkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywg
LXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQpKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFn
ZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQorI2lmIFBMQVRGT1JNKElPUykK
K3ZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBmbG9hdCBzY2FsZUhp
bnQpCisjZWxzZQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgpCisj
ZW5kaWYKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VS
VChtX2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xNzQsMjcgKzE2NCwy
NiBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBu
dW1GcmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChm
cmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZl
bCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2Zy
YW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwot
ICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgPSBt
X3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgsICZzY2FsZUhpbnQpOworICAgIG1fZnJh
bWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nU2NhbGUgPSBzY2FsZUhpbnQ7CisjZWxzZQorICAgIG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4
KTsKKyNlbmRpZgorICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9m
cmFtZSkKKyAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAKICAgICBtX2ZyYW1lc1tpbmRl
eF0ubV9vcmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CiAg
ICAgbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKICAgICBtX2ZyYW1lc1tp
bmRleF0ubV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRl
eCk7Ci0KICAgICBpZiAocmVwZXRpdGlvbkNvdW50KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkK
ICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7Ci0KICAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1f
c291cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZUJ5dGVzID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwpOworICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5m
cmFtZUJ5dGVzQXRJbmRleChpbmRleCk7CiAKLSAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShp
bmRleCA/IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwp
IDogbV9zaXplKTsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1f
c2l6ZSkKKyAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1l
U2l6ZUF0SW5kZXgoaW5kZXgpIDogbV9zaXplKTsKKyAgICBpZiAoZnJhbWVTaXplICE9IG1fc2l6
ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Ci0KICAgICBpZiAobV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKICAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2Fz
dDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAgICAgICBtX2RlY29kZWRT
aXplICs9IGRlbHRhQnl0ZXM7CkBAIC0yMDcsMTUgKzE5NiwzMCBAQCB2b2lkIEJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsLCBJbQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgQml0bWFwSW1hZ2U6
OmNhY2hlRnJhbWVJbmZvKHNpemVfdCBpbmRleCkKK3sKKyAgICBzaXplX3QgbnVtRnJhbWVzID0g
ZnJhbWVDb3VudCgpOworCisgICAgaWYgKG1fZnJhbWVzLnNpemUoKSA8IG51bUZyYW1lcykKKyAg
ICAgICAgbV9mcmFtZXMucmVzaXplKG51bUZyYW1lcyk7CisKKyAgICBBU1NFUlQoIW1fZnJhbWVz
W2luZGV4XS5tX2hhdmVJbmZvKTsKKworICAgIGlmIChzaG91bGRBbmltYXRlKCkpCisgICAgICAg
IG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoaW5kZXgpOworICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJh
bWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhdmVJbmZv
ID0gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIEJpdG1hcEltYWdlOjpkaWREZWNvZGVQcm9wZXJ0
aWVzKCkgY29uc3QKIHsKICAgICBpZiAobV9kZWNvZGVkU2l6ZSkKICAgICAgICAgcmV0dXJuOwot
CiAgICAgc2l6ZV90IHVwZGF0ZWRTaXplID0gbV9zb3VyY2UuYnl0ZXNEZWNvZGVkVG9EZXRlcm1p
bmVQcm9wZXJ0aWVzKCk7CiAgICAgaWYgKG1fZGVjb2RlZFByb3BlcnRpZXNTaXplID09IHVwZGF0
ZWRTaXplKQogICAgICAgICByZXR1cm47Ci0KICAgICBpbnQgZGVsdGFCeXRlcyA9IHVwZGF0ZWRT
aXplIC0gbV9kZWNvZGVkUHJvcGVydGllc1NpemU7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IGJvb2wgb3ZlcmZsb3cgPSB1cGRhdGVkU2l6ZSA+IG1fZGVjb2RlZFByb3BlcnRpZXNTaXplICYm
IGRlbHRhQnl0ZXMgPCAwOwpAQCAtMjM0LDEzICsyMzgsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
dXBkYXRlU2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pIGNvbnN0
CiAKICAgICBtX3NpemUgPSBtX3NvdXJjZS5zaXplKGRlc2NyaXB0aW9uKTsKICAgICBtX3NpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NvdXJjZS5zaXplKEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgZGVzY3JpcHRpb24uaW1hZ2VPcmllbnRh
dGlvbigpKSk7Ci0KICAgICBtX2ltYWdlT3JpZW50YXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVzY3JpcHRpb24uaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICBtX3Nob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCkpOwotCisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1fb3JpZ2lu
YWxTaXplID0gbV9zb3VyY2Uub3JpZ2luYWxTaXplKCk7CisgICAgbV9vcmlnaW5hbFNpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmlnaW5hbFNpemUoUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pOworI2VuZGlmCiAgICAgbV9oYXZlU2l6ZSA9IHRydWU7Ci0KLSAgICBkZXRlcm1p
bmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgpOwogICAgIGRpZERlY29kZVByb3BlcnRpZXMoKTsK
IH0KIApAQCAtMjU2LDYgKzI2MCwyOSBAQCBJbnRTaXplIEJpdG1hcEltYWdlOjpzaXplUmVzcGVj
dGluZ09yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcgogICAgIHJl
dHVybiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
CitGbG9hdFNpemUgQml0bWFwSW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGNvbnN0Cit7CisgICAgdXBk
YXRlU2l6ZSgpOworICAgIHJldHVybiBtX29yaWdpbmFsU2l6ZTsKK30KKworSW50U2l6ZSBCaXRt
YXBJbWFnZTo6b3JpZ2luYWxTaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAg
ICB1cGRhdGVTaXplKCk7CisgICAgcmV0dXJuIG1fb3JpZ2luYWxTaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uOworfQorI2VuZGlmCisKK0ludFNpemUgQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZVNp
emUoKSBjb25zdAoreworICAgIGlmICghbV9jdXJyZW50RnJhbWUgfHwgbV9oYXNVbmlmb3JtRnJh
bWVTaXplKQorICAgICAgICByZXR1cm4gSW50U2l6ZShzaXplKCkpOworICAgIEludFNpemUgZnJh
bWVTaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAg
ZGlkRGVjb2RlUHJvcGVydGllcygpOworICAgIHJldHVybiBmcmFtZVNpemU7Cit9CisKIGJvb2wg
Qml0bWFwSW1hZ2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CiB7CiAgICAg
Ym9vbCByZXN1bHQgPSBtX3NvdXJjZS5nZXRIb3RTcG90KGhvdFNwb3QpOwpAQCAtMjk2LDcgKzMy
Myw2IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQp
OwogI2Vsc2UKLSAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMgZGlmZmVyZW50IGZvciBpT1M/CiAg
ICAgaW50IGRlbHRhQnl0ZXMgPSAwOwogICAgIGlmICghbV9mcmFtZXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGludCBieXRlcyA9IG1fZnJhbWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLm1fZnJhbWVC
eXRlczsKQEAgLTM2NCw1OSArMzkwLDg1IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmlzU2l6ZUF2YWls
YWJsZSgpCiAgICAgcmV0dXJuIG1fc2l6ZUF2YWlsYWJsZTsKIH0KIAotYm9vbCBCaXRtYXBJbWFn
ZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nIGZy
YW1lQ2FjaGluZykKKyNpZiAhUExBVEZPUk0oSU9TKQorYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJl
RnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVz
LnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFt
ZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcg
PT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkp
Ci0gICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1lQ2FjaGluZyk7CisgICAgaWYgKGlu
ZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAg
ICAgIGNhY2hlRnJhbWUoaW5kZXgpOworICAgIHJldHVybiB0cnVlOworfQorI2Vsc2UKK2Jvb2wg
Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSW5mb0lzQ2FjaGVkKHNpemVfdCBpbmRleCkKK3sKKyAg
ICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9oYXZl
SW5mbykKKyAgICAgICAgY2FjaGVGcmFtZUluZm8oaW5kZXgpOwogICAgIHJldHVybiB0cnVlOwog
fQorI2VuZGlmCiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQorUGFzc05hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlm
IChpbmRleCA+PSBmcmFtZUNvdW50KCkpCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBm
cmFtZUF0SW5kZXgoaW5kZXgsIDEuMGYpOworI2Vsc2UKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXND
YWNoZWQoaW5kZXgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9mcmFt
ZXNbaW5kZXhdLm1fZnJhbWU7CisjZW5kaWYKK30KIAotICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCA9IHN0ZDo6bWluKG1fc291cmNlLnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShwcmVzZW50YXRpb25TY2FsZUhpbnQpLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKTsKKyNp
ZiBQTEFURk9STShJT1MpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHNjYWxlSGludCkKK3sKKyAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vIFdlIG1heSBo
YXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdo
aWNoIGNhc2Ugd2UgbmVlZCB0bwotICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwu
Ci0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsKSB7CisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5k
ZXhdLm1fZnJhbWUpCisgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHNjYWxlSGludCk7CisgICAg
ZWxzZSBpZiAoc3RkOjptaW4oMS4wZiwgc2NhbGVIaW50KSA+IG1fZnJhbWVzW2luZGV4XS5tX3N1
YnNhbXBsaW5nU2NhbGUpIHsKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2Fj
aGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24u
CiAgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7
CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KG1fZGVjb2RlZFNpemUpICsgc2l6ZUNo
YW5nZSA+PSAwKTsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOwogICAgICAg
ICBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6
ZUNoYW5nZTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJCaXRtYXBJbWFnZSAlcCBmcmFtZUF0SW5k
ZXggcmVjYWNoaW5nLCBtX2RlY29kZWRTaXplIG5vdyAldSAoc2l6ZSBjaGFuZ2UgJWQpIiwgdGhp
cywgbV9kZWNvZGVkU2l6ZSwgc2l6ZUNoYW5nZSk7CiAgICAgICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0aGlz
LCBzaXplQ2hhbmdlKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBm
cmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCisgICAgICAgIGNhY2hlRnJhbWUo
aW5kZXgsIHNjYWxlSGludCk7CisgICAgfQogICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9m
cmFtZTsKIH0KKyNlbmRpZgogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgs
IENhY2hlTWV0YWRhdGFPbmx5KSkKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IGNh
Y2hlRnJhbWVJbmZvIGRvZXMgbm90IHNldCBtX2lzQ29tcGxldGUuIFNob3VsZCBpdD8KKyAgICBp
ZiAoIWVuc3VyZUZyYW1lSW5mb0lzQ2FjaGVkKGluZGV4KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCisjZWxzZQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pc0Nv
bXBsZXRlOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YU9ubHkpKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoIWVuc3VyZUZyYW1lSW5m
b0lzQ2FjaGVkKGluZGV4KSkKICAgICAgICAgcmV0dXJuIDA7Ci0KKyNlbHNlCisgICAgaWYgKCFl
bnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4KSkKKyAgICAgICAgcmV0dXJuIDA7CisjZW5kaWYKICAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKQEAgLTQyNyw5ICs0Nzks
MTMgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpCiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVf
dCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0
YWRhdGFPbmx5KSkKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFlbnN1cmVGcmFtZUluZm9J
c0NhY2hlZChpbmRleCkpCisgICAgICAgIHJldHVybiB0cnVlOyAvLyBGSVhNRTogV2h5IHdvdWxk
IGFuIGludmFsaWQgaW5kZXggcmV0dXJuIHRydWUgaGVyZT8KKyNlbHNlCisgICAgaWYgKG1fZnJh
bWVzLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0KKyNlbmRpZgogICAg
IGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCiAgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ubV9oYXNBbHBoYTsKIApAQCAtNDQzLDggKzQ5OSwxNCBAQCBib29sIEJpdG1h
cEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9u
IEJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0g
ICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisj
aWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBjYWNoZUZyYW1lSW5mbyBkb2VzIG5vdCBz
ZXQgbV9vcmllbnRhdGlvbi4gU2hvdWxkIGl0PworICAgIGlmICghZW5zdXJlRnJhbWVJbmZvSXND
YWNoZWQoaW5kZXgpKQogICAgICAgICByZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247Cisj
ZWxzZQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCisgICAgICAgIHJldHVy
biBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyNlbmRpZgogCiAgICAgaWYgKG1fZnJhbWVzW2lu
ZGV4XS5tX2hhdmVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX29y
aWVudGF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKaW5kZXggOTY0MTBkNDc4MTU5NDdhMTQxNjEyOTA0NGFhNTYwYzA3ZjcxYjk3NC4uMjMw
MTg0OGE0MzZjNjNmYmQ0Y2U1MGE0NmI1NmM3Y2MyMmE5MzEzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC03MCw3ICs3MCwxMCBAQCBw
dWJsaWM6CiAgICAgRnJhbWVEYXRhKCkKICAgICAgICAgOiBtX2ZyYW1lKDApCiAgICAgICAgICwg
bV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAgICAgLCBtX3N1YnNh
bXBsaW5nTGV2ZWwoMCkKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICwgbV9zdWJzYW1wbGlu
Z1NjYWxlKDApCisgICAgICAgICwgbV9oYXZlSW5mbyhmYWxzZSkKKyNlbmRpZgogICAgICAgICAs
IG1fZHVyYXRpb24oMCkKICAgICAgICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKICAgICAgICAg
LCBtX2lzQ29tcGxldGUoZmFsc2UpCkBAIC05MCw3ICs5MywxMCBAQCBwdWJsaWM6CiAKICAgICBO
YXRpdmVJbWFnZVB0ciBtX2ZyYW1lOwogICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlv
bjsKLSAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgZmxvYXQgbV9zdWJzYW1wbGluZ1NjYWxlOworICAgIGJvb2wgbV9oYXZlSW5m
bzsKKyNlbmRpZgogICAgIGZsb2F0IG1fZHVyYXRpb247CiAgICAgYm9vbCBtX2hhdmVNZXRhZGF0
YSA6IDE7CiAgICAgYm9vbCBtX2lzQ29tcGxldGUgOiAxOwpAQCAtMTAyLDYgKzEwOCw5IEBAIHB1
YmxpYzoKIC8vIEJpdG1hcEltYWdlIENsYXNzCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CiAKKy8vIEZJWE1FOiBXZSBzaG91bGQgYmV0dGVyIGlu
dGVncmF0ZSB0aGUgaU9TIGFuZCBub24taU9TIGNvZGUgaW4gdGhpcyBjbGFzcy4gVW5saWtlIG90
aGVyIHBvcnRzLCB0aGUKKy8vIGlPUyBwb3J0IGNhY2hlcyB0aGUgbWV0YWRhdGEgZm9yIGEgZnJh
bWUgd2l0aG91dCBkZWNvZGluZyB0aGUgaW1hZ2UuCisKIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFs
IDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAg
ZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTI4LDcgKzEzNywxMSBA
QCBwdWJsaWM6CiAgICAgLy8gRmxvYXRTaXplIGR1ZSB0byBvdmVycmlkZS4KICAgICB2aXJ0dWFs
IEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBzaXplUmVzcGVj
dGluZ09yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpKSBjb25zdDsKLQorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0
dWFsIEZsb2F0U2l6ZSBvcmlnaW5hbFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXpl
IG9yaWdpbmFsU2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OworI2VuZGlmCisgICAg
SW50U2l6ZSBjdXJyZW50RnJhbWVTaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGdldEhv
dFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTgxLDEyICsxOTQsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjYW5BbmltYXRlKCk7CiAKLSAgICBib29sIGFsbG93
U3Vic2FtcGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2FsbG93U3Vic2FtcGxpbmc7IH0KLSAgICB2
b2lkIHNldEFsbG93U3Vic2FtcGxpbmcoYm9vbCBhbGxvd1N1YnNhbXBsaW5nKSB7IG1fYWxsb3dT
dWJzYW1wbGluZyA9IGFsbG93U3Vic2FtcGxpbmc7IH0KLSAgICAKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVTaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpKSBjb25zdDsKLSAgICB2b2lkIGRldGVybWluZU1pbmltdW1TdWJzYW1w
bGluZ0xldmVsKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIFJlcGV0aXRpb25Db3Vu
dFN0YXR1cyB7CkBAIC0yMDksMjQgKzIxOCwzMCBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAg
IHNpemVfdCBjdXJyZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQot
ICAgIHNpemVfdCBmcmFtZUNvdW50KCk7Ci0KLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVB
dEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90LCBm
bG9hdCBzY2FsZUhpbnQpOwogICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFt
ZUF0SW5kZXgoc2l6ZV90KTsKLQotICAgIGJvb2wgaGF2ZUZyYW1lQXRJbmRleChzaXplX3QpOwot
CisjZW5kaWYKKyAgICBzaXplX3QgZnJhbWVDb3VudCgpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBmcmFtZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJv
b2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCk7CiAKICAgICAvLyBEZWNvZGVzIGFuZCBjYWNo
ZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNzZWQgZXhjZXB0IGludGVybmFsbHkuCi0gICAgZW51bSBJ
bWFnZUZyYW1lQ2FjaGluZyB7IENhY2hlTWV0YWRhdGFPbmx5LCBDYWNoZU1ldGFkYXRhQW5kRnJh
bWUgfTsKLSAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIGZsb2F0IHNjYWxlSGlu
dCk7CiAKKyAgICAvLyBDYWNoZSBmcmFtZSBtZXRhZGF0YSB3aXRob3V0IGRlY29kaW5nIGltYWdl
LgorICAgIHZvaWQgY2FjaGVGcmFtZUluZm8oc2l6ZV90IGluZGV4KTsKICAgICAvLyBDYWxsZWQg
YmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGlu
Zy4gUmV0dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91bmRzLgotICAgIGJvb2wgZW5zdXJl
RnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRh
ZGF0YUFuZEZyYW1lKTsKKyAgICBib29sIGVuc3VyZUZyYW1lSW5mb0lzQ2FjaGVkKHNpemVfdCBp
bmRleCk7CisjZWxzZQorICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgpOworICAgIC8v
IENhbGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJhbWVzW2luZGV4XS4gUmV0dXJucyBmYWxzZSBv
biBpbmRleCBvdXQgb2YgYm91bmRzLgorICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXpl
X3QgaW5kZXgpOworI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQg
ZGF0YS4gIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhl
IGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBk
ZXN0cm95CkBAIC0yODYsMTIgKzMwMSwxMyBAQCBwcml2YXRlOgogICAgIEltYWdlU291cmNlIG1f
c291cmNlOwogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBm
b3IgdGhlIG92ZXJhbGwgaW1hZ2UgKHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3Qg
aW1hZ2UpLgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247
Ci0KLSAgICBtdXRhYmxlIFN1YnNhbXBsaW5nTGV2ZWwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZl
bDsKLQogICAgIG11dGFibGUgdW5zaWduZWQgbV9pbWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1h
Z2VPcmllbnRhdGlvbkVudW0KICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24gOiAxOyAvLyBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0KIAorI2lm
IFBMQVRGT1JNKElPUykKKyAgICBtdXRhYmxlIEludFNpemUgbV9vcmlnaW5hbFNpemU7IC8vIFRo
ZSBzaXplIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UuCisgICAgbXV0YWJsZSBJbnRTaXplIG1f
b3JpZ2luYWxTaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOworI2VuZGlmCiAgICAgc2l6ZV90IG1f
Y3VycmVudEZyYW1lOyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0
aW9uLgogICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0
aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMg
dG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgogCkBAIC0zMjAsNyArMzM2LDYgQEAgcHJpdmF0ZToK
ICAgICB1aW50MTZfdCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQ7CiAjZW5kaWYKIAotICAg
IGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIDogMTsgLy8gV2hldGhlciB3ZSBzaG91bGQgYXR0ZW1w
dCBzdWJzYW1wbGluZyBpZiB0aGlzIGltYWdlIGlzIHZlcnkgbGFyZ2UuCiAgICAgYm9vbCBtX2lz
U29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBhIDF4MSBzb2xpZCBpbWFn
ZS4KICAgICBib29sIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgOiAxOyAvLyBXaGV0aGVyIHdlJ3Zl
IGNoZWNrZWQgdGhlIGZyYW1lIGZvciBzb2xpZCBjb2xvci4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA3OWQ1MTE4MTNh
YWFlNmEzMjY1OTA4OGUwMTdlOTI3ODg4NmU0MGQ3Li5hYzFlMDUwOGQ3YTBlMWIzYTUzNzA4MDUz
NzkzODAwNDNlNzVmM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjgzLDcgKzI4Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAgICAgICAgIHZvaWQgZHJh
d1BhdGgoY29uc3QgUGF0aCYpOwogCi0gICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NO
YXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbik7CisgICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgZmxv
YXQgc2NhbGUgPSAxLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKTsKIAogICAgICAgICAvLyBBbGxvdyBmb250IHNtb290aGluZyAoTENEIGFu
dGlhbGlhc2luZykuIE5vdCBwYXJ0IG9mIHRoZSBncmFwaGljcyBzdGF0ZS4KICAgICAgICAgdm9p
ZCBzZXRBbGxvd3NGb250U21vb3RoaW5nKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGFhM2RmOGY1Y2FlYWEzOWE5MjYx
Y2Q4NWQ3ZjE4NmFmNDkxMjQxYjkuLmY2Yjc2NWZlNGQyZjdlZDU2YTE4MGY2MWI0NTQ3OGNmYTFh
NjEwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgIVVTRShDRykKLQogI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ci5oIgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgpAQCAtOTYsMTYgKzk0LDYgQEAg
U3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwog
fQogCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2Nh
bGUoZmxvYXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6
OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCiB7CiAg
ICAgcmV0dXJuIG1fZGVjb2RlciAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwpAQCAt
MTEzLDEwICsxMDEsMTAgQEAgYm9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKIAog
SW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgZGVz
Y3JpcHRpb24pOworICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIGRlc2NyaXB0aW9uKTsK
IH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bikgY29uc3QKK0ludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CkBAIC0xNDgsOCAr
MTM2LDEwIEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotUGFzc05h
dGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsKQorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCogc2NhbGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKHNjYWxlKTsKKwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gMDsK
IApAQCAtMjA3LDcgKzE5Nyw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMo
KSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOwogfQogCi11bnNpZ25lZCBJbWFnZVNvdXJj
ZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25z
dAordW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTUs
NSArMjA1LDMgQEAgdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIH0KIAogfQotCi0jZW5kaWYgLy8gVVNF
KENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
aW5kZXggMjgxZjYxYzc4NzFkZWFhZmQyZjhkMWQxMTk5ODg5NWNiOGNiMzFkMy4uYzRlZTk4ZmFh
OWVjYmFkM2QxMDE5NDIyYjVjOGZhZDJlODcxMDEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC03Nyw5ICs3Nyw2IEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogcHVibGlj
OgpAQCAtMTM0LDE0ICsxMzEsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBTdHJpbmcgZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdDsKIAotICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bEZvclNjYWxlKGZsb2F0KSBjb25zdDsKLSAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleChzaXplX3QpIGNvbnN0OwotCiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKLSAg
ICAvLyBBbHdheXMgb3JpZ2luYWwgc2l6ZSwgd2l0aG91dCBzdWJzYW1wbGluZy4KICAgICBJbnRT
aXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpIGNvbnN0OwotICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVk
IGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSAwLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSkgY29uc3Q7CisgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCkpIGNvbnN0OworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIEludFNpemUgb3JpZ2luYWxT
aXplKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50
YXRpb24pIGNvbnN0OworICAgIGJvb2wgaXNTdWJzYW1wbGVkKCkgY29uc3QgeyByZXR1cm4gbV9i
YXNlU3Vic2FtcGxpbmc7IH0KKyNlbmRpZgogCiAgICAgYm9vbCBnZXRIb3RTcG90KEludFBvaW50
JikgY29uc3Q7CiAKQEAgLTE1Myw3ICsxNTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZXJz
IHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVy
IGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gMCk7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3Qs
IGZsb2F0KiBzY2FsZSA9IDApOwogCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIg
b3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4KQEAgLTE2Miw3ICsxNTks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUg
ZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5vdCB5ZXQKICAgICAvLyBkZWNvZGVkIHRo
ZW4gcmV0dXJuIDAuCi0gICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gMCkgY29uc3Q7CisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgo
c2l6ZV90KSBjb25zdDsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
CiAgICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJu
IHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9CkBAIC0xNzksNiArMTc2LDExIEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICBzdGF0aWMg
dW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgbXV0YWJsZSBpbnQgbV9iYXNlU3Vic2FtcGxpbmc7CisgICAgbXV0YWJsZSBi
b29sIG1faXNQcm9ncmVzc2l2ZTsKKyAgICBDRkRpY3Rpb25hcnlSZWYgaW1hZ2VTb3VyY2VPcHRp
b25zKFNob3VsZFNraXBNZXRhZGF0YSwgaW50IHN1YnNhbXBsaW5nID0gMCkgY29uc3Q7CisjZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggMDgwMjI1NzRlNzhiNDc5M2Uw
ZGZlMzA4ODU0NDUwZGUyODdmMTNlNi4uYWViNzZlMGM0ZmIzNTFkMGVhZjNlYmEyYWYyZDY1ODE3
OGI0MjI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTExOSwxMSArMTE5LDYgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRo
aXMpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdM
ZXZlbCgpIGNvbnN0Ci17Ci0gICAgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCA9IDA7Ci19Ci0K
IHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiB7CiAgICAgbV9pc1NvbGlk
Q29sb3IgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKaW5kZXggZWNkNzA1NGM5ZDVkYzU1ZjA1N2U4M2ZlNDEx
MTljODhlMjk1MTNlMy4uYjA0Mjc2NTBmM2MxMGM4Njk5YTFiOWZhMTA4YWExZDhkNmVmYjk5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1h
Z2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBVU0UoQ0cpCiAKICNpbmNsdWRlICJG
bG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKQEAgLTU5LDcgKzU4LDEyIEBAIGJvb2wg
RnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgICAgIG1faGF2ZU1ldGFk
YXRhID0gZmFsc2U7CiAKICAgICBtX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRp
b247Ci0gICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKKworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBtX2ZyYW1lQnl0ZXMgPSAwOworICAgIG1fc3Vic2FtcGxpbmdTY2FsZSA9IDE7CisgICAgbV9o
YXZlSW5mbyA9IGZhbHNlOworI2VuZGlmCiAKICAgICBpZiAobV9mcmFtZSkgewogI2lmIENBQ0hF
X1NVQklNQUdFUwpAQCAtNzQsMTAgKzc4LDggQEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wg
Y2xlYXJNZXRhZGF0YSkKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJ
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKLSAg
ICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKLSAgICAsIG1faW1hZ2VPcmllbnRhdGlv
bihPcmlnaW5Ub3BMZWZ0KQotICAgICwgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihm
YWxzZSkKICAgICAsIG1fY3VycmVudEZyYW1lKDApCisgICAgLCBtX2ZyYW1lcygwKQogICAgICwg
bV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRpb25Db3Vu
dFN0YXR1cyhVbmtub3duKQogICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCkBAIC0xMDEs
NjIgKzEwMyw1MCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdl
LCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAvLyBTZXQgbV9zaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uIHRvIGJlIHRoZSBzYW1lIGFzIG1fc2l6ZSBzbyBpdCdzIG5vdCAweDAuCiAgICAg
bV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplOwogCisjaWYgUExBVEZPUk0oSU9T
KQorICAgIG1fb3JpZ2luYWxTaXplID0gbV9zaXplOworICAgIG1fb3JpZ2luYWxTaXplUmVzcGVj
dGluZ09yaWVudGF0aW9uID0gbV9zaXplOworI2VuZGlmCisKICAgICBtX2ZyYW1lcy5ncm93KDEp
OwogICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBDR0ltYWdlUmV0YWluKGNnSW1hZ2UpOwogICAg
IG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1l
dGFkYXRhID0gdHJ1ZTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBtX2ZyYW1lc1swXS5tX3N1
YnNhbXBsaW5nU2NhbGUgPSAxOworI2VuZGlmCisKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsK
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwo
KSBjb25zdAotewotICAgIGlmICghbV9hbGxvd1N1YnNhbXBsaW5nKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoIW1fc291cmNlLmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleCgwKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVmFsdWVzIGNob3NlbiB0byBiZSBhcHByb3ByaWF0
ZSBmb3IgaU9TLgotICAgIGNvbnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBs
aW5nID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgbWF4U3Vi
c2FtcGxpbmdMZXZlbCA9IDM7Ci0KLSAgICBTdWJzYW1wbGluZ0xldmVsIGN1cnJlbnRMZXZlbCA9
IDA7Ci0gICAgZm9yICggOyBjdXJyZW50TGV2ZWwgPD0gbWF4U3Vic2FtcGxpbmdMZXZlbDsgKytj
dXJyZW50TGV2ZWwpIHsKLSAgICAgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBtX3NvdXJjZS5mcmFt
ZVNpemVBdEluZGV4KDAsIGN1cnJlbnRMZXZlbCk7Ci0gICAgICAgIGlmIChmcmFtZVNpemUuYXJl
YSgpIDwgY01heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZykKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwgPSBjdXJyZW50TGV2
ZWw7Ci19CisvLyBEcmF3aW5nIFJvdXRpbmVzCiAKIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9y
U29saWRDb2xvcigpCiB7CiAgICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7Ci0gICAg
bV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQorICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKSB7CisgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7
CiAgICAgICAgIHJldHVybjsKLQotICAgIGlmICghaGF2ZUZyYW1lQXRJbmRleCgwKSkgewotICAg
ICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KDAsIDApOwotICAg
ICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZCgwKSkKLSAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgoMCk7CisjZWxzZQorICAgIC8vIE5vdGUsIGNoZWNr
Rm9yU29saWRDb2xvcigpIG1heSBiZSBjYWxsZWQgZnJvbSBmcmFtZUF0SW5kZXgoKS4gT24gaU9T
IGZyYW1lQXRJbmRleCgpIGdldHMgcGFzc2VkIGEgc2NhbGVIaW50CisgICAgLy8gYXJndW1lbnQg
d2hpY2ggaXQgdXNlcyB0byB0ZWxsIENHIHRvIGNyZWF0ZSBhIHNjYWxlZCBkb3duIGltYWdlLiBT
aW5jZSB3ZSBkb24ndCBrbm93IHRoZSBzY2FsZUhpbnQgaGVyZSwgaWYKKyAgICAvLyB3ZSBjYWxs
IGZyYW1lQXRJbmRleCgpIGFnYWluLCB3ZSB3b3VsZCBwYXNzIGl0IHRoZSBkZWZhdWx0IHNjYWxl
IG9mIDEgYW5kIHdvdWxkIGVuZCB1cCByZWNyZWF0aW5nIHRoZSBpbWFnZS4KKyAgICAvLyBTbyB3
ZSBkbyBhIHF1aWNrIGNoZWNrIGFuZCBjYWxsIGZyYW1lQXRJbmRleCgwKSBvbmx5IGlmIHdlIGhh
dmVuJ3QgeWV0IGNyZWF0ZWQgYW4gaW1hZ2UuCiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxw
dHI7CiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1sw
XS5tX2ZyYW1lOwogCiAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBp
bWFnZSA9IGZyYW1lQXRJbmRleCgwKTsKKyNlbmRpZgogCiAgICAgLy8gQ3VycmVudGx5IHdlIG9u
bHkgY2hlY2sgZm9yIHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lhbCBjYXNlIG9m
IGEgMXgxIGltYWdlLgotICAgIGlmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IDEgJiYgQ0dJ
bWFnZUdldEhlaWdodChpbWFnZSkgPT0gMSkgeworICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpID09IDEgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gMSkgewogICAg
ICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCiAgICAgICAgIFJldGFpblB0cjxD
R0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
LAogICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJCaWcpKTsKQEAgLTIwOCwyMiArMTk4LDI5IEBAIFJldGFpblB0cjxDRkFycmF5
UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkKIAogdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCiB7CisgICAgQ0dJbWFnZVJlZiBpbWFnZTsK
KyAgICBGbG9hdFJlY3Qgc3JjUmVjdEZvckN1cnJlbnRGcmFtZSA9IHNyY1JlY3Q7CisKICNpZiBQ
TEFURk9STShJT1MpCisgICAgaWYgKG1fb3JpZ2luYWxTaXplICE9IG1fc2l6ZSAmJiAhbV9vcmln
aW5hbFNpemUuaXNFbXB0eSgpKQorICAgICAgICBzcmNSZWN0Rm9yQ3VycmVudEZyYW1lLnNjYWxl
KG1fc2l6ZS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fb3JpZ2luYWxTaXplLndpZHRo
KCkpLCBtX3NpemUuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9vcmlnaW5hbFNpemUu
aGVpZ2h0KCkpKTsKKwogICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hVcCk7Ci0jZWxzZQot
ICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0jZW5kaWYKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZTsKKyAgICBDR1JlY3QgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RB
cHBseUFmZmluZVRyYW5zZm9ybShkZXN0UmVjdCwgQ0dDb250ZXh0R2V0Q1RNKGN0eHQtPnBsYXRm
b3JtQ29udGV4dCgpKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlUG9zc2libHlD
b3BpZWQ7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGlu
dG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LT5w
bGF0Zm9ybUNvbnRleHQoKSkpCi0gICAgICAgIGltYWdlID0gYWRvcHRDRihjb3B5VW5zY2FsZWRG
cmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQ0dSZWN0
IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0o
ZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAg
ICAgICBmbG9hdCBzdWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4
KHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCks
IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQo
KSkpOworICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpKSA9
PSBrQ0dDb250ZXh0VHlwZVBERikKKyAgICAgICAgaW1hZ2VQb3NzaWJseUNvcGllZCA9IGFkb3B0
Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKSk7CisgICAgZWxzZQor
ICAgICAgICBpbWFnZVBvc3NpYmx5Q29waWVkID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1l
LCBzdGQ6Om1pbjxmbG9hdD4oMS4wZiwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJl
Y3Quc2l6ZS53aWR0aCAgLyBzcmNSZWN0Rm9yQ3VycmVudEZyYW1lLndpZHRoKCksIHRyYW5zZm9y
bWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdEZvckN1cnJlbnRGcmFtZS5o
ZWlnaHQoKSkpKTsKIAotICAgICAgICBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSwgc3Vic2FtcGxpbmdTY2FsZSk7Ci0gICAgfQorICAgIGltYWdlID0gaW1hZ2VQb3NzaWJseUNv
cGllZC5nZXQoKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsKKworICAgIGltYWdlID0g
ZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyNlbmRpZgogCiAgICAgaWYgKCFpbWFnZSkg
Ly8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAg
IHJldHVybjsKQEAgLTIzMywyNyArMjMwLDIzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZl
biB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBp
bWFnZVNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChp
bWFnZS5nZXQoKSkpOwotICAgIAotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVz
IG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBz
dWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBzY2FsZWRTcmNSZWN0ID0gc3JjUmVjdDsK
LSAgICBpZiAoaW1hZ2VTaXplICE9IG1fc2l6ZSkgewotICAgICAgICBGbG9hdFJlY3Qgb3JpZ2lu
YWxJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIG1fc2l6ZSk7Ci0gICAgICAgIEZsb2F0UmVjdCBz
dWJzYW1wbGVkSW1hZ2VCb3VuZHMoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpOwotICAgICAgICBz
Y2FsZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBvcmlnaW5hbEltYWdlQm91bmRzLCBzdWJz
YW1wbGVkSW1hZ2VCb3VuZHMpOwotICAgIH0KLSAgICAKKyAgICBmbG9hdCBzY2FsZSA9IDE7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHNjYWxlID0gbV9mcmFtZXNbbV9jdXJyZW50RnJhbWVdLm1f
c3Vic2FtcGxpbmdTY2FsZTsKKyNlbmRpZgorICAgIEZsb2F0U2l6ZSBzZWxmU2l6ZSA9IGN1cnJl
bnRGcmFtZVNpemUoKTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uOworCiAgICAg
aWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdl
T3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdl
dCgpLCBpbWFnZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3Qs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LT5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIHNlbGZTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNS
ZWN0Rm9yQ3VycmVudEZyYW1lLCBzY2FsZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50
YXRpb24pOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZl
cigpLT5kaWREcmF3KHRoaXMpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQogUGFzc05hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCkBAIC0yNjIsMTEgKzI1NSwxMiBA
QCBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWUpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDEpOwogCi0g
ICAgaWYgKCFtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKQorICAgIGlmIChtX2Zy
YW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ1NjYWxlID09IDEgJiYgIW1fc291cmNlLmlzU3Vic2Ft
cGxlZCgpKQogICAgICAgICByZXR1cm4gQ0dJbWFnZVJldGFpbihtX2ZyYW1lc1tpbmRleF0ubV9m
cmFtZSk7CiAKICAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsK
IH0KKyNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggZjNmM2ZiYWEzYzM4
YWNkZDUwYjM4MmMyODVlMzRiMTFiOTQ5OTExOS4uZjAyNmRiODIxNjgxMDE1ZmRmZjFkZWVmNWEz
YWYxMTM3NTZlNTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTMzMiw4ICszMzIsMTcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKG1faW1h
Z2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGZs
b2F0IHNjYWxlSGludCA9IDE7CisgICAgICAgIGlmIChtX2ltYWdlLT5pc0JpdG1hcEltYWdlKCkp
IHsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFNpemUgPSB0b0JpdG1hcEltYWdlKG1f
aW1hZ2UpLT5vcmlnaW5hbFNpemUoKTsKKyAgICAgICAgICAgIGlmICghb3JpZ2luYWxTaXplLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBzY2FsZUhpbnQgPSBzdGQ6Om1pbjxmbG9hdD4oMSwg
c3RkOjptYXgobV9pbWFnZS0+c2l6ZSgpLndpZHRoKCkgLyBvcmlnaW5hbFNpemUud2lkdGgoKSwg
bV9pbWFnZS0+c2l6ZSgpLndpZHRoKCkgLyBvcmlnaW5hbFNpemUuaGVpZ2h0KCkpKTsKKyAgICAg
ICAgfQorICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFt
ZUF0SW5kZXgoMCwgJnNjYWxlSGludCkpOworI2Vsc2UKICAgICAgICAgbV9kZWNvZGVkSW1hZ2Ug
PSBhZG9wdENGKGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApKTsKKyNlbmRpZgogICAgICAg
ICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9IGVsc2UKICAgICAgICAg
bV9jZ0ltYWdlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTUz
Niw3ICs1NDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtaW1hZ2VIZWln
aHQpOwogICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xh
dGlvbk5vbmUpOwotICAgIGNvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLmdldCgpLCBp
bWFnZVNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQtPmRyYXdO
YXRpdmVJbWFnZShjZ0ltYWdlLmdldCgpLCBpbWFnZVNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIDEsIENvbXBv
c2l0ZUNvcHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
aW5kZXggODI1MGNmNjRlZDg0MjE1ZjdlOTFiMjRkMWM1NjgzYjU5NDViOTBlOS4uMjY1OTlhMWNi
YWE3OGJhNjZhMGViNTBmZDk3ZDVmMDI1Njg2ZDM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAt
MTY5LDExICsxNjksMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0
YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRp
dHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQ
YXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgZmxvYXQgc2NhbGUs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFn
ZVB0cik7CiAKICAgICBmbG9hdCBjdXJySGVpZ2h0ID0gb3JpZW50YXRpb24udXNlc1dpZHRoQXNI
ZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gVW5hcHBseSB0aGUgc2Nh
bGluZyBzaW5jZSB3ZSBhcmUgZ2V0dGluZyB0aGlzIGZyb20gYSBzY2FsZWQgYml0bWFwLgorICAg
IGN1cnJIZWlnaHQgLz0gc2NhbGU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzY2FsZSk7Cisj
ZW5kaWYKKwogICAgIGlmIChjdXJySGVpZ2h0IDw9IHNyY1JlY3QueSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTIxNCw2ICsyMjEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAgICAg
ICAgICAgc3ViaW1hZ2VSZWN0LnNldEhlaWdodChjZWlsZihzdWJpbWFnZVJlY3QuaGVpZ2h0KCkg
KyB0b3BQYWRkaW5nKSk7CiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChz
dWJpbWFnZVJlY3QuaGVpZ2h0KCkgLyB5U2NhbGUpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICAgICAgc3ViaW1hZ2VSZWN0LnNjYWxlKHNjYWxlLCBzY2FsZSk7CisjZW5kaWYKICNpZiBD
QUNIRV9TVUJJTUFHRVMKICAgICAgICAgICAgIGltYWdlID0gc3ViaW1hZ2VDYWNoZSgpLmdldFN1
YmltYWdlKGltYWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXgg
YjQwMTIwNzE2NTUzMjg1YTViNWNmMzI4YjU4NGNhMjIwZjFhM2ZkMi4uNTAzMzM0YzQ2M2U2ZWI5
Mzg4OWI0YWMyNjBhOGY3ZjIyMGNiMjM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTMwMSw3ICszMDEsNyBA
QCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLAogCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVj
dCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxl
LCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShp
bWFnZS5nZXQoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgY29s
b3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgMSwgb3AsIGJsZW5kTW9kZSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCA4NWFhYzg1NTJiNWFhMTg3
ZWIwYWE2ZmZjZGU1MjY3NGNkYTc5NTdlLi4wZDc1NTI0ZDFlZTYzNGY3NjA3OTFmMDhlNGNhMGVm
NDg4NzY4ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcApAQCAtMzgsMTcgKzM4LDEyIEBACiAjaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjZWxzZQogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9DR0ltYWdlUHJpdmF0ZS5oPgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
b3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VTb3VyY2VQcml2YXRlLmg+
CiAjaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKLSNpZiBfX2hhc19p
bmNsdWRlKDxJbWFnZUlPL0NHSW1hZ2VTb3VyY2VQcml2YXRlLmg+KQotI2ltcG9ydCA8SW1hZ2VJ
Ty9DR0ltYWdlU291cmNlUHJpdmF0ZS5oPgotI2Vsc2UKLWNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlU291cmNlU3Vic2FtcGxlRmFjdG9yID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU3Vic2FtcGxl
RmFjdG9yIik7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDRlN0cmlu
Z1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSA9IENGU1RS
KCJVbmNsYW1wZWREZWxheVRpbWUiKTsKQEAgLTgxLDYgKzc2LDEwIEBAIHZvaWQgc2hhcmVkQnVm
ZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VT
b3VyY2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiAgICAgOiBtX2RlY29kZXIoMCkKKyNpZiBQTEFURk9STShJT1MpCisgICAgLCBtX2Jhc2VT
dWJzYW1wbGluZygwKQorICAgICwgbV9pc1Byb2dyZXNzaXZlKGZhbHNlKQorI2VuZGlmCiB7CiAg
ICAgLy8gRklYTUU6IEFscGhhT3B0aW9uIGFuZCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBh
cmUgaWdub3JlZC4KIH0KQEAgLTEwNiwzNSArMTA1LDM5IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNs
ZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6ZV90LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wKICAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi1zdGF0aWMg
Q0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyhJbWFnZVNvdXJjZTo6U2hv
dWxkU2tpcE1ldGFkYXRhIHNraXBNZXRhRGF0YSwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsKQorI2lmICFQTEFURk9STShJT1MpCitzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGltYWdl
U291cmNlT3B0aW9ucyhJbWFnZVNvdXJjZTo6U2hvdWxkU2tpcE1ldGFkYXRhIHNraXBNZXRhRGF0
YSkKIHsKLSAgICBjb25zdCBDRkJvb2xlYW5SZWYgaW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgPSAo
c2tpcE1ldGFEYXRhID09IEltYWdlU291cmNlOjpTa2lwTWV0YWRhdGEpID8ga0NGQm9vbGVhblRy
dWUgOiBrQ0ZCb29sZWFuRmFsc2U7Ci0gICAgCi0gICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsKSB7
CisgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBvcHRpb25zOworCisgICAgaWYgKCFvcHRpb25z
KSB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG51bU9wdGlvbnMgPSAzOworICAgICAgICBjb25z
dCBDRkJvb2xlYW5SZWYgaW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgPSAoc2tpcE1ldGFEYXRhID09
IEltYWdlU291cmNlOjpTa2lwTWV0YWRhdGEpID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFu
RmFsc2U7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleXNbbnVtT3B0aW9uc10gPSB7IGtDR0ltYWdl
U291cmNlU2hvdWxkQ2FjaGUsIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIsIGtDR0lt
YWdlU291cmNlU2tpcE1ldGFkYXRhIH07CiAgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tudW1P
cHRpb25zXSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlLCBpbWFnZVNvdXJjZVNr
aXBNZXRhZGF0YSB9OwotICAgICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKG51bGxwdHIs
IGtleXMsIHZhbHVlcywgbnVtT3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIG9wdGlvbnMgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoTlVMTCwga2V5cywgdmFsdWVzLCBudW1PcHRpb25zLCAKKyAgICAg
ICAgICAgICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpOwogICAgIH0KLQotICAgIHNob3J0IGNvbnN0cmFpbmVkU3Vic2FtcGxp
bmdMZXZlbCA9IHN0ZDo6bWluPHNob3J0PigzLCBzdGQ6Om1heDxzaG9ydD4oMCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwotICAgIGludCBzdWJzYW1wbGVJbnQgPSAxIDw8IGNvbnN0cmFpbmVkU3Vic2Ft
cGxpbmdMZXZlbDsgLy8gWzAuLjNdID0+IFsxLCAyLCA0LCA4XQotCi0gICAgUmV0YWluUHRyPENG
TnVtYmVyUmVmPiBzdWJzYW1wbGVOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxw
dHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJnN1YnNhbXBsZUludCkpOwotICAgIGNvbnN0IENGSW5k
ZXggbnVtT3B0aW9ucyA9IDQ7Ci0gICAgY29uc3Qgdm9pZCoga2V5c1tudW1PcHRpb25zXSA9IHsg
a0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNoZSwga0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0Iz
Miwga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEsIGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFj
dG9yIH07Ci0gICAgY29uc3Qgdm9pZCogdmFsdWVzW251bU9wdGlvbnNdID0geyBrQ0ZCb29sZWFu
VHJ1ZSwga0NGQm9vbGVhblRydWUsIGltYWdlU291cmNlU2tpcE1ldGFkYXRhLCBzdWJzYW1wbGVO
dW1iZXIuZ2V0KCkgfTsKLSAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKG51bGxwdHIsIGtl
eXMsIHZhbHVlcywgbnVtT3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9
Ci0KLXN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgaW1hZ2VTb3VyY2VPcHRpb25zKEltYWdlU291cmNl
OjpTaG91bGRTa2lwTWV0YWRhdGEgc2tpcE1ldGFkYXRhID0gSW1hZ2VTb3VyY2U6OlNraXBNZXRh
ZGF0YSwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gMCkKKyNlbHNlCitDRkRp
Y3Rpb25hcnlSZWYgSW1hZ2VTb3VyY2U6OmltYWdlU291cmNlT3B0aW9ucyhTaG91bGRTa2lwTWV0
YWRhdGEgc2tpcE1ldGFEYXRhLCBpbnQgcmVxdWVzdGVkU3Vic2FtcGxpbmcpIGNvbnN0CiB7Ci0g
ICAgaWYgKHN1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBjcmVhdGVJbWFnZVNvdXJj
ZU9wdGlvbnMoc2tpcE1ldGFkYXRhLCBzdWJzYW1wbGluZ0xldmVsKTsKLQotICAgIHN0YXRpYyBD
RkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyhza2lwTWV0
YWRhdGEsIDApOwotICAgIHJldHVybiBvcHRpb25zOworICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlS
ZWYgb3B0aW9uc1s0XSA9IHtudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyfTsKKyAg
ICBpbnQgc3Vic2FtcGxpbmcgPSBzdGQ6Om1pbigzLCBtX2lzUHJvZ3Jlc3NpdmUgfHwgcmVxdWVz
dGVkU3Vic2FtcGxpbmcgPCAwID8gMCA6IChyZXF1ZXN0ZWRTdWJzYW1wbGluZyArIG1fYmFzZVN1
YnNhbXBsaW5nKSk7CisKKyAgICBpZiAoIW9wdGlvbnNbc3Vic2FtcGxpbmddKSB7CisgICAgICAg
IGludCBzdWJzYW1wbGVJbnQgPSAxIDw8IHN1YnNhbXBsaW5nOyAvLyBbMC4uM10gPT4gWzEsIDIs
IDQsIDhdCisgICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gc3Vic2FtcGxlTnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRyLCAga0NGTnVtYmVySW50VHlwZSwgICZzdWJz
YW1wbGVJbnQpKTsKKyAgICAgICAgY29uc3QgQ0ZJbmRleCBudW1PcHRpb25zID0gNDsKKyAgICAg
ICAgY29uc3QgQ0ZCb29sZWFuUmVmIGltYWdlU291cmNlU2tpcE1ldGFEYXRhID0gKHNraXBNZXRh
RGF0YSA9PSBJbWFnZVNvdXJjZTo6U2tpcE1ldGFkYXRhKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NG
Qm9vbGVhbkZhbHNlOworICAgICAgICBjb25zdCB2b2lkKiBrZXlzW251bU9wdGlvbnNdID0geyBr
Q0dJbWFnZVNvdXJjZVNob3VsZENhY2hlLCBrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMy
LCBrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3Rvciwga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRh
dGEgfTsKKyAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzW251bU9wdGlvbnNdID0geyBrQ0ZCb29s
ZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUsIHN1YnNhbXBsZU51bWJlci5nZXQoKSwgaW1hZ2VTb3Vy
Y2VTa2lwTWV0YURhdGEgfTsKKyAgICAgICAgb3B0aW9uc1tzdWJzYW1wbGluZ10gPSBDRkRpY3Rp
b25hcnlDcmVhdGUobnVsbHB0ciwga2V5cywgdmFsdWVzLCBudW1PcHRpb25zLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
KyAgICB9CisgICAgcmV0dXJuIG9wdGlvbnNbc3Vic2FtcGxpbmddOwogfQorI2VuZGlmCiAKIGJv
b2wgSW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKCkgY29uc3QKIHsKQEAgLTE3OSwxNSArMTgyLDYg
QEAgU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShpbWFnZVNv
dXJjZVR5cGUpOwogfQogCi1TdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0Ci17Ci0gICAgLy8gVGhlcmUgYXJlIGZv
dXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAw
LjEyNXguCi0gICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBz
dGQ6Om1pbjxmbG9hdD4oMSwgc2NhbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0gY2VpbGYobG9nMmYo
MSAvIGNsYW1wZWRTY2FsZSkpOwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAz
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBib29sIEltYWdlU291cmNlOjppc1NpemVBdmFp
bGFibGUoKQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CkBAIC0xOTUsNyArMTg5LDcgQEAg
Ym9vbCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkKIAogICAgIC8vIFJhZ25hcm9zIHll
bGxzOiBUT08gU09PTiEgWW91IGhhdmUgYXdha2VuZWQgbWUgVE9PIFNPT04sIEV4ZWN1dHVzIQog
ICAgIGlmIChpbWFnZVNvdXJjZVN0YXR1cyA+PSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUpIHsK
LSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIDAsIGlt
YWdlU291cmNlT3B0aW9ucygpKSk7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGltYWdlMFByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0
SW5kZXgobV9kZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoU2tpcE1ldGFkYXRhKSkpOwog
ICAgICAgICBpZiAoaW1hZ2UwUHJvcGVydGllcykgewogICAgICAgICAgICAgQ0ZOdW1iZXJSZWYg
d2lkdGhOdW1iZXIgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2UwUHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsV2lkdGgpOwogICAgICAgICAgICAg
Q0ZOdW1iZXJSZWYgaGVpZ2h0TnVtYmVyID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbEhlaWdodCk7
CkBAIC0yMTgsNjcgKzIxMiwxMDEgQEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b25Gcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0aWUKICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZShleGlmVmFsdWUpOwogfQogCi1ib29s
IEltYWdlU291cmNlOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25z
dAorSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29uc3QKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNl
Q29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihD
R0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgsIGltYWdl
U291cmNlT3B0aW9ucyhTa2lwTWV0YWRhdGEpKSk7CisKICAgICBpZiAoIXByb3BlcnRpZXMpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAotICAgIENG
RGljdGlvbmFyeVJlZiBqZmlmUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0
eUpGSUZEaWN0aW9uYXJ5KSk7Ci0gICAgaWYgKGpmaWZQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIENG
Qm9vbGVhblJlZiBpc1Byb2dDRkJvb2wgPSBzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKGpmaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5SkZJRklzUHJv
Z3Jlc3NpdmUpKTsKLSAgICAgICAgaWYgKGlzUHJvZ0NGQm9vbCkgewotICAgICAgICAgICAgYm9v
bCBpc1Byb2dyZXNzaXZlID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNQcm9nQ0ZCb29sKTsKKyAgICBp
bnQgdyA9IDAsIGggPSAwOworICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxX
aWR0aCk7CisgICAgaWYgKG51bSkKKyAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51
bWJlckludFR5cGUsICZ3KTsKKyAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsSGVpZ2h0KTsKKyAg
ICBpZiAobnVtKQorICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlw
ZSwgJmgpOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghbV9pc1Byb2dyZXNzaXZlKSB7
CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBqZmlmUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENG
RGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NH
SW1hZ2VQcm9wZXJ0eUpGSUZEaWN0aW9uYXJ5KSk7CisgICAgICAgIGlmIChqZmlmUHJvcGVydGll
cykgeworICAgICAgICAgICAgQ0ZCb29sZWFuUmVmIGlzUHJvZ0NGQm9vbCA9IHN0YXRpY19jYXN0
PENGQm9vbGVhblJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoamZpZlByb3BlcnRpZXMsIGtDR0lt
YWdlUHJvcGVydHlKRklGSXNQcm9ncmVzc2l2ZSkpOworICAgICAgICAgICAgaWYgKGlzUHJvZ0NG
Qm9vbCkKKyAgICAgICAgICAgICAgICBtX2lzUHJvZ3Jlc3NpdmUgPSBDRkJvb2xlYW5HZXRWYWx1
ZShpc1Byb2dDRkJvb2wpOwogICAgICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9w
cm9ibGVtLzUxODQ2NTU+IC0gSGFuZyByZW5kZXJpbmcgdmVyeSBsYXJnZSBwcm9ncmVzc2l2ZSBK
UEVHLiBEZWNvZGluZyBwcm9ncmVzc2l2ZQogICAgICAgICAgICAgLy8gaW1hZ2VzIGhhbmdzIGZv
ciBhIHZlcnkgbG9uZyB0aW1lIHJpZ2h0IG5vdy4gVW50aWwgdGhpcyBpcyBmaXhlZCwgZG9uJ3Qg
c3ViLXNhbXBsZSBwcm9ncmVzc2l2ZSBpbWFnZXMuIFRoaXMKICAgICAgICAgICAgIC8vIHdpbGwg
Y2F1c2UgdGhlbSB0byBmYWlsIG91ciBsYXJnZSBpbWFnZSBjaGVjayBhbmQgdGhleSB3b24ndCBi
ZSBkZWNvZGVkLgogICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIHVuZGVybHlpbmcg
aXNzdWUgaXMgZml4ZWQgKDxyZGFyOi8vcHJvYmxlbS81MTkxNDE4PikKLSAgICAgICAgICAgIHJl
dHVybiAhaXNQcm9ncmVzc2l2ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0cnVl
OworICAgIGlmICgobV9iYXNlU3Vic2FtcGxpbmcgPT0gMCkgJiYgIW1faXNQcm9ncmVzc2l2ZSkg
eworICAgICAgICBJbnRTaXplIHN1YnNhbXBsZWRTaXplKHcsIGgpOworICAgICAgICBjb25zdCBp
bnQgY01heGltdW1JbWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsK
KyAgICAgICAgd2hpbGUgKChtX2Jhc2VTdWJzYW1wbGluZyA8IDMpICYmIHN1YnNhbXBsZWRTaXpl
LndpZHRoKCkgKiBzdWJzYW1wbGVkU2l6ZS5oZWlnaHQoKSA+IGNNYXhpbXVtSW1hZ2VTaXplQmVm
b3JlU3Vic2FtcGxpbmcpIHsKKyAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIHNpemUsIGJ1dCB0
aGUgYWN0dWFsIGltYWdlIGlzIHZlcnkgbGFyZ2UgYW5kIHNob3VsZCBiZSBzdWItc2FtcGxlZC4K
KyAgICAgICAgICAgIC8vIEluY3JlYXNlIHRoZSBiYXNlIHN1YnNhbXBsaW5nIGFuZCBhc2sgZm9y
IHRoZSBzaXplIGFnYWluLiBJZiB0aGUgaW1hZ2UgY2FuIGJlIHN1YnNhbXBsZWQsIHRoZSBzaXpl
IHdpbGwgYmUKKyAgICAgICAgICAgIC8vIGdyZWF0bHkgcmVkdWNlZC4gNHggc3ViLXNhbXBsaW5n
IHdpbGwgbWFrZSB1cyBzdXBwb3J0IHVwIHRvIDMyME1QICg1TVAgKiA0XjMpIGltYWdlcywgd2hp
Y2ggc2hvdWxkIGJlIHBsZW50eS4KKyAgICAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gY2FsbGJhY2sg
ZnJvbSBJbWFnZUlPIHdoZW4gdGhlIHNpemUgaXMgYXZhaWxhYmxlLCBzbyB3ZSBkbyB0aGUgY2hl
Y2sgd2hlbiB3ZSBoYXBwZW4KKyAgICAgICAgICAgIC8vIHRvIGNoZWNrIHRoZSBzaXplIGFuZCBp
dHMgbm9uIC0gemVyby4KKyAgICAgICAgICAgIC8vIE5vdGU6IFNvbWUgY2xpZW50cyBvZiB0aGlz
IGNsYXNzIGRvbid0IGNhbGwgaXNTaXplQXZhaWxhYmxlKCkgc28gd2UgY2FuJ3QgcmVseSBvbiB0
aGF0LgorICAgICAgICAgICAgKyttX2Jhc2VTdWJzYW1wbGluZzsKKyAgICAgICAgICAgIHN1YnNh
bXBsZWRTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgZGVzY3JpcHRpb24ucmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgIH0KKyAgICAgICAgdyA9IHN1YnNhbXBsZWRTaXpl
LndpZHRoKCk7CisgICAgICAgIGggPSBzdWJzYW1wbGVkU2l6ZS5oZWlnaHQoKTsKKyAgICB9Cisj
ZW5kaWYKKworICAgIGlmICgoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9
PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgJiYgb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhw
cm9wZXJ0aWVzLmdldCgpKS51c2VzV2lkdGhBc0hlaWdodCgpKQorICAgICAgICByZXR1cm4gSW50
U2l6ZShoLCB3KTsKKworICAgIHJldHVybiBJbnRTaXplKHcsIGgpOworfQorCitJbWFnZU9yaWVu
dGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dAoreworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENG
KENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1h
Z2VTb3VyY2VPcHRpb25zKFNraXBNZXRhZGF0YSkpKTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisg
ICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKworICAgIHJldHVybiBvcmll
bnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogfQogCi1JbnRTaXplIElt
YWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24pIGNvbnN0CisjaWYgUExBVEZPUk0oSU9TKQorSW50U2l6ZSBJbWFnZVNvdXJjZTo6b3JpZ2lu
YWxTaXplKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0T3JpZW50YXRp
b24pIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9
IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIGlu
ZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoU2tpcE1ldGFkYXRhLCBzdWJzYW1wbGluZ0xldmVsKSkp
OworICAgIGZyYW1lU2l6ZUF0SW5kZXgoMCwgc2hvdWxkUmVzcGVjdE9yaWVudGF0aW9uKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdl
U291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRp
b25zKFNraXBNZXRhZGF0YSwgLTEpKSk7CiAKICAgICBpZiAoIXByb3BlcnRpZXMpCiAgICAgICAg
IHJldHVybiBJbnRTaXplKCk7CiAKICAgICBpbnQgd2lkdGggPSAwOwogICAgIGludCBoZWlnaHQg
PSAwOwotICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxXaWR0aCk7Ci0gICAg
aWYgKG51bSkKLSAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUs
ICZ3aWR0aCk7Ci0gICAgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBy
b3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbEhlaWdodCk7Ci0gICAgaWYgKG51
bSkKLSAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZoZWln
aHQpOwotCi0gICAgaWYgKChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSAmJiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHBy
b3BlcnRpZXMuZ2V0KCkpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpCisgICAgQ0ZOdW1iZXJSZWYgbnVt
YmVyID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCks
IGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKTsKKyAgICBpZiAobnVtYmVyKQorICAgICAgICBD
Rk51bWJlckdldFZhbHVlKG51bWJlciwga0NGTnVtYmVySW50VHlwZSwgJndpZHRoKTsKKyAgICBu
dW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsSGVpZ2h0KSk7CisgICAgaWYgKG51
bWJlcikKKyAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW1iZXIsIGtDRk51bWJlckludFR5cGUs
ICZoZWlnaHQpOworCisgICAgaWYgKChzaG91bGRSZXNwZWN0T3JpZW50YXRpb24gPT0gUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pICYmIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGll
cy5nZXQoKSkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoaGVp
Z2h0LCB3aWR0aCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIH0KLQot
SW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVz
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2Rlciwg
aW5kZXgsIGltYWdlU291cmNlT3B0aW9ucygpKSk7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzKQotICAg
ICAgICByZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247Ci0KLSAgICByZXR1cm4gb3JpZW50
YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzLmdldCgpKTsKLX0KKyNlbmRpZgogCiBJbnRT
aXplIEltYWdlU291cmNlOjpzaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlw
dGlvbikgY29uc3QKIHsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBkZXNjcmlw
dGlvbik7CisgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgZGVzY3JpcHRpb24pOwogfQog
CiBib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAog
ewotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCAwLCBpbWFnZVNvdXJj
ZU9wdGlvbnMoKSkpOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMg
PSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCAw
LCBpbWFnZVNvdXJjZU9wdGlvbnMoU2tpcE1ldGFkYXRhKSkpOwogICAgIGlmICghcHJvcGVydGll
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMTQsNyArMzQyLDcgQEAgaW50IEltYWdl
U291cmNlOjpyZXBldGl0aW9uQ291bnQoKQogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKICAgICAg
ICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25jZTsKIAotICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllcyht
X2RlY29kZXIsIGltYWdlU291cmNlT3B0aW9ucygpKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVz
KG1fZGVjb2RlciwgaW1hZ2VTb3VyY2VPcHRpb25zKFNraXBNZXRhZGF0YSkpKTsKICAgICBpZiAo
IXByb3BlcnRpZXMpCiAgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7CiAKQEAgLTM1
MywxNCArMzgxLDIyIEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDog
MDsKIH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorQ0dJbWFnZVJlZiBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQqIHNjYWxl
KQogeworICAgIFVOVVNFRF9QQVJBTShzY2FsZSk7CisKICAgICBpZiAoIWluaXRpYWxpemVkKCkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
YWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgs
IGltYWdlU291cmNlT3B0aW9ucyhTa2lwTWV0YWRhdGEsIHN1YnNhbXBsaW5nTGV2ZWwpKSk7Cisj
aWYgIVBMQVRGT1JNKElPUykKKyAgICBVTlVTRURfUEFSQU0oc2NhbGUpOworICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJ
bmRleChtX2RlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoU2tpcE1ldGFkYXRhKSkp
OworI2Vsc2UKKyAgICAvLyBTdWJzYW1wbGluZyBjYW4gYmUgMSwgMiBvciAzLCB3aGljaCBtZWFu
cyBxdWFydGVyLSwgc2l4dGVlbnRoLSBhbmQgc2l4dHktZm91cnRoLXNpemUsIHJlc3BlY3RpdmVs
eS4KKyAgICAvLyBBIHplcm8gb3IgbmVnYXRpdmUgdmFsdWUgbWVhbnMgbm8gc3Vic2FtcGxpbmcu
CisgICAgaW50IHN1YnNhbXBsaW5nID0gc2NhbGUgPyBzdGF0aWNfY2FzdDxpbnQ+KGxvZzJmKDEu
MGYgLyBzdGQ6Om1heCgwLjFmLCBzdGQ6Om1pbigxLjBmLCAqc2NhbGUpKSkpIDogLTE7CisgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRl
SW1hZ2VBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhTa2lwTWV0
YWRhdGEsIHN1YnNhbXBsaW5nKSkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS83MzcxMTk4PiAtIENvcmVHcmFwaGljcyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGNh
Y2hpbmcgYmVoYXZpb3VyIGluIGlPUyA0LjAgdG8ga0NHSW1hZ2VDYWNoaW5nVHJhbnNpZW50CiAg
ICAgLy8gd2hpY2ggY2F1c2VkIGEgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBmb3IgdXMgc2luY2Ug
dGhlIGltYWdlcyBoYWQgdG8gYmUgcmVzYW1wbGVkL3JlY3JlYXRlZCBldmVyeSB0aW1lIHdlIGNh
bGxlZAogICAgIC8vIENHQ29udGV4dERyYXdJbWFnZS4gV2Ugbm93IHRlbGwgQ0cgdG8gY2FjaGUg
dGhlIGRyYXduIGltYWdlcy4gU2VlIGFsc28gPHJkYXI6Ly9wcm9ibGVtLzE0MzY2NzU1PiAtCkBA
IC0zNzMsOCArNDA5LDE1IEBAIENHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAjaWYgQ09NUElMRVIo
Q0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKKyAgICBpZiAoc2Nh
bGUpIHsKKyAgICAgICAgaWYgKHN1YnNhbXBsaW5nID4gMCkKKyAgICAgICAgICAgICpzY2FsZSA9
IHN0YXRpY19jYXN0PGZsb2F0PihDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpKSAvIHNpemUo
RG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikud2lkdGgoKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihDR0ltYWdlR2V0V2lkdGgoaW1hZ2Uu
Z2V0KCkpKSA9PSBzaXplKERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pLndpZHRoKCkpOwor
ICAgICAgICAgICAgKnNjYWxlID0gMTsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQotCiAgICAgQ0ZTdHJpbmdSZWYgaW1hZ2VVVEkgPSBDR0ltYWdlU291cmNlR2V0
VHlwZShtX2RlY29kZXIpOwogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBD
RlNUUigicHVibGljLnhiaXRtYXAtaW1hZ2UiKTsKICAgICBpZiAoIWltYWdlVVRJIHx8ICFDRkVx
dWFsKGltYWdlVVRJLCB4Ym1VVEkpKQpAQCAtNDQyLDcgKzQ4NSw3IEBAIGZsb2F0IEltYWdlU291
cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8gYSBkdXJhdGlv
biBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMzYwODI+CiAgICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgaWYg
KGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAgICByZXR1cm4gMC4xZjsKKyAgICAgICAgcmV0dXJu
IDAuMTAwZjsKICAgICByZXR1cm4gZHVyYXRpb247CiB9CiAKQEAgLTQ2Nyw5ICs1MTAsOSBAQCBi
b29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QK
K3Vuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0CiB7Ci0gICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBz
dWJzYW1wbGluZ0xldmVsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdl
T3JpZW50YXRpb24pKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgo
aW5kZXgsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikpOwogICAgIHJldHVybiBmcmFtZVNpemUud2lkdGgoKSAqIGZyYW1lU2l6ZS5oZWlnaHQoKSAq
IDQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFn
ZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3MmQ5YmEyMDc5YTk4NzNjMzhiLi45
ZTA0NmQ2ZTk1NTE3NzQ5MGM3YTIxMTFmODk5MmZiY2IwOTFkYjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC01Nyw5ICs1Nyw5
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBVU0UoQVBQS0lUKQotICAgIG1fbnNJbWFnZSA9IG51bGxwdHI7CisgICAg
bV9uc0ltYWdlID0gMDsKICNlbmRpZgotICAgIG1fdGlmZlJlcCA9IG51bGxwdHI7CisgICAgbV90
aWZmUmVwID0gMDsKIH0KIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3BwCmluZGV4IGJjMGE5NjNiYTZiNjE0Yzgw
ZjAzZmNmMDVkOTJlZjYzOTc3ZTkzY2EuLjYwNjZjNDVjMDFmNmQ5ZTMzYjg1MGNhZGM0MTM5YTFi
ZDU3ZGY0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL0ltYWdlV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ltYWdlV2luQ0UuY3BwCkBAIC0xNDgsMTEgKzE0OCw2IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdEluCiAgICAgYm1wLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdEluLCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIG1fc291cmNl
LnNpemUoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1w
bGluZ0xldmVsKCkgY29uc3QKLXsKLSAgICBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsID0gMDsK
LX0KLQogdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKIHsKICAgICBpZiAo
bV9jaGVja2VkRm9yU29saWRDb2xvcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>