<?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>5965</bug_id>
          
          <creation_ts>2005-12-06 03:45:47 -0800</creation_ts>
          <short_desc>feImage and image have Image loading race condition</short_desc>
          <delta_ts>2006-01-12 00:34:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>gavin.sharp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25613</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-06 03:45:47 -0800</bug_when>
    <thetext>feImage and image have Image loading race condition

This should probably be solved by using a refactored version of HTMLImageLoader from the khtml side.  
&lt;feImage&gt; has an aditional issue in that it has no way currently to notify it&apos;s parent &lt;filter&gt; element that 
it&apos;s changed (once the image load is done) so as to allow the filter to notify all clients of that resource to 
tell them to repaint themselves.

Right now, if the images happen to load quickly enough, things display propertly... otherwise they don&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27218</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-30 01:21:15 -0800</bug_when>
    <thetext>Bumping this priority, since now everyone will be running into these, now that svg tests are turned on by 
default.  I may have to disable svg tests by default until we fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28019</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-08 17:00:18 -0800</bug_when>
    <thetext>These tests have been disabled until this bug is fixed:

svg/W3C-SVG-1.1/filters-light-01-f.svg-disabled
svg/W3C-SVG-1.1/filters-specular-01-f.svg-disabled
svg/W3C-SVG-1.1/render-groups-03-t.svg-disabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28274</commentid>
    <comment_count>3</comment_count>
      <attachid>5612</attachid>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-01-11 22:52:37 -0800</bug_when>
    <thetext>Created attachment 5612
refactor &lt;image&gt; to use a RenderImage subclass for display and a HTMLImageLoader subclass for loading</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28277</commentid>
    <comment_count>4</comment_count>
      <attachid>5612</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-12 00:29:13 -0800</bug_when>
    <thetext>Comment on attachment 5612
refactor &lt;image&gt; to use a RenderImage subclass for display and a HTMLImageLoader subclass for loading

I had to make a couple tweaks when landing (mostly removing uncessary header
includes, a slight build fix, and a trivial copy/paste change from RenderPath
to fix filter and mask support with image rendering.)

Looks great though.  r=me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5612</attachid>
            <date>2006-01-11 22:52:37 -0800</date>
            <delta_ts>2006-01-12 00:29:13 -0800</delta_ts>
            <desc>refactor &lt;image&gt; to use a RenderImage subclass for display and a HTMLImageLoader subclass for loading</desc>
            <filename>image-refactor-6.patch</filename>
            <type>text/plain</type>
            <size>26127</size>
            <attacher name="Alexander Kellett">a</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCShyZXZpc2lvbiAxMjAwOSkKKysrIGtodG1sL2h0bWwv
aHRtbF9pbWFnZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMyBAQCBIVE1M
SW1hZ2VMb2FkZXI6On5IVE1MSW1hZ2VMb2FkZXIoKQogICAgICAgICBtX2VsZW1lbnQtPmdldERv
Y3VtZW50KCktPnJlbW92ZUltYWdlKHRoaXMpOwogfQogCit2b2lkIEhUTUxJbWFnZUxvYWRlcjo6
c2V0TG9hZGluZ0ltYWdlKENhY2hlZEltYWdlICpsb2FkaW5nSW1hZ2UpCit7CisgICAgbV9maXJl
ZExvYWQgPSBmYWxzZTsKKyAgICBtX2ltYWdlQ29tcGxldGUgPSBmYWxzZTsKKyAgICBtX2ltYWdl
ID0gbG9hZGluZ0ltYWdlOworfQorCiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQogewogICAgIC8vIElmIHdlJ3JlIG5vdCBtYWtpbmcgcmVuZGVyZXJzIGZvciB0aGUg
cGFnZSwgdGhlbiBkb24ndCBsb2FkIGltYWdlcy4gIFdlIGRvbid0IHdhbnQgdG8gc2xvdwpAQCAt
ODcsOSArOTQsNyBAQCB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoCiAg
ICAgICAgIGlmICghZG9jLT5vd25lckVsZW1lbnQoKSAmJiBuZXdJbWFnZSkKICAgICAgICAgICAg
IHByaW50ZigiSW1hZ2UgcmVxdWVzdGVkIGF0ICVkXG4iLCBkb2MtPmVsYXBzZWRUaW1lKCkpOwog
I2VuZGlmCi0gICAgICAgIG1fZmlyZWRMb2FkID0gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VDb21w
bGV0ZSA9IGZhbHNlOwotICAgICAgICBtX2ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAgIHNldExv
YWRpbmdJbWFnZShuZXdJbWFnZSk7CiAgICAgICAgIGlmIChuZXdJbWFnZSkKICAgICAgICAgICAg
IG5ld0ltYWdlLT5yZWYodGhpcyk7CiAgICAgICAgIGlmIChvbGRJbWFnZSkKSW5kZXg6IGtodG1s
L2h0bWwvaHRtbF9pbWFnZWltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9odG1sL2h0bWxfaW1h
Z2VpbXBsLmgJKHJldmlzaW9uIDEyMDA5KQorKysga2h0bWwvaHRtbC9odG1sX2ltYWdlaW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBIVE1MSW1hZ2VM
b2FkZXIoRWxlbWVudEltcGwqIGVsdCk7CiAgICAgdmlydHVhbCB+SFRNTEltYWdlTG9hZGVyKCk7
CiAKLSAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7CiAKICAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CiAKQEAgLTYy
LDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICAvLyBDYWNoZWRPYmplY3RDbGllbnQgQVBJCiAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKGtodG1sOjpDYWNoZWRPYmplY3QgKmZpbmlzaGVk
T2JqKTsKIAorcHJvdGVjdGVkOgorCisgICAgdm9pZCBzZXRMb2FkaW5nSW1hZ2UoQ2FjaGVkSW1h
Z2UgKmxvYWRpbmdJbWFnZSk7CisKIHByaXZhdGU6CiAgICAgRWxlbWVudEltcGwqIG1fZWxlbWVu
dDsKICAgICBraHRtbDo6Q2FjaGVkSW1hZ2UqIG1faW1hZ2U7CkluZGV4OiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjAwOSkKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTYxNCw2ICsxNjE0LDEwIEBACiAJCUUxRUU3
NzM3MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERlY29kZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU3NzM1MDhGMTA4NkMwMDE2Njg3
MCAvKiBXZWJDb3JlVGV4dERlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMUVFNzczODA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZVRl
eHREZWNvZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFFRTc3MzYwOEYxMDg2QzAwMTY2ODcwIC8qIFdlYkNvcmVUZXh0RGVjb2Rlci5tbSAqLzsg
fTsKIAkJRUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRp
ZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4
QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICovOyB9Owor
CQlGQUUwNDE4QjA5NzU5Njk0MDAwNTQwQkUgLyogUmVuZGVyU1ZHSW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTA0MTg5MDk3NTk2OTQwMDA1
NDBCRSAvKiBSZW5kZXJTVkdJbWFnZS5oICovOyB9OworCQlGQUUwNDE4QzA5NzU5Njk0MDAwNTQw
QkUgLyogUmVuZGVyU1ZHSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkFFMDQxOEEwOTc1OTY5NDAwMDU0MEJFIC8qIFJlbmRlclNWR0ltYWdl
LmNwcCAqLzsgfTsKKwkJRkFFMDQxOEYwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTA0
MThEMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5jcHAgKi87IH07CisJCUZBRTA0
MTkwMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8q
IFNWR0ltYWdlTG9hZGVyLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQnVpbGRSdWxlIHNlY3Rpb24gKi8KQEAgLTI4MjEsNiArMjgyNSwxMCBA
QAogCQlGNjkwQ0ZFQTAzMUM0N0Y0MDFDQTJBQzQgLyogcmVuZGVyX2xheWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlbmRlcl9sYXllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJRjY5MENGRUIwMzFDNDdGNDAxQ0EyQUM0IC8qIHJlbmRlcl9sYXllci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSByZW5kZXJfbGF5
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlGQUUwNDE4OTA5NzU5Njk0MDAwNTQwQkUg
LyogUmVuZGVyU1ZHSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlclNWR0ltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTA0MThBMDk3
NTk2OTQwMDA1NDBCRSAvKiBSZW5kZXJTVkdJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGQUUwNDE4RDA5NzU5NkM5MDAwNTQwQkUgLyogU1ZHSW1hZ2VMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ltYWdlTG9hZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJF
IC8qIFNWR0ltYWdlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdJbWFnZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC0zMTYxLDYgKzMxNjksOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
QThDMEY2RUIwODk3MDFGMTAwQkE1MTE0IC8qIEtDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAgKi8s
CiAJCQkJQThDMEY2RUMwODk3MDFGMTAwQkE1MTE0IC8qIEtDYW52YXNSZW5kZXJpbmdTdHlsZS5o
ICovLAorCQkJCUZBRTA0MThEMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5jcHAg
Ki8sCisJCQkJRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9hZGVyLmggKi8s
CiAJCQkJQThDMEY2RUYwODk3MDFGMTAwQkE1MTE0IC8qIEtTVkdUaW1lU2NoZWR1bGVyLmNwcCAq
LywKIAkJCQlBOEMwRjZGMDA4OTcwMUYxMDBCQTUxMTQgLyogS1NWR1RpbWVTY2hlZHVsZXIuaCAq
LywKIAkJCQlBOEMzMkQ4OTA5M0Q4QkZBMDAwQjlDQUMgLyogeGxpbmthdHRycy5pbiAqLywKQEAg
LTM0NzEsNiArMzQ4MSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk2NTc0M0I1MDA5NzA3NkY4
MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5jcHAgKi8sCiAJCQkJNjU3NDNCNTEwOTcwNzZGODAw
MUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuaCAqLywKKwkJCQlGQUUwNDE4OTA5NzU5Njk0MDAwNTQw
QkUgLyogUmVuZGVyU1ZHSW1hZ2UuaCAqLywKKwkJCQlGQUUwNDE4QTA5NzU5Njk0MDAwNTQwQkUg
LyogUmVuZGVyU1ZHSW1hZ2UuY3BwICovLAogCQkJCUE4QzBGQjUzMDg5NzAxRjcwMEJBNTExNCAv
KiBkZXZpY2UgKi8sCiAJCQkJQThDMEZCN0EwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNDb250
YWluZXIuY3BwICovLAogCQkJCUE4QzBGQjdCMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzQ29u
dGFpbmVyLmggKi8sCkBAIC00ODc1LDYgKzQ4ODcsOCBAQAogCQkJCTY1QkYwMjQyMDk3NDgxOTAw
MEM0MzE5NiAvKiBLV1FLUGFydHNCcm93c2VyRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NUJGMDI0NDA5NzQ4MTkwMDBDNDMxOTYgLyogTWFjRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1QkYwMjQ2MDk3NDgxOTAwMEM0MzE5NiAvKiBXZWJDb3JlQnJpZGdlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGQUUwNDE4QjA5NzU5Njk0MDAwNTQwQkUgLyogUmVuZGVyU1ZHSW1hZ2UuaCBp
biBIZWFkZXJzICovLAorCQkJCUZBRTA0MTkwMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZy
YW1lVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkBAIC02NzQ3LDYgKzY3NjEsOCBAQAogCQkJCTY1QkYwMjQzMDk3
NDgxOTAwMEM0MzE5NiAvKiBLV1FLUGFydHNCcm93c2VySW50ZXJmYWNlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIE1hY0ZyYW1lLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVCRjAyNDcwOTc0ODE5MDAwQzQzMTk2IC8qIFdlYkNvcmVCcmlkZ2UubW0g
aW4gU291cmNlcyAqLywKKwkJCQlGQUUwNDE4QzA5NzU5Njk0MDAwNTQwQkUgLyogUmVuZGVyU1ZH
SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFMDQxOEYwOTc1OTZDOTAwMDU0MEJFIC8q
IFNWR0ltYWdlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1Q0JGRUY5MDk3NEY2MDcw
MDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBrY2FudmFzL1JlbmRlclNW
R0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2
aXNpb24gMCkKKysrIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDcwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIgS2VsbGV0
dCA8bHlwYW5vdkBrZGUub3JnPgorCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBwcm9qZWN0CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxrZG9tL2NvcmUvQXR0
ckltcGwuaD4KKworI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCisKKyNpbmNsdWRlICJTVkdB
bmltYXRlZExlbmd0aEltcGwuaCIKKyNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIK
KworI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhcy5oPgorI2luY2x1ZGUgPGtjYW52YXMvZGV2aWNl
L0tSZW5kZXJpbmdEZXZpY2UuaD4KKworI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudEltcGwuaCIK
KwordXNpbmcgbmFtZXNwYWNlIEtTVkc7CisKK1JlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFn
ZShTVkdJbWFnZUVsZW1lbnRJbXBsICppbXBsKQorOiBSZW5kZXJJbWFnZShpbXBsKQoreworfQor
Cit2aXJ0dWFsIH5SZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoKQoreworfQorCit2b2lk
IFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHBhcmVudFgs
IGludCBwYXJlbnRZKQoreworICAgIGlmIChwYWludEluZm8ucC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludEluZm8ucC0+c2F2ZSgpOworCisgICAgS1Jl
bmRlcmluZ0RldmljZUNvbnRleHQgKmNvbnRleHQgPSBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNl
KCktPmN1cnJlbnRDb250ZXh0KCk7CisgICAgY29udGV4dC0+Y29uY2F0Q1RNKFFNYXRyaXgoKS50
cmFuc2xhdGUocGFyZW50WCwgcGFyZW50WSkpOworICAgIHRyYW5zbGF0ZUZvckF0dHJpYnV0ZXMo
KTsKKyAgICAKKyAgICBraHRtbDo6UmVuZGVySW1hZ2U6OnBhaW50KHBhaW50SW5mbywgMCwgMCk7
CisKKyAgICBwYWludEluZm8ucC0+cmVzdG9yZSgpOworfQorCit2b2lkIFJlbmRlclNWR0ltYWdl
Ojp0cmFuc2xhdGVGb3JBdHRyaWJ1dGVzKCkKK3sKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dCAqY29udGV4dCA9IFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+Y3VycmVudENvbnRleHQo
KTsKKyAgICBTVkdJbWFnZUVsZW1lbnRJbXBsICppbWFnZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdl
RWxlbWVudEltcGwgKj4obm9kZSgpKTsKKyAgICBmbG9hdCB4T2Zmc2V0ID0gaW1hZ2UtPngoKS0+
YmFzZVZhbCgpID8gaW1hZ2UtPngoKS0+YmFzZVZhbCgpLT52YWx1ZSgpIDogMDsKKyAgICBmbG9h
dCB5T2Zmc2V0ID0gaW1hZ2UtPnkoKS0+YmFzZVZhbCgpID8gaW1hZ2UtPnkoKS0+YmFzZVZhbCgp
LT52YWx1ZSgpIDogMDsKKyAgICBjb250ZXh0LT5jb25jYXRDVE0oUU1hdHJpeCgpLnRyYW5zbGF0
ZSh4T2Zmc2V0LCB5T2Zmc2V0KSk7Cit9CkluZGV4OiBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5oCShyZXZpc2lvbiAwKQorKysg
a2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUu
b3JnPgorCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug
LSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisqLworCisjaWZu
ZGVmIEtDYW52YXNfUmVuZGVyU1ZHSW1hZ2VfSAorI2RlZmluZSBLQ2FudmFzX1JlbmRlclNWR0lt
YWdlX0gKKworI2luY2x1ZGUgImtodG1sL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaCIKKworbmFt
ZXNwYWNlIEtTVkcKK3sKKyAgICBjbGFzcyBTVkdJbWFnZUVsZW1lbnRJbXBsOworICAgIGNsYXNz
IFJlbmRlclNWR0ltYWdlIDogcHVibGljIGtodG1sOjpSZW5kZXJJbWFnZSB7CisgICAgcHVibGlj
OgorICAgICAgICBSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnRJbXBsICppbXBsKTsKKyAg
ICAgICAgdmlydHVhbCB+UmVuZGVyU1ZHSW1hZ2UoKTsKKyAgICAgICAgdm9pZCBwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKTsKKyAgICBwcml2YXRl
OgorICAgICAgICB2b2lkIHRyYW5zbGF0ZUZvckF0dHJpYnV0ZXMoKTsKKyAgICB9OworfTsKKwor
I2VuZGlmCisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyMDEwKQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzggQEAKKzIwMDYtMDEtMTIgIEFsZXhhbmRlciBLZWxsZXR0ICA8bHlwYW5v
dkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZmFjdG9yIEhUTUxJbWFnZUxvYWRlciB0byBtYWtlIHN1YmNsYXNzaW5nIHBvc3NpYmxl
LiBJbXBsZW1lbnQKKyAgICAgICAgUmVuZGVyU1ZHVGV4dC1zdHlsZSBSZW5kZXJJbWFnZSBzdWJj
bGFzcy4gVXNlIHRoaXMgdG8gcmVpbXBsZW1lbnQKKyAgICAgICAgU1ZHSW1hZ2VFbGVtZW50SW1w
bC4KKworICAgICAgICBBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIHNob3VsZCBmaXg6CisgICAgICAg
IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk2NSAKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBr
Y2FudmFzL1JlbmRlclNWR0ltYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChSZW5kZXJTVkdJbWFn
ZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAoflJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJ
bWFnZSk6CisgICAgICAgIChSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAoUmVuZGVy
U1ZHSW1hZ2U6OnRyYW5zbGF0ZUZvckF0dHJpYnV0ZXMpOgorICAgICAgICAqIGtjYW52YXMvUmVu
ZGVyU1ZHSW1hZ2UuaDogQWRkZWQuCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX2ltYWdlaW1w
bC5jcHA6CisgICAgICAgIChET006OkhUTUxJbWFnZUxvYWRlcjo6c2V0TG9hZGluZ0ltYWdlKTog
dHJpdmlhbCBtZXRob2QgZXh0cmFjdGlvbgorICAgICAgICAoRE9NOjpIVE1MSW1hZ2VMb2FkZXI6
OnVwZGF0ZUZyb21FbGVtZW50KTogbWFrZSB2aXJ0dWFsCisgICAgICAgICoga2h0bWwvaHRtbC9o
dG1sX2ltYWdlaW1wbC5oOgorICAgICAgICAoRE9NOjopOgorICAgICAgICAqIGtzdmcyL21pc2Mv
U1ZHSW1hZ2VMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFNWR0ltYWdlTG9hZGVyOjpTVkdJ
bWFnZUxvYWRlcik6CisgICAgICAgICh+U1ZHSW1hZ2VMb2FkZXI6U1ZHSW1hZ2VMb2FkZXIpOgor
ICAgICAgICAoU1ZHSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiBr
c3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdJbWFnZUVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR0ltYWdlRWxlbWVudEltcGw6OlNW
R0ltYWdlRWxlbWVudEltcGwpOgorICAgICAgICAoU1ZHSW1hZ2VFbGVtZW50SW1wbDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoU1ZHSW1hZ2VFbGVtZW50SW1wbDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAoU1ZHSW1hZ2VFbGVtZW50SW1wbDo6YXR0YWNoKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50SW1wbC5oOgorCiAyMDA2LTAxLTExICBKdXN0aW4g
R2FyY2lhICA8anVzdGluLmdhcmNpYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZWQgdHdv
IGFzc2VydHMgdGhhdCBJIGFjY2lkZW50bHkgcmVtb3ZlZCBpbgpJbmRleDoga3N2ZzIvc3ZnL1NW
R0ltYWdlRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdJbWFnZUVs
ZW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTIwMDkpCisrKyBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVt
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAg
ICAgICAgICAgICAgICAgIDIwMDYgICAgICAgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0y
MiwxNiArMjMsMTMgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSA8cWJ1ZmZl
ci5oPgotCiAjaW5jbHVkZSA8a2RvbS9jb3JlL0F0dHJJbXBsLmg+Ci0jaW5jbHVkZSA8a2RvbS9j
YWNoZS9LRE9NTG9hZGVyLmg+Ci0jaW5jbHVkZSA8a2RvbS9jYWNoZS9LRE9NQ2FjaGVkT2JqZWN0
Lmg+Ci0jaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAKKyNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJT
VkdTVkdFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5jbHVk
ZSAiU1ZHSW1hZ2VFbGVtZW50SW1wbC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoSW1w
bC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nSW1wbC5oIgpAQCAtNDgsOSArNDYsNiBA
QAogI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5oPgogI2luY2x1ZGUgPGtjYW52
YXMvS0NhbnZhc0ltYWdlLmg+CiAjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzUGF0aC5oPgotI2lu
Y2x1ZGUgPGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaD4KLSNpbmNsdWRlIDxrY2Fu
dmFzL2RldmljZS9LUmVuZGVyaW5nRmlsbFBhaW50ZXIuaD4KLSNpbmNsdWRlIDxrY2FudmFzL2Rl
dmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJJbWFnZS5oPgogCiAjaW5jbHVkZSA8a2RvbS9wYXJz
ZXIvS0RPTVBhcnNlci5oPgogI2lmbmRlZiBBUFBMRV9DSEFOR0VTCkBAIC02MCwxMyArNTUsMTMg
QEAKIAogI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4KIAorI2luY2x1ZGUgImNzc3By
b3BlcnRpZXMuaCIKKwogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKIFNWR0ltYWdlRWxlbWVudElt
cGw6OlNWR0ltYWdlRWxlbWVudEltcGwoY29uc3QgS0RPTTo6UXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgS0RPTTo6RG9jdW1lbnRJbXBsICpkb2MpCi06IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50SW1wbCh0YWdOYW1lLCBkb2MpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNlSW1wbCgp
LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdVUklSZWZlcmVuY2VJbXBs
KCksIEtET006OkNhY2hlZE9iamVjdENsaWVudCgpCis6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50SW1wbCh0YWdOYW1lLCBkb2MpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNlSW1w
bCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdVUklSZWZlcmVuY2VJ
bXBsKCksIG1faW1hZ2VMb2FkZXIodGhpcykKIHsKLSAgICAvL21fY2FjaGVkRG9jdW1lbnQgPSAw
OwotICAgIG1fY2FjaGVkSW1hZ2UgPSAwOwogfQogCiBTVkdJbWFnZUVsZW1lbnRJbXBsOjp+U1ZH
SW1hZ2VFbGVtZW50SW1wbCgpCkBAIC0xMDcsMTE5ICsxMDIsMzcgQEAgdm9pZCBTVkdJbWFnZUVs
ZW1lbnRJbXBsOjpwYXJzZU1hcHBlZEF0dAogICAgICAgICB5KCktPmJhc2VWYWwoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZS5pbXBsKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpCiAgICAgICAgIHByZXNlcnZlQXNwZWN0
UmF0aW8oKS0+YmFzZVZhbCgpLT5wYXJzZVByZXNlcnZlQXNwZWN0UmF0aW8odmFsdWUuaW1wbCgp
KTsKLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKKyAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewogICAgICAg
ICB3aWR0aCgpLT5iYXNlVmFsKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUuaW1wbCgpKTsKLSAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisgICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX1dJRFRILCB2YWx1ZSk7CisgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKICAgICAgICAgaGVp
Z2h0KCktPmJhc2VWYWwoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZS5pbXBsKCkpOwotICAgIGVs
c2UKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfSEVJR0hULCB2YWx1ZSk7
CisgICAgfSBlbHNlCiAgICAgewogICAgICAgICBpZihTVkdUZXN0c0ltcGw6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgIGlmKFNWR0xhbmdTcGFjZUltcGw6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgIGlmKFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0dXJu
OwotICAgICAgICBpZihTVkdVUklSZWZlcmVuY2VJbXBsOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShh
dHRyKSkgcmV0dXJuOworICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlSW1wbDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoYXR0cikpIHsKKyAgICAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkubWF0Y2hl
cyhLRE9NOjpYTGlua05hbWVzOjpocmVmQXR0cikpIHsKKyAgICAgICAgICAgICAgICBtX2ltYWdl
TG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50SW1wbDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAgfQogfQogCiBraHRtbDo6
UmVuZGVyT2JqZWN0ICpTVkdJbWFnZUVsZW1lbnRJbXBsOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSAqYXJlbmEsIGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5bGUpCiB7Ci0jaWYgMAotICAgIEtV
UkwgZnVsbFVybChvd25lckRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYoKS0+YmFzZVZhbCgp
KSk7Ci0gICAgS01pbWVUeXBlOjpQdHIgbWltZVR5cGUgPSBLTWltZVR5cGU6OmZpbmRCeVVSTChm
dWxsVXJsKTsKLSAgICBpZihtaW1lVHlwZS0+aXMoUVN0cmluZzo6ZnJvbUxhdGluMSgiaW1hZ2Uv
c3ZnK3htbCIpKSkgLy8gZG9lcyBpdCBoYXZlIHN2ZyBjb250ZW50PwotICAgIHsKLSAgICAgICAg
UmVuZGVyUGF0aCAqcmV0ID0gUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVDb250
YWluZXIoc3R5bGUsIHRoaXMpOwotICAgICAgICBtX2NhY2hlZERvY3VtZW50ID0gb3duZXJEb2N1
bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdERvY3VtZW50KGZ1bGxVcmwsIFFTdHJpbmcoKSk7
Ci0KLSAgICAgICAgaWYobV9jYWNoZWREb2N1bWVudCkKLSAgICAgICAgICAgIG1fY2FjaGVkRG9j
dW1lbnQtPnJlZihjb25zdF9jYXN0PFNWR0ltYWdlRWxlbWVudEltcGwgKj4odGhpcykpOwotICAg
ICAgICByZXR1cm4gcmV0OwotICAgIH0KLSNlbmRpZgotCi0gICAgZmxvYXQgX3ggPSB4KCktPmJh
c2VWYWwoKS0+dmFsdWUoKSwgX3kgPSB5KCktPmJhc2VWYWwoKS0+dmFsdWUoKTsKLSAgICBmbG9h
dCBfd2lkdGggPSB3aWR0aCgpLT5iYXNlVmFsKCktPnZhbHVlKCksIF9oZWlnaHQgPSBoZWlnaHQo
KS0+YmFzZVZhbCgpLT52YWx1ZSgpOwotCi0gICAgLy8gVXNlIGR1bW15IHJlY3QKLSAgICBSZWZQ
dHI8S0NhbnZhc1BhdGg+IHBhdGhEYXRhID0gS0NhbnZhc0NyZWF0b3I6OnNlbGYoKS0+Y3JlYXRl
UmVjdGFuZ2xlKF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0KTsKLSAgICBpZiAoIXBhdGhEYXRhIHx8
IHBhdGhEYXRhLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVy
biBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUl0ZW0oYXJlbmEsIHN0eWxlLCB0
aGlzLCBwYXRoRGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0lt
YWdlKHRoaXMpOwogfQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudEltcGw6OmF0dGFjaCgpCiB7CiAg
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsOjphdHRhY2goKTsKLSAgICAvLyBp
ZiAoIW1fY2FjaGVkRG9jdW1lbnQpCi0gICAgewotICAgICAgICBtX2NhY2hlZEltYWdlID0gb3du
ZXJEb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdEltYWdlKGhyZWYoKS0+YmFzZVZhbCgp
KTsKLQotICAgICAgICBpZihtX2NhY2hlZEltYWdlKQotICAgICAgICAgICAgbV9jYWNoZWRJbWFn
ZS0+cmVmKHRoaXMpOwotICAgIH0KLX0KLQotdm9pZCBTVkdJbWFnZUVsZW1lbnRJbXBsOjpub3Rp
ZnlGaW5pc2hlZChLRE9NOjpDYWNoZWRPYmplY3QgKmZpbmlzaGVkT2JqKQotewotICAgIGlmICgh
cmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+aXNSZW5kZXJQYXRoKCkpCi0gICAgICAgIHJldHVy
bjsgLy8gRklYTUU6IEknbSBub3Qgc3VyZSB3aHkgdGhpcyB3b3VsZCBldmVyIGhhcHBlbiwgYnV0
IGl0IGRvZXMuCi0gICAgCi0gICAgUmVuZGVyUGF0aCAqaW1hZ2VQYXRoID0gc3RhdGljX2Nhc3Q8
UmVuZGVyUGF0aCAqPihyZW5kZXJlcigpKTsKLSAgICBLQ2FudmFzUmVuZGVyaW5nU3R5bGUgKmNh
bnZhc1N0eWxlID0gaW1hZ2VQYXRoLT5jYW52YXNTdHlsZSgpOwotCi0gICAgLy8gU2V0IHVwIGlt
YWdlIHBhaW50IHNlcnZlcgotICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqZmlsbFBhaW50U2Vy
dmVyID0gUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZlcihQU19J
TUFHRSk7Ci0gICAgY2FudmFzU3R5bGUtPm92ZXJyaWRlRmlsbFBhaW50U2VydmVyKGZpbGxQYWlu
dFNlcnZlcik7Ci0KLSNpZiAwCi0gICAgaWYoZmluaXNoZWRPYmogPT0gbV9jYWNoZWREb2N1bWVu
dCkKLSAgICB7Ci0gICAgICAgIEtTVkc6OkRvY3VtZW50QnVpbGRlciAqYnVpbGRlciA9IG5ldyBL
U1ZHOjpEb2N1bWVudEJ1aWxkZXIoMCk7Ci0gICAgICAgIEtET006OlBhcnNlciAqcGFyc2VyID0g
S0RPTTo6UGFyc2VyRmFjdG9yeTo6c2VsZigpLT5yZXF1ZXN0KEtVUkwoKSwgYnVpbGRlcik7Ci0g
ICAgICAgIHBhcnNlci0+ZG9tQ29uZmlnKCktPnNldFBhcmFtZXRlcihLRE9NOjpFTlRJVElFUy5p
bXBsKCksIGZhbHNlKTsKLSAgICAgICAgcGFyc2VyLT5kb21Db25maWcoKS0+c2V0UGFyYW1ldGVy
KEtET006OkVMRU1FTlRfQ09OVEVOVF9XSElURVNQQUNFLmltcGwoKSwgZmFsc2UpOwotCi0gICAg
ICAgIFFCdWZmZXIgKnRlbXAgPSBuZXcgUUJ1ZmZlcigmbV9jYWNoZWREb2N1bWVudC0+ZG9jdW1l
bnRCdWZmZXIoKS0+YnVmZmVyKCkpOwotICAgICAgICBtX3N2Z0RvYyA9IHN0YXRpY19jYXN0PFNW
R0RvY3VtZW50SW1wbCAqPihwYXJzZXItPnN5bmNQYXJzZSh0ZW1wKSk7Ci0gICAgICAgIGlmKG1f
c3ZnRG9jKQotICAgICAgICB7Ci0gICAgICAgICAgICBTVkdTVkdFbGVtZW50SW1wbCAqcm9vdCA9
IG1fc3ZnRG9jLT5yb290RWxlbWVudCgpOwotICAgICAgICAgICAgS0RPTTo6RE9NU3RyaW5nSW1w
bCAqX3ggPSB4KCktPmJhc2VWYWwoKS0+dmFsdWVBc1N0cmluZygpLCAqX3kgPSB5KCktPmJhc2VW
YWwoKS0+dmFsdWVBc1N0cmluZygpOwotICAgICAgICAgICAgS0RPTTo6RE9NU3RyaW5nSW1wbCAq
X3dpZHRoID0gd2lkdGgoKS0+YmFzZVZhbCgpLT52YWx1ZUFzU3RyaW5nKCksICpfaGVpZ2h0ID0g
aGVpZ2h0KCktPmJhc2VWYWwoKS0+dmFsdWVBc1N0cmluZygpOwotCi0gICAgICAgICAgICByb290
LT5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnhBdHRyLCBfeCk7Ci0gICAgICAgICAgICByb290LT5z
ZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnlBdHRyLCBfeSk7Ci0gICAgICAgICAgICByb290LT5zZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgX3dpZHRoKTsKLSAgICAgICAgICAgIHJvb3Qt
PnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgX2hlaWdodCk7Ci0KLSAgICAgICAg
ICAgIC8vIFRPRE86IHZpZXdCb3ggaGFuZGxpbmc/IGFuaW1hdGlvbnM/IGVjbWFzY3JpcHQ/Ci0K
LSAgICAgICAgICAgIG1fc3ZnRG9jLT5zZXRWaWV3KGdldERvY3VtZW50KCktPnZpZXcoKSk7Ci0g
ICAgICAgICAgICBtX3N2Z0RvYy0+c2V0Q2FudmFzVmlldyhnZXREb2N1bWVudCgpLT5jYW52YXNW
aWV3KCkpOwotCi0gICAgICAgICAgICBtX3N2Z0RvYy0+YXR0YWNoKCk7Ci0gICAgICAgICAgICBt
X2NhbnZhc0l0ZW0tPmFwcGVuZEl0ZW0ocm9vdC0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9jYWNoZWREb2N1bWVudC0+ZGVyZWYodGhpcyk7Ci0gICAgICAgIG1fY2FjaGVkRG9j
dW1lbnQgPSAwOwotICAgIH0KLSAgICBlbHNlCi0jZW5kaWYKLSAgICBpZihmaW5pc2hlZE9iaiA9
PSBtX2NhY2hlZEltYWdlKQotICAgIHsKLSAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpm
aWxsUGFpbnRTZXJ2ZXIgPSBjYW52YXNTdHlsZS0+ZmlsbFBhaW50U2VydmVyKGNhbnZhc1N0eWxl
LT5yZW5kZXJTdHlsZSgpLCBpbWFnZVBhdGgpOwotICAgICAgICBBU1NFUlQoZmlsbFBhaW50U2Vy
dmVyLT50eXBlKCkgPT0gUFNfSU1BR0UpOwotICAgICAgICAKLSAgICAgICAgS1JlbmRlcmluZ1Bh
aW50U2VydmVySW1hZ2UgKmZpbGxQYWludFNlcnZlckltYWdlID0gc3RhdGljX2Nhc3Q8S1JlbmRl
cmluZ1BhaW50U2VydmVySW1hZ2UgKj4oZmlsbFBhaW50U2VydmVyKTsKLSAgICAgICAgZmlsbFBh
aW50U2VydmVySW1hZ2UtPnNldEltYWdlKG1fY2FjaGVkSW1hZ2UtPnBpeG1hcCgpKTsKLQotICAg
ICAgICBtX2NhY2hlZEltYWdlLT5kZXJlZih0aGlzKTsKLSAgICAgICAgbV9jYWNoZWRJbWFnZSA9
IDA7Ci0gICAgICAgIAotICAgICAgICBpbWFnZVBhdGgtPnNldE5lZWRzTGF5b3V0KHRydWUpOwot
ICAgICAgICBpbWFnZVBhdGgtPnJlcGFpbnQoKTsKLSAgICB9CisgICAgaWYgKGtodG1sOjpSZW5k
ZXJJbWFnZSogaW1hZ2VPYmogPSBzdGF0aWNfY2FzdDxraHRtbDo6UmVuZGVySW1hZ2UqPihyZW5k
ZXJlcigpKSkKKyAgICAgICAgaW1hZ2VPYmotPnNldEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2Uo
KSk7CiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1l
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudEltcGwuaAko
cmV2aXNpb24gMTIwMDkpCisrKyBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsMTEgQEAKICNkZWZpbmUgS1NWR19TVkdJbWFnZUVsZW1l
bnRJbXBsX0gKIAogI2luY2x1ZGUgIlNWR1Rlc3RzSW1wbC5oIgorI2luY2x1ZGUgIlNWR0ltYWdl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlSW1wbC5oIgogI2luY2x1ZGUgIlNWR1VS
SVJlZmVyZW5jZUltcGwuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dEltcGwuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbC5oIgot
I2luY2x1ZGUgPGtkb20vY2FjaGUvS0RPTUNhY2hlZEltYWdlLmg+Ci0jaW5jbHVkZSA8a2RvbS9j
YWNoZS9LRE9NQ2FjaGVkT2JqZWN0Q2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBLU1ZHCiB7CkBAIC00
MSw4ICs0MCw3IEBAIG5hbWVzcGFjZSBLU1ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdMYW5nU3BhY2VJbXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJbXBsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS0RPTTo6Q2FjaGVkT2JqZWN0Q2xpZW50Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJbXBs
CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50SW1wbChjb25zdCBL
RE9NOjpRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBLRE9NOjpEb2N1bWVudEltcGwgKmRvYyk7CkBA
IC02MCwyMyArNTgsMTkgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAgICAgU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvSW1wbCAqcHJlc2VydmVBc3BlY3RSYXRpbygpIGNvbnN0OwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShLRE9NOjpNYXBwZWRBdHRyaWJ1
dGVJbXBsICphdHRyKTsKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoa2h0bWw6OlJlbmRlclN0eWxlICopIHsg
cmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBraHRtbDo6UmVuZGVyT2JqZWN0ICpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5bGUp
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChLRE9NOjpDYWNoZWRPYmpl
Y3QgKmZpbmlzaGVkT2JqKTsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoSW1wbD4gbV94OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdB
bmltYXRlZExlbmd0aEltcGw+IG1feTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0
ZWRMZW5ndGhJbXBsPiBtX3dpZHRoOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRl
ZExlbmd0aEltcGw+IG1faGVpZ2h0OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW9JbXBsPiBtX3ByZXNlcnZlQXNwZWN0UmF0aW87Ci0gICAgICAg
IC8vbXV0YWJsZSBLRE9NOjpDYWNoZWREb2N1bWVudCAqbV9jYWNoZWREb2N1bWVudDsKLSAgICAg
ICAgS0RPTTo6Q2FjaGVkSW1hZ2UgKm1fY2FjaGVkSW1hZ2U7Ci0gICAgICAgIFJlZlB0cjxTVkdE
b2N1bWVudEltcGw+IG1fc3ZnRG9jOworCisgICAgICAgIFNWR0ltYWdlTG9hZGVyIG1faW1hZ2VM
b2FkZXI7CiAgICAgfTsKIH07CiAKSW5kZXg6IGtzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBrc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDApCisr
KyBrc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92
QGtkZS5vcmc+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisK
KyNpZm5kZWYgS1NWR19TVkdJbWFnZUxvYWRlcl9ICisjZGVmaW5lIEtTVkdfU1ZHSW1hZ2VMb2Fk
ZXJfSAorCisjaW5jbHVkZSAiU1ZHVGVzdHNJbXBsLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJTVkdMYW5nU3BhY2VJbXBsLmgiCisjaW5jbHVkZSAiU1ZHVVJJUmVm
ZXJlbmNlSW1wbC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1w
bC5oIgorI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsLmgiCisjaW5j
bHVkZSA8a2RvbS9jYWNoZS9LRE9NQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxrZG9tL2NhY2hl
L0tET01DYWNoZWRPYmplY3RDbGllbnQuaD4KKworI2luY2x1ZGUgImtodG1sL2h0bWwvaHRtbF9p
bWFnZWltcGwuaCIKKworbmFtZXNwYWNlIEtTVkcKK3sKKyAgICBjbGFzcyBTVkdJbWFnZUVsZW1l
bnRJbXBsOworICAgIGNsYXNzIFNWR0ltYWdlTG9hZGVyIDogcHVibGljIERPTTo6SFRNTEltYWdl
TG9hZGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNWR0ltYWdlTG9hZGVyKFNWR0ltYWdlRWxl
bWVudEltcGwgKm5vZGUpOworICAgICAgICB2aXJ0dWFsIH5TVkdJbWFnZUxvYWRlcigpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB9OworfTsKKworI2Vu
ZGlmCisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IGtzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lv
biAwKQorKysga3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA1IEFsZXhhbmRlciBL
ZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IHByb2plY3QKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEz
MDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGtkb20vY29y
ZS9BdHRySW1wbC5oPgorI2luY2x1ZGUgPGtkb20vY2FjaGUvS0RPTUxvYWRlci5oPgorI2luY2x1
ZGUgIkRvY0xvYWRlci5oIgorCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdJ
bWFnZUVsZW1lbnRJbXBsLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhJbXBsLmgiCisj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmdJbXBsLmgiCisjaW5jbHVkZSAiU1ZHTWF0cml4SW1w
bC5oIgorI2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgorCisjaW5jbHVkZSAia2h0
bWwvcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgS1NWRzsKKwor
U1ZHSW1hZ2VMb2FkZXI6OlNWR0ltYWdlTG9hZGVyKFNWR0ltYWdlRWxlbWVudEltcGwgKm5vZGUp
Cis6IERPTTo6SFRNTEltYWdlTG9hZGVyKG5vZGUpCit7Cit9CisKK35TVkdJbWFnZUxvYWRlcjpT
VkdJbWFnZUxvYWRlcigpCit7Cit9CisKKy8vIEZJWE1FIC0gUmVmYWN0b3IgbW9zdCBvZiB0aGlz
IGNvZGUgaW50byBET006OkhUTUxJbWFnZUxvYWRlciBvciBhIHNoYXJlZCBET006OkltYWdlTG9h
ZGVyIGJhc2UgY2xhc3MKK3ZvaWQgU1ZHSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkK
K3sKKyAgICBTVkdJbWFnZUVsZW1lbnRJbXBsICppbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdJbWFnZUVsZW1lbnRJbXBsICo+KGVsZW1lbnQoKSk7CisgICAgRE9NOjpEb2N1bWVudEltcGwq
IGRvYyA9IGltYWdlRWxlbWVudC0+b3duZXJEb2N1bWVudCgpOworICAgIAorICAgIGtodG1sOjpD
YWNoZWRJbWFnZSAqbmV3SW1hZ2UgPSAwOworICAgIGlmIChpbWFnZUVsZW1lbnQtPmhyZWYoKS0+
YmFzZVZhbCgpKQorICAgICAgICBuZXdJbWFnZSA9IGRvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RJ
bWFnZShpbWFnZUVsZW1lbnQtPmhyZWYoKS0+YmFzZVZhbCgpKTsKKworICAgIGtodG1sOjpDYWNo
ZWRJbWFnZSAqb2xkSW1hZ2UgPSBpbWFnZSgpOworICAgIGlmIChuZXdJbWFnZSAhPSBvbGRJbWFn
ZSkgeworICAgICAgICBzZXRMb2FkaW5nSW1hZ2UobmV3SW1hZ2UpOworICAgICAgICBpZiAobmV3
SW1hZ2UpCisgICAgICAgICAgICBuZXdJbWFnZS0+cmVmKHRoaXMpOworICAgICAgICBpZiAob2xk
SW1hZ2UpCisgICAgICAgICAgICBvbGRJbWFnZS0+ZGVyZWYodGhpcyk7CisgICAgfQorCisgICAg
aWYgKGtodG1sOjpSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxraHRtbDo6UmVu
ZGVySW1hZ2UqPihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCkpKQorICAgICAgICByZW5kZXJlci0+
cmVzZXRBbmltYXRpb24oKTsKK30K
</data>
<flag name="review"
          id="1243"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>