<?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>11021</bug_id>
          
          <creation_ts>2006-09-25 05:35:00 -0700</creation_ts>
          <short_desc>Bring animation back to life</short_desc>
          <delta_ts>2006-09-26 05:35:16 -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>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>P4</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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>56417</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-25 05:35:00 -0700</bug_when>
    <thetext>Bring animation back to life

SVG animation died a while back.  Unfortunately we never noticed.

I brought it back to life tonight, by fixing some stupid typos from when I last changed the code, and wiring up an area I had forgotten.  I also hosed off some of the Animation code while I was there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56418</commentid>
    <comment_count>1</comment_count>
      <attachid>10753</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-25 05:38:40 -0700</bug_when>
    <thetext>Created attachment 10753
resurrects basic animation (animateColor), cleans up animation code

Animation-triggered invalidation seems to be completely busted.  Not sure why.  At least now the timers are wired up correctly and firing correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56419</commentid>
    <comment_count>2</comment_count>
      <attachid>10754</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-25 05:45:12 -0700</bug_when>
    <thetext>Created attachment 10754
A basic test case (which seems to fail, probably due to invalidation issues)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56420</commentid>
    <comment_count>3</comment_count>
      <attachid>10755</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-25 05:50:07 -0700</bug_when>
    <thetext>Created attachment 10755
a more complicated example that does work (strange, eh?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56522</commentid>
    <comment_count>4</comment_count>
      <attachid>10753</attachid>
    <who name="">mitz</who>
    <bug_when>2006-09-26 05:03:10 -0700</bug_when>
    <thetext>Comment on attachment 10753
resurrects basic animation (animateColor), cleans up animation code

Looks good. Please edit the ChangeLog to point out the significant changes and additions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56523</commentid>
    <comment_count>5</comment_count>
      <attachid>10753</attachid>
    <who name="">mitz</who>
    <bug_when>2006-09-26 05:03:54 -0700</bug_when>
    <thetext>Comment on attachment 10753
resurrects basic animation (animateColor), cleans up animation code

Forgot to say the magic words. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56524</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-26 05:35:16 -0700</bug_when>
    <thetext>r16572.  Thanks again mitz!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10753</attachid>
            <date>2006-09-25 05:38:40 -0700</date>
            <delta_ts>2006-09-26 05:03:10 -0700</delta_ts>
            <desc>resurrects basic animation (animateColor), cleans up animation code</desc>
            <filename>animation.patch</filename>
            <type>text/plain</type>
            <size>29396</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTU3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMDYtMDkt
MjUgIEVyaWMgU2VpZGVsICA8ZXJpY0Blc2VpZGVsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCcmluZyBhbmltYXRpb24gYmFjayB0byBsaWZl
CisgICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEwMjEKKworICAgICAgICAqIGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGltZXI6Om5vdGlmeUFsbCk6CisgICAgICAgICoga3N2ZzIvbWlz
Yy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpzdGFydEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpwYXVzZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjp1bnBhdXNlQW5pbWF0aW9ucyk6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUaW1lckV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpwYXJzZVRyYW5zZm9ybVZhbHVlKToK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojp0YXJnZXRBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0VGFyZ2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZU5hbWUpOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6cmVtb3ZlZEZy
b21Eb2N1bWVudCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
ZXRFbGVtZW50OjpoYW5kbGVUaW1lckV2ZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVVJJ
UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFy
Z2V0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVVJJUmVmZXJlbmNlLmg6CisKIDIwMDYtMDkt
MjUgIEVyaWMgU2VpZGVsICA8ZXJpY0Blc2VpZGVsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBtanMuCkluZGV4OiBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTY1NTcpCisr
KyBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0
LDM0ICsyMTQsMjcgQEAgdm9pZCBTVkdUaW1lcjo6bm90aWZ5QWxsKCkKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgaWYoYW5pbWF0aW9uLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKmFuaW1Db2xvciA9IHN0YXRpY19jYXN0
PFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKj4oYW5pbWF0aW9uKTsKLSAgICAgICAgICAgICAgICBp
ZighYW5pbUNvbG9yKQorICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi0+aGFzVGFnTmFtZShTVkdO
YW1lczo6YW5pbWF0ZUNvbG9yVGFnKSkgeworICAgICAgICAgICAgICAgIFNWR0FuaW1hdGVDb2xv
ckVsZW1lbnQqIGFuaW1Db2xvciA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVDb2xvckVsZW1lbnQq
PihhbmltYXRpb24pOworICAgICAgICAgICAgICAgIGlmICghYW5pbUNvbG9yKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gYW5p
bUNvbG9yLT5hdHRyaWJ1dGVOYW1lKCk7CiAgICAgICAgICAgICAgICAgQ29sb3IgY29sb3IgPSBh
bmltQ29sb3ItPmNvbG9yKCk7CiAKLSAgICAgICAgICAgICAgICBpZighdGFyZ2V0Q29sb3IuY29u
dGFpbnMobmFtZSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZihh
bmltYXRpb24tPmlzQWRkaXRpdmUoKSkKLSAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmICghdGFyZ2V0Q29sb3IuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGFuaW1hdGlvbi0+aXNBZGRpdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgciA9IGFuaW1Db2xvci0+aW5pdGlhbENvbG9yKCkucmVkKCkgKyBjb2xvci5yZWQo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBnID0gYW5pbUNvbG9yLT5pbml0aWFsQ29s
b3IoKS5ncmVlbigpICsgY29sb3IuZ3JlZW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBiID0gYW5pbUNvbG9yLT5pbml0aWFsQ29sb3IoKS5ibHVlKCkgKyBjb2xvci5ibHVlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29sb3Iu
c2V0KG5hbWUsIGFuaW1Db2xvci0+Y2xhbXBDb2xvcihyLCBnLCBiKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldENvbG9yLnNldChuYW1lLCBjb2xv
cik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKCFhbmltYXRpb24tPmlzQWRkaXRpdmUoKSkK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWFuaW1h
dGlvbi0+aXNBZGRpdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29sb3Iu
c2V0KG5hbWUsIGNvbG9yKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgQ29sb3IgYmFzZUNvbG9yID0gdGFyZ2V0Q29sb3IuZ2V0KG5hbWUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHIgPSBiYXNlQ29sb3IucmVkKCkgKyBjb2xvci5yZWQoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBnID0gYmFzZUNvbG9yLmdyZWVuKCkgKyBjb2xvci5n
cmVlbigpOwpAQCAtMjU3LDcgKzI1MCw3IEBAIHZvaWQgU1ZHVGltZXI6Om5vdGlmeUFsbCgpCiAg
ICAgICAgIGlmICh0YXJnZXRUcmFuc2Zvcm1zKSB7CiAgICAgICAgICAgICBTVkdFbGVtZW50KiBr
ZXkgPSB0YXJnZXRJdGVyYXRvci0+Zmlyc3Q7CiAgICAgICAgICAgICBpZiAoa2V5ICYmIGtleS0+
aXNTdHlsZWQoKSAmJiBrZXktPmlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQgKnRyYW5zZm9ybSA9IHN0YXRpY19j
YXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50ICo+KGtleSk7CisgICAgICAgICAgICAg
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0
PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4oa2V5KTsKICAgICAgICAgICAgICAgICB0
cmFuc2Zvcm0tPnNldFRyYW5zZm9ybSh0YXJnZXRUcmFuc2Zvcm1zLmdldCgpKTsKICAgICAgICAg
ICAgICAgICB0cmFuc2Zvcm0tPnVwZGF0ZUxvY2FsVHJhbnNmb3JtKHRyYW5zZm9ybS0+dHJhbnNm
b3JtKCkpOwogICAgICAgICAgICAgfQpAQCAtMjY1LDIyICsyNTgsMTcgQEAgdm9pZCBTVkdUaW1l
cjo6bm90aWZ5QWxsKCkKIAogICAgICAgICAvLyBIYW5kbGUgPGFuaW1hdGVDb2xvcj4uCiAgICAg
ICAgIEhhc2hNYXA8U3RyaW5nLCBDb2xvcj46Oml0ZXJhdG9yIGNlbmQgPSB0YXJnZXRDb2xvci5l
bmQoKTsKLSAgICAgICAgZm9yKEhhc2hNYXA8U3RyaW5nLCBDb2xvcj46Oml0ZXJhdG9yIGNpdCA9
IHRhcmdldENvbG9yLmJlZ2luKCk7IGNpdCAhPSBjZW5kOyArK2NpdCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYoY2l0LT5zZWNvbmQuaXNWYWxpZCgpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldFRhcmdldEF0dHJpYnV0ZSh0YXJnZXRJ
dGVyYXRvci0+Zmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaXQtPmZpcnN0LmltcGwoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhjaXQtPnNl
Y29uZC5uYW1lKCkpLmltcGwoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZvciAoSGFzaE1h
cDxTdHJpbmcsIENvbG9yPjo6aXRlcmF0b3IgY2l0ID0gdGFyZ2V0Q29sb3IuYmVnaW4oKTsgY2l0
ICE9IGNlbmQ7ICsrY2l0KSB7CisgICAgICAgICAgICBpZiAoY2l0LT5zZWNvbmQuaXNWYWxpZCgp
KQorICAgICAgICAgICAgICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldFRhcmdldEF0dHJpYnV0
ZSh0YXJnZXRJdGVyYXRvci0+Zmlyc3QsIGNpdC0+Zmlyc3QsIGNpdC0+c2Vjb25kLm5hbWUoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBNYWtlIGEgc2Vjb25kIHBhc3MgdGhyb3VnaCB0
aGUgbWFwIHRvIGF2b2lkIG11bHRpcGxlIHNldENoYW5nZWQgY2FsbHMgb24gdGhlIHNhbWUgZWxl
bWVudC4KICAgICBmb3IgKHRhcmdldEl0ZXJhdG9yID0gdGFyZ2V0TWFwLmJlZ2luKCk7IHRhcmdl
dEl0ZXJhdG9yICE9IHRlbmQ7ICsrdGFyZ2V0SXRlcmF0b3IpIHsKLSAgICAgICAgU1ZHRWxlbWVu
dCAqa2V5ID0gdGFyZ2V0SXRlcmF0b3ItPmZpcnN0OworICAgICAgICBTVkdFbGVtZW50KiBrZXkg
PSB0YXJnZXRJdGVyYXRvci0+Zmlyc3Q7CiAgICAgICAgIGlmIChrZXkgJiYga2V5LT5pc1N0eWxl
ZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCAqPihrZXkpLT5z
ZXRDaGFuZ2VkKHRydWUpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVu
dCo+KGtleSktPnNldENoYW5nZWQodHJ1ZSk7CiAgICAgfQogfQogCkluZGV4OiBrc3ZnMi9taXNj
L1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvbWlzYy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAxNjU1NykKKysrIGtzdmcyL21pc2MvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMjEgKzY2LDIxIEBA
IHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzdGFydEFuaW1hdGkKICAgICAvLyBGSVhNRTog
RXZlbnR1YWxseSBldmVyeSAiVGltZSBDb250YWluZXIiIHdpbGwgbmVlZCBhIHdheSB0byBsYXRj
aCBvbiB0byBzb21lIGdsb2JhbCB0aW1lcgogICAgIC8vIHN0YXJ0aW5nIGFuaW1hdGlvbnMgZm9y
IGEgZG9jdW1lbnQgd2lsbCBkbyB0aGlzICJsYXRjaGluZyIKICAgICAKLSAgICBIYXNoU2V0PFNW
R1NWR0VsZW1lbnQqPjo6aXRlcmF0b3IgZW5kID0gbV90aW1lQ29udGFpbmVycy5iZWdpbigpOwor
ICAgIEhhc2hTZXQ8U1ZHU1ZHRWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX3RpbWVDb250YWlu
ZXJzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxTVkdTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGl0
ciA9IG1fdGltZUNvbnRhaW5lcnMuYmVnaW4oKTsgaXRyICE9IGVuZDsgKytpdHIpCiAgICAgICAg
ICgqaXRyKS0+dGltZVNjaGVkdWxlcigpLT5zdGFydEFuaW1hdGlvbnMoKTsKIH0KICAgICAKIHZv
aWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpwYXVzZUFuaW1hdGlvbnMoKQogewotICAgIEhhc2hT
ZXQ8U1ZHU1ZHRWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX3RpbWVDb250YWluZXJzLmJlZ2lu
KCk7CisgICAgSGFzaFNldDxTVkdTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IG1fdGltZUNv
bnRhaW5lcnMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PFNWR1NWR0VsZW1lbnQqPjo6aXRlcmF0
b3IgaXRyID0gbV90aW1lQ29udGFpbmVycy5iZWdpbigpOyBpdHIgIT0gZW5kOyArK2l0cikKICAg
ICAgICAgKCppdHIpLT5wYXVzZUFuaW1hdGlvbnMoKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OnVucGF1c2VBbmltYXRpb25zKCkKIHsKLSAgICBIYXNoU2V0PFNWR1NWR0VsZW1l
bnQqPjo6aXRlcmF0b3IgZW5kID0gbV90aW1lQ29udGFpbmVycy5iZWdpbigpOworICAgIEhhc2hT
ZXQ8U1ZHU1ZHRWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX3RpbWVDb250YWluZXJzLmVuZCgp
OwogICAgIGZvciAoSGFzaFNldDxTVkdTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ciA9IG1fdGlt
ZUNvbnRhaW5lcnMuYmVnaW4oKTsgaXRyICE9IGVuZDsgKytpdHIpCiAgICAgICAgICgqaXRyKS0+
dW5wYXVzZUFuaW1hdGlvbnMoKTsKIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50LmNwcAkocmV2aXNpb24gMTY1NTcpCisrKyBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTAgKzIwMCwxMCBAQCB2
b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAgICAgICAgICAgICAg
ICAgIHVzZVRpbWVQZXJjZW50YWdlID0gMS4wOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIG1fdG9UcmFuc2Zvcm0gPSBwYXJzZVRyYW5zZm9ybVZhbHVlKHZhbHVlMi5kZXBy
ZWNhdGVkU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1fdG9UcmFuc2Zvcm0gPSBwYXJzZVRy
YW5zZm9ybVZhbHVlKHZhbHVlMik7CiAgICAgICAgICAgICAgICAgbV90b1JvdGF0ZVNwZWNpYWxD
YXNlID0gbV9yb3RhdGVTcGVjaWFsQ2FzZTsKICAgICAKLSAgICAgICAgICAgICAgICBtX2Zyb21U
cmFuc2Zvcm0gPSBwYXJzZVRyYW5zZm9ybVZhbHVlKHZhbHVlMS5kZXByZWNhdGVkU3RyaW5nKCkp
OworICAgICAgICAgICAgICAgIG1fZnJvbVRyYW5zZm9ybSA9IHBhcnNlVHJhbnNmb3JtVmFsdWUo
dmFsdWUxKTsKICAgICAgICAgICAgICAgICBtX2Zyb21Sb3RhdGVTcGVjaWFsQ2FzZSA9IG1fcm90
YXRlU3BlY2lhbENhc2U7CiAKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbUJ5
UGVyY2VudGFnZTsKQEAgLTMzMSw5ICszMzEsOSBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50OjpoYW5kbGVUCiAgICAgfQogfQogCi1SZWZQdHI8U1ZHVHJhbnNmb3JtPiBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShjb25zdCBEZXByZWNhdGVk
U3RyaW5nICZkYXRhKSBjb25zdAorUmVmUHRyPFNWR1RyYW5zZm9ybT4gU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQ6OnBhcnNlVHJhbnNmb3JtVmFsdWUoY29uc3QgU3RyaW5nJiBkYXRhKSBjb25z
dAogewotICAgIERlcHJlY2F0ZWRTdHJpbmcgcGFyc2UgPSBkYXRhLnN0cmlwV2hpdGVTcGFjZSgp
OworICAgIERlcHJlY2F0ZWRTdHJpbmcgcGFyc2UgPSBkYXRhLmRlcHJlY2F0ZWRTdHJpbmcoKS5z
dHJpcFdoaXRlU3BhY2UoKTsKICAgICBpZiAocGFyc2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gMDsKICAgICAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCShy
ZXZpc2lvbiAxNjU1NykKKysrIGtzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnRJ
bXBsX0gKLSNkZWZpbmUgS1NWR19TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudEltcGxfSAorI2lm
bmRlZiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudF9ICisjZGVmaW5lIFNWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50X0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHVHJhbnNm
b3JtLmgiCkBAIC0zNiwxNiArMzYsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBT
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQoKTsKIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICph
dHRyKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUaW1lckV2ZW50KGRvdWJs
ZSB0aW1lUGVyY2VudGFnZSk7CiAKICAgICAgICAgLy8gSGVscGVycwotICAgICAgICBSZWZQdHI8
U1ZHVHJhbnNmb3JtPiBwYXJzZVRyYW5zZm9ybVZhbHVlKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcg
JmRhdGEpIGNvbnN0OwotICAgICAgICB2b2lkIGNhbGN1bGF0ZVJvdGF0aW9uRnJvbU1hdHJpeChj
b25zdCBBZmZpbmVUcmFuc2Zvcm0gJm1hdHJpeCwgZG91YmxlICZhbmdsZSwgZG91YmxlICZjeCwg
ZG91YmxlICZjeSkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IHBhcnNlVHJh
bnNmb3JtVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgICAgIHZvaWQgY2FsY3VsYXRl
Um90YXRpb25Gcm9tTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGRvdWJsZSAmYW5nbGUs
IGRvdWJsZSAmY3gsIGRvdWJsZSAmY3kpIGNvbnN0OwogCi0gICAgICAgIFNWR01hdHJpeCAqaW5p
dGlhbE1hdHJpeCgpIGNvbnN0OwotICAgICAgICBTVkdNYXRyaXggKnRyYW5zZm9ybU1hdHJpeCgp
IGNvbnN0OworICAgICAgICBTVkdNYXRyaXgqIGluaXRpYWxNYXRyaXgoKSBjb25zdDsKKyAgICAg
ICAgU1ZHTWF0cml4KiB0cmFuc2Zvcm1NYXRyaXgoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTY5LDYgKzY5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZiAv
LyBLU1ZHX1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50SW1wbF9ICisjZW5kaWYgLy8gU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnRfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjU1NykKKysrIGtzdmcyL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMzQgKzQxLDMyIEBACiAjaW5j
bHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1TVkdBbmltYXRpb25FbGVtZW50OjpT
VkdBbmltYXRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
ICpkb2MpCi06IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKSwgU1ZHVGVzdHMoKSwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpCi17Ci0gICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIG1fdGFyZ2V0RWxlbWVudCA9IDA7Ci0gICAgCi0gICAgbV9j
dXJyZW50VGltZSA9IDAuMDsKLSAgICBtX3NpbXBsZUR1cmF0aW9uID0gMC4wOworU1ZHQW5pbWF0
aW9uRWxlbWVudDo6U1ZHQW5pbWF0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jKQorICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCisgICAg
LCBTVkdUZXN0cygpCisgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKKyAgICAs
IG1fdGFyZ2V0RWxlbWVudCgwKQorICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCisgICAgLCBtX2N1
cnJlbnRUaW1lKDAuMCkKKyAgICAsIG1fc2ltcGxlRHVyYXRpb24oMC4wKQorICAgICwgbV9maWxs
KEZJTExfUkVNT1ZFKQorICAgICwgbV9yZXN0YXJ0KFJFU1RBUlRfQUxXQVlTKQorICAgICwgbV9j
YWxjTW9kZShDQUxDTU9ERV9MSU5FQVIpCisgICAgLCBtX2FkZGl0aXZlKEFERElUSVZFX1JFUExB
Q0UpCisgICAgLCBtX2FjY3VtdWxhdGUoQUNDVU1VTEFURV9OT05FKQorICAgICwgbV9hdHRyaWJ1
dGVUeXBlKEFUVFJJQlVURVRZUEVfQVVUTykKKyAgICAsIG1fbWF4KDAuMCkKKyAgICAsIG1fbWlu
KDAuMCkKKyAgICAsIG1fZW5kKDAuMCkKKyAgICAsIG1fYmVnaW4oMC4wKQorICAgICwgbV9yZXBl
YXRpb25zKDApCisgICAgLCBtX3JlcGVhdENvdW50KDApCit7CiAKLSAgICAvLyBJbml0aWFsaXpl
IHNoYXJlZCBwcm9wZXJ0aWVzLi4uCi0gICAgbV9lbmQgPSAwLjA7Ci0gICAgbV9taW4gPSAwLjA7
Ci0gICAgbV9tYXggPSAwLjA7Ci0gICAgbV9iZWdpbiA9IDAuMDsKLQotICAgIG1fcmVwZWF0aW9u
cyA9IDA7Ci0gICAgbV9yZXBlYXRDb3VudCA9IDA7Ci0KLSAgICBtX2ZpbGwgPSBGSUxMX1JFTU9W
RTsKLSAgICBtX3Jlc3RhcnQgPSBSRVNUQVJUX0FMV0FZUzsKLSAgICBtX2NhbGNNb2RlID0gQ0FM
Q01PREVfTElORUFSOwotICAgIG1fYWRkaXRpdmUgPSBBRERJVElWRV9SRVBMQUNFOwotICAgIG1f
YWNjdW11bGF0ZSA9IEFDQ1VNVUxBVEVfTk9ORTsKLSAgICBtX2F0dHJpYnV0ZVR5cGUgPSBBVFRS
SUJVVEVUWVBFX0FVVE87CiB9CiAKIFNWR0FuaW1hdGlvbkVsZW1lbnQ6On5TVkdBbmltYXRpb25F
bGVtZW50KCkKQEAgLTEyMCw5ICsxMTgsOSBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0CiB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7
CiAgICAgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhMaW5rTmFtZXM6OmhyZWZBdHRyKSkKLSAg
ICAgICAgbV9ocmVmID0gdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpOworICAgICAgICBtX2hyZWYg
PSB2YWx1ZTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmF0dHJpYnV0
ZU5hbWVBdHRyKQotICAgICAgICBtX2F0dHJpYnV0ZU5hbWUgPSB2YWx1ZS5kZXByZWNhdGVkU3Ry
aW5nKCk7CisgICAgICAgIG1fYXR0cmlidXRlTmFtZSA9IHZhbHVlOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6YXR0cmlidXRlVHlwZUF0dHIpCiAgICAgewogICAgICAg
ICBpZiAodmFsdWUgPT0gIkNTUyIpCkBAIC0xNDQsMjkgKzE0MiwyOSBAQCB2b2lkIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0CiAKICAgICAgICAgLy8gUGFyc2UgZGF0YQogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHRlbXAtPm51bWJlck9mSXRlbXMoKTsg
aSsrKSB7Ci0gICAgICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGN1cnJlbnQgPSBTdHJpbmcodGVt
cC0+Z2V0SXRlbShpLCBlYykpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgICAgIFN0cmlu
ZyBjdXJyZW50ID0gdGVtcC0+Z2V0SXRlbShpLCBlYyk7CiAKICAgICAgICAgICAgIGlmIChjdXJy
ZW50LnN0YXJ0c1dpdGgoImFjY2Vzc0tleSIpKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVnaXN0
ZXIga2V5RG93bkV2ZW50TGlzdGVuZXIgZm9yIHRoZSBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAg
ICBEZXByZWNhdGVkU3RyaW5nIGNoYXJhY3RlciA9IGN1cnJlbnQubWlkKGN1cnJlbnQubGVuZ3Ro
KCkgLSAyLCAxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY2hhcmFjdGVyID0gY3VycmVudC5z
dWJzdHJpbmcoY3VycmVudC5sZW5ndGgoKSAtIDIsIDEpOwogICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBOb3QgaW1wbGVtZW50ZWQhIFN1cHBvc2VkIHRvIHJlZ2lzdGVyIGFjY2Vzc0tleSBjaGFy
YWN0ZXIKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5zdGFydHNXaXRoKCJ3YWxsY2xv
Y2siKSkgewogICAgICAgICAgICAgICAgIGludCBmaXJzdEJyYWNlID0gY3VycmVudC5maW5kKCco
Jyk7CiAgICAgICAgICAgICAgICAgaW50IHNlY29uZEJyYWNlID0gY3VycmVudC5maW5kKCcpJyk7
CiAKLSAgICAgICAgICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHdhbGxjbG9ja1ZhbHVlID0gY3Vy
cmVudC5taWQoZmlyc3RCcmFjZSArIDEsIHNlY29uZEJyYWNlIC0gZmlyc3RCcmFjZSAtIDIpOwor
ICAgICAgICAgICAgICAgIFN0cmluZyB3YWxsY2xvY2tWYWx1ZSA9IGN1cnJlbnQuc3Vic3RyaW5n
KGZpcnN0QnJhY2UgKyAxLCBzZWNvbmRCcmFjZSAtIGZpcnN0QnJhY2UgLSAyKTsKICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkISBTdXBwb3NlZCB0byB1c2Ugd2FsbENs
b2NrIHZhbHVlCiAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQuY29udGFpbnMoJy4nKSkg
ewogICAgICAgICAgICAgICAgIGludCBkb3RQb3NpdGlvbiA9IGN1cnJlbnQuZmluZCgnLicpOwog
Ci0gICAgICAgICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBlbGVtZW50ID0gY3VycmVudC5taWQo
MCwgZG90UG9zaXRpb24pOwotICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgY2xvY2tW
YWx1ZTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZWxlbWVudCA9IGN1cnJlbnQuc3Vic3RyaW5n
KDAsIGRvdFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY2xvY2tWYWx1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoY3VycmVudC5jb250YWlucygiYmVnaW4iKSkKLSAgICAgICAgICAg
ICAgICAgICAgY2xvY2tWYWx1ZSA9IGN1cnJlbnQubWlkKGRvdFBvc2l0aW9uICsgNik7CisgICAg
ICAgICAgICAgICAgICAgIGNsb2NrVmFsdWUgPSBjdXJyZW50LnN1YnN0cmluZyhkb3RQb3NpdGlv
biArIDYpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuY29udGFpbnMoImVuZCIp
KQotICAgICAgICAgICAgICAgICAgICBjbG9ja1ZhbHVlID0gY3VycmVudC5taWQoZG90UG9zaXRp
b24gKyA0KTsKKyAgICAgICAgICAgICAgICAgICAgY2xvY2tWYWx1ZSA9IGN1cnJlbnQuc3Vic3Ry
aW5nKGRvdFBvc2l0aW9uICsgNCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudC5j
b250YWlucygicmVwZWF0IikpCi0gICAgICAgICAgICAgICAgICAgIGNsb2NrVmFsdWUgPSBjdXJy
ZW50Lm1pZChkb3RQb3NpdGlvbiArIDcpOworICAgICAgICAgICAgICAgICAgICBjbG9ja1ZhbHVl
ID0gY3VycmVudC5zdWJzdHJpbmcoZG90UG9zaXRpb24gKyA3KTsKICAgICAgICAgICAgICAgICBl
bHNlIC8vIERPTTIgRXZlbnQgUmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICBpbnQgcGx1c01pbnVzUG9zaXRpb24gPSAtMTsKQEAgLTE3Niw4ICsxNzQsOCBA
QCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuY29udGFpbnMoJy0nKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHBsdXNNaW51c1Bvc2l0aW9uID0gY3VycmVudC5maW5kKCctJyk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBldmVudCA9IGN1cnJlbnQubWlkKGRvdFBvc2l0
aW9uICsgMSwgcGx1c01pbnVzUG9zaXRpb24gLSBkb3RQb3NpdGlvbiAtIDEpOwotICAgICAgICAg
ICAgICAgICAgICBjbG9ja1ZhbHVlID0gY3VycmVudC5taWQoZG90UG9zaXRpb24gKyBldmVudC5s
ZW5ndGgoKSArIDEpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXZlbnQgPSBjdXJyZW50
LnN1YnN0cmluZyhkb3RQb3NpdGlvbiArIDEsIHBsdXNNaW51c1Bvc2l0aW9uIC0gZG90UG9zaXRp
b24gLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgY2xvY2tWYWx1ZSA9IGN1cnJlbnQuc3Vic3Ry
aW5nKGRvdFBvc2l0aW9uICsgZXZlbnQubGVuZ3RoKCkgKyAxKTsKICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IHN1cHBvc2VkIHRvIHVzZSBET00gRXZlbnQKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTk3LDE5ICsxOTUsMTkgQEAgdm9pZCBTVkdBbmlt
YXRpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dAogICAgIH0KICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OmR1ckF0dHIpCiAgICAgewotICAgICAgICBtX3NpbXBsZUR1cmF0
aW9uID0gcGFyc2VDbG9ja1ZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CisgICAgICAg
IG1fc2ltcGxlRHVyYXRpb24gPSBwYXJzZUNsb2NrVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAo
IWlzSW5kZWZpbml0ZShtX3NpbXBsZUR1cmF0aW9uKSkKICAgICAgICAgICAgIG1fc2ltcGxlRHVy
YXRpb24gKj0gMTAwMC4wOwogICAgIH0KICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6Om1pbkF0dHIpCiAgICAgewotICAgICAgICBtX21pbiA9IHBhcnNlQ2xvY2tWYWx1ZSh2
YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpOworICAgICAgICBtX21pbiA9IHBhcnNlQ2xvY2tWYWx1
ZSh2YWx1ZSk7CiAgICAgICAgIGlmICghaXNJbmRlZmluaXRlKG1fbWluKSkKICAgICAgICAgICAg
IG1fbWluICo9IDEwMDAuMDsKICAgICB9CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjptYXhBdHRyKQogICAgIHsKLSAgICAgICAgbV9tYXggPSBwYXJzZUNsb2NrVmFsdWUo
dmFsdWUuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICAgICAgbV9tYXggPSBwYXJzZUNsb2NrVmFs
dWUodmFsdWUpOwogICAgICAgICBpZiAoIWlzSW5kZWZpbml0ZShtX21heCkpCiAgICAgICAgICAg
ICBtX21heCAqPSAxMDAwLjA7CiAgICAgfQpAQCAtMjMwLDcgKzIyOCw3IEBAIHZvaWQgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHQKICAgICAgICAgICAgIG1fcmVwZWF0Q291bnQg
PSB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKTsKICAgICB9CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyZXBlYXREdXJBdHRyKQotICAgICAgICBtX3Jl
cGVhdER1ciA9IHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgbV9yZXBlYXREdXIg
PSB2YWx1ZTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmZpbGxBdHRy
KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlID09ICJmcmVlemUiKQpAQCAtMjY1LDExICsyNjMs
MTEgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dAogICAgICAgICBT
VkdIZWxwZXI6OnBhcnNlU2VwYXJhdGVkTGlzdChtX2tleVNwbGluZXMuZ2V0KCksIHZhbHVlLCAn
OycpOwogICAgIH0KICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmZyb21B
dHRyKQotICAgICAgICBtX2Zyb20gPSB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgICAg
IG1fZnJvbSA9IHZhbHVlOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
dG9BdHRyKQotICAgICAgICBtX3RvID0gdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpOworICAgICAg
ICBtX3RvID0gdmFsdWU7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpi
eUF0dHIpCi0gICAgICAgIG1fYnkgPSB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgICAg
IG1fYnkgPSB2YWx1ZTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmFk
ZGl0aXZlQXR0cikKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAic3VtIikKQEAgLTI5Myw5
ICsyOTEsOSBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0CiAgICAg
fQogfQogCi1kb3VibGUgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKGNvbnN0
IERlcHJlY2F0ZWRTdHJpbmcgJmRhdGEpIGNvbnN0Citkb3VibGUgU1ZHQW5pbWF0aW9uRWxlbWVu
dDo6cGFyc2VDbG9ja1ZhbHVlKGNvbnN0IFN0cmluZyYgZGF0YSkgY29uc3QKIHsKLSAgICBEZXBy
ZWNhdGVkU3RyaW5nIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBEZXByZWNh
dGVkU3RyaW5nIHBhcnNlID0gZGF0YS5kZXByZWNhdGVkU3RyaW5nKCkuc3RyaXBXaGl0ZVNwYWNl
KCk7CiAgICAgCiAgICAgaWYgKHBhcnNlID09ICJpbmRlZmluaXRlIikgLy8gU2F2ZXMgc29tZSB0
aW1lLi4uCiAgICAgICAgIHJldHVybiBEQkxfTUFYOwpAQCAtNDI5LDQ4ICs0MjcsNDIgQEAgU3Ry
aW5nIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnRhcmdldEF0dHJpYgogICAgIH0KIAogICAgIGlmIChh
dHRyaWJ1dGVUeXBlID09IEFUVFJJQlVURVRZUEVfWE1MIHx8IHJldC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldCA9IHRhcmdldEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKFN0cmluZyhtX2F0dHJpYnV0
ZU5hbWUpLmltcGwoKSk7CisgICAgICAgIHJldCA9IHRhcmdldEVsZW1lbnQoKS0+Z2V0QXR0cmli
dXRlKG1fYXR0cmlidXRlTmFtZSk7CiAKICAgICByZXR1cm4gcmV0OwogfQogCi12b2lkIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OnNldFRhcmdldEF0dHJpYnV0ZShTdHJpbmdJbXBsICp2YWx1ZSkKK3Zv
aWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0VGFyZ2V0QXR0cmlidXRlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7Ci0gICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0VGFyZ2V0QXR0cmlidXRlKHRh
cmdldEVsZW1lbnQoKSwgU3RyaW5nKG1fYXR0cmlidXRlTmFtZSkuaW1wbCgpLCB2YWx1ZSwgc3Rh
dGljX2Nhc3Q8RUF0dHJpYnV0ZVR5cGU+KG1fYXR0cmlidXRlVHlwZSkpOworICAgIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OnNldFRhcmdldEF0dHJpYnV0ZSh0YXJnZXRFbGVtZW50KCksIG1fYXR0cmli
dXRlTmFtZSwgdmFsdWUsIHN0YXRpY19jYXN0PEVBdHRyaWJ1dGVUeXBlPihtX2F0dHJpYnV0ZVR5
cGUpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRUYXJnZXRBdHRyaWJ1dGUo
U1ZHRWxlbWVudCAqdGFyZ2V0LCBTdHJpbmdJbXBsICpuYW1lSW1wbCwgU3RyaW5nSW1wbCAqdmFs
dWUsIEVBdHRyaWJ1dGVUeXBlIHR5cGUpCit2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldFRh
cmdldEF0dHJpYnV0ZShTVkdFbGVtZW50KiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgRUF0dHJpYnV0ZVR5cGUgdHlwZSkKIHsKLSAgICBpZiAoIXRhcmdl
dCB8fCAhbmFtZUltcGwgfHwgIXZhbHVlKQorICAgIGlmICghdGFyZ2V0IHx8IG5hbWUuaXNOdWxs
KCkgfHwgdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBTdHJpbmcgbmFtZShu
YW1lSW1wbCk7CiAgICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVudCAqc3R5bGVkID0gTlVMTDsKLSAg
ICBpZiAodGFyZ2V0ICYmIHRhcmdldC0+aXNTdHlsZWQoKSkKLSAgICAgICAgc3R5bGVkID0gc3Rh
dGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCAqPih0YXJnZXQpOworICAgIFNWR1N0eWxlZEVsZW1l
bnQqIHN0eWxlZCA9ICh0YXJnZXQgJiYgdGFyZ2V0LT5pc1N0eWxlZCgpKSA/IHN0YXRpY19jYXN0
PFNWR1N0eWxlZEVsZW1lbnQqPih0YXJnZXQpIDogMDsKIAogICAgIEVBdHRyaWJ1dGVUeXBlIGF0
dHJpYnV0ZVR5cGUgPSB0eXBlOwotICAgIGlmICh0eXBlID09IEFUVFJJQlVURVRZUEVfQVVUTykK
LSAgICB7Ci0gICAgICAgIGF0dHJpYnV0ZVR5cGUgPSBBVFRSSUJVVEVUWVBFX1hNTDsKLQorICAg
IGlmICh0eXBlID09IEFUVFJJQlVURVRZUEVfQVVUTykgewogICAgICAgICAvLyBTcGVjOiBUaGUg
aW1wbGVtZW50YXRpb24gc2hvdWxkIG1hdGNoIHRoZSBhdHRyaWJ1dGVOYW1lIHRvIGFuIGF0dHJp
YnV0ZQogICAgICAgICAvLyBmb3IgdGhlIHRhcmdldCBlbGVtZW50LiBUaGUgaW1wbGVtZW50YXRp
b24gbXVzdCBmaXJzdCBzZWFyY2ggdGhyb3VnaCB0aGUKICAgICAgICAgLy8gbGlzdCBvZiBDU1Mg
cHJvcGVydGllcyBmb3IgYSBtYXRjaGluZyBwcm9wZXJ0eSBuYW1lLCBhbmQgaWYgbm9uZSBpcyBm
b3VuZCwKICAgICAgICAgLy8gc2VhcmNoIHRoZSBkZWZhdWx0IFhNTCBuYW1lc3BhY2UgZm9yIHRo
ZSBlbGVtZW50LgotICAgICAgICBpZiAoc3R5bGVkICYmIHN0eWxlZC0+c3R5bGUoKSkgewotICAg
ICAgICAgICAgaWYgKHN0eWxlZC0+c3R5bGUoKS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShuYW1lKSkK
LSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVUeXBlID0gQVRUUklCVVRFVFlQRV9DU1M7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKHN0eWxlZCAmJiBzdHlsZWQtPnN0eWxlKCkgJiYgc3R5bGVkLT5z
dHlsZSgpLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG5hbWUpKQorICAgICAgICAgICAgYXR0cmlidXRl
VHlwZSA9IEFUVFJJQlVURVRZUEVfQ1NTOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhdHRy
aWJ1dGVUeXBlID0gQVRUUklCVVRFVFlQRV9YTUw7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGlmIChhdHRyaWJ1dGVUeXBlID09IEFUVFJJQlVURVRZUEVfQ1NTICYmIHN0
eWxlZCAmJiBzdHlsZWQtPnN0eWxlKCkpCiAgICAgICAgIHN0eWxlZC0+c3R5bGUoKS0+c2V0UHJv
cGVydHkobmFtZSwgdmFsdWUsICIiLCBlYyk7CiAgICAgZWxzZSBpZiAoYXR0cmlidXRlVHlwZSA9
PSBBVFRSSUJVVEVUWVBFX1hNTCkKLSAgICAgICAgdGFyZ2V0LT5zZXRBdHRyaWJ1dGUobmFtZUlt
cGwsIHZhbHVlLCBlYyk7CisgICAgICAgIHRhcmdldC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVl
LCBlYyk7CiB9CiAKLURlcHJlY2F0ZWRTdHJpbmcgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXR0cmli
dXRlTmFtZSgpIGNvbnN0CitTdHJpbmcgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXR0cmlidXRlTmFt
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXR0cmlidXRlTmFtZTsKIH0KQEAgLTU3Nyw2ICs1
NjksOCBAQCBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzSW5kZWZpbml0ZShkCiAgICAgcmV0
dXJuICh2YWx1ZSA9PSBEQkxfTUFYKTsKIH0KIAorfQorCiAvLyB2aW06dHM9NDpub2V0CiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKIApJbmRleDoga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lv
biAxNjU1NykKKysrIGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDggKzIwLDggQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICov
CiAKLSNpZm5kZWYgS1NWR19TVkdBbmltYXRpb25FbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdf
U1ZHQW5pbWF0aW9uRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdBbmltYXRpb25FbGVtZW50X0gK
KyNkZWZpbmUgU1ZHQW5pbWF0aW9uRWxlbWVudF9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2lu
Y2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTgzLDcgKzgzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdBbmltYXRpb25FbGVtZW50
KCk7CiAKICAgICAgICAgLy8gJ1NWR0FuaW1hdGlvbkVsZW1lbnQnIGZ1bmN0aW9ucwotICAgICAg
ICBTVkdFbGVtZW50ICp0YXJnZXRFbGVtZW50KCkgY29uc3Q7CisgICAgICAgIFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCkBAIC05Mywy
NCArOTMsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBkb3VibGUgZ2V0U2ltcGxl
RHVyYXRpb24oRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKTsKLSAgICAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKikgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
KSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZVJlbmRlcmVy
KCk7CiAKICAgICAgICAgLy8gSGVscGVycwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlVGlt
ZXJFdmVudChkb3VibGUgdGltZVBlcmNlbnRhZ2UpID0gMDsKIAotICAgICAgICBkb3VibGUgcGFy
c2VDbG9ja1ZhbHVlKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJmRhdGEpIGNvbnN0OworICAgICAg
ICBkb3VibGUgcGFyc2VDbG9ja1ZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgICAg
IFN0cmluZyB0YXJnZXRBdHRyaWJ1dGUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRUYXJnZXRB
dHRyaWJ1dGUoU3RyaW5nSW1wbCAqdmFsdWUpOworICAgICAgICB2b2lkIHNldFRhcmdldEF0dHJp
YnV0ZShjb25zdCBTdHJpbmcmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBzZXRUYXJnZXRBdHRy
aWJ1dGUoU1ZHRWxlbWVudCAqdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbCAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZ0ltcGwgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUF0dHJpYnV0ZVR5cGUgdHlwZSA9IEFUVFJJQlVURVRZUEVfQVVUTyk7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIHNldFRhcmdldEF0dHJpYnV0ZShTVkdFbGVtZW50KiB0YXJnZXQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRUF0dHJpYnV0ZVR5cGUg
PSBBVFRSSUJVVEVUWVBFX0FVVE8pOwogCi0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgYXR0cmli
dXRlTmFtZSgpIGNvbnN0OworICAgICAgICBTdHJpbmcgYXR0cmlidXRlTmFtZSgpIGNvbnN0Owog
CiAgICAgICAgIGJvb2wgY29ubmVjdGVkKCkgY29uc3Q7CiAKQEAgLTEyNyw3ICsxMjQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNJbmRlZmluaXRlKGRvdWJsZSB2YWx1
ZSkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIG11dGFibGUgU1ZHRWxlbWVudCAq
bV90YXJnZXRFbGVtZW50OworICAgICAgICBtdXRhYmxlIFNWR0VsZW1lbnQqIG1fdGFyZ2V0RWxl
bWVudDsKIAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCkBAIC0xNDQsMTIgKzE0MSwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fYWNjdW11bGF0ZSA6IDE7IC8v
IEVBY2N1bXVsYXRlTW9kZQogICAgICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZVR5cGUgOiAyOyAv
LyBFQXR0cmlidXRlVHlwZQogICAgICAgICAKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBtX3Rv
OwotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIG1fYnk7Ci0gICAgICAgIERlcHJlY2F0ZWRTdHJp
bmcgbV9mcm9tOwotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIG1faHJlZjsKLSAgICAgICAgRGVw
cmVjYXRlZFN0cmluZyBtX3JlcGVhdER1cjsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBtX2F0
dHJpYnV0ZU5hbWU7CisgICAgICAgIFN0cmluZyBtX3RvOworICAgICAgICBTdHJpbmcgbV9ieTsK
KyAgICAgICAgU3RyaW5nIG1fZnJvbTsKKyAgICAgICAgU3RyaW5nIG1faHJlZjsKKyAgICAgICAg
U3RyaW5nIG1fcmVwZWF0RHVyOworICAgICAgICBTdHJpbmcgbV9hdHRyaWJ1dGVOYW1lOwogCiAg
ICAgICAgIGRvdWJsZSBtX21heDsKICAgICAgICAgZG91YmxlIG1fbWluOwpAQCAtMTY3LDYgKzE2
NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYgLy8gS1NWR19TVkdBbmltYXRpb25FbGVtZW50SW1w
bF9ICisjZW5kaWYgLy8gU1ZHQW5pbWF0aW9uRWxlbWVudF9ICiAKIC8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTU3KQorKysga3N2ZzIvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsMTIgKzM1MywxMCBAQCBTVkdNYXRy
aXggKlNWR1NWR0VsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiBTVkdNYXRyaXggKlNWR1NWR0VsZW1l
bnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7CiAgICAgU1ZHTWF0cml4ICptYXQgPSBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKTsKLSAgICBpZihtYXQpCi0gICAgewor
ICAgIGlmKG1hdCkgewogICAgICAgICBtYXQtPnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+
dmFsdWUoKSk7CiAKLSAgICAgICAgaWYoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZHTmFt
ZXM6OnZpZXdCb3hBdHRyKSkKLSAgICAgICAgeworICAgICAgICBpZiAoYXR0cmlidXRlcygpLT5n
ZXROYW1lZEl0ZW0oU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkgewogICAgICAgICAgICAgUmVmUHRy
PFNWR01hdHJpeD4gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFs
dWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOwogICAgICAgICAgICAgbWF0LT5tdWx0aXBseSh2aWV3
Qm94LmdldCgpKTsKICAgICAgICAgfQpAQCAtMzY5LDE1ICszNjcsMTAgQEAgU1ZHTWF0cml4ICpT
VkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKQogCiBSZW5kZXJPYmplY3QqIFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewot
ICAgIFJlbmRlclNWR0NvbnRhaW5lciAqcm9vdENvbnRhaW5lciA9IG5ldyAoYXJlbmEpIFJlbmRl
clNWR0NvbnRhaW5lcih0aGlzKTsKKyAgICBSZW5kZXJTVkdDb250YWluZXIqIHJvb3RDb250YWlu
ZXIgPSBuZXcgKGFyZW5hKSBSZW5kZXJTVkdDb250YWluZXIodGhpcyk7CiAKICAgICAvLyBGSVhN
RTogYWxsIHRoaXMgc2V0dXAgc2hvdWxkIGJlIGRvbmUgYWZ0ZXIgYXR0cmlidXRlc0NoYW5nZWQs
IG5vdCBoZXJlLgotICAgIGZsb2F0IF94ID0geCgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF95ID0g
eSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF93aWR0aCA9IHdpZHRoKCktPnZhbHVlKCk7Ci0gICAg
ZmxvYXQgX2hlaWdodCA9IGhlaWdodCgpLT52YWx1ZSgpOwotCi0gICAgcm9vdENvbnRhaW5lci0+
c2V0Vmlld3BvcnQoRmxvYXRSZWN0KF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0KSk7CisgICAgcm9v
dENvbnRhaW5lci0+c2V0Vmlld3BvcnQoRmxvYXRSZWN0KHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1
ZSgpLCB3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSkpOwogICAgIHJvb3RDb250
YWluZXItPnNldFZpZXdCb3godmlld0JveCgpKTsKICAgICByb290Q29udGFpbmVyLT5zZXRBbGln
bihLQ0FsaWduKHByZXNlcnZlQXNwZWN0UmF0aW8oKS0+YWxpZ24oKSAtIDEpKTsKICAgICByb290
Q29udGFpbmVyLT5zZXRTbGljZShwcmVzZXJ2ZUFzcGVjdFJhdGlvKCktPm1lZXRPclNsaWNlKCkg
PT0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX01FRVRPUlNMSUNFX1NMSUNFKTsKQEAgLTM4
NSw2ICszNzgsMTggQEAgUmVuZGVyT2JqZWN0KiBTVkdTVkdFbGVtZW50OjpjcmVhdGVSZW5kZQog
ICAgIHJldHVybiByb290Q29udGFpbmVyOwogfQogCit2b2lkIFNWR1NWR0VsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25z
KCktPmFkZFRpbWVDb250YWluZXIodGhpcyk7CisgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKK30KKwordm9pZCBTVkdTVkdFbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZW50KCkKK3sKKyAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25z
KCktPnJlbW92ZVRpbWVDb250YWluZXIodGhpcyk7CisgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxl
bWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOworfQorCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNl
dFpvb21BbmRQYW4odW5zaWduZWQgc2hvcnQgem9vbUFuZFBhbikKIHsKICAgICBTVkdab29tQW5k
UGFuOjpzZXRab29tQW5kUGFuKHpvb21BbmRQYW4pOwpJbmRleDoga3N2ZzIvc3ZnL1NWR1NWR0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lv
biAxNjU1NykKKysrIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMiw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVuZGVyU3R5bGUgKnN0
eWxlKTsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVu
dCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCiAgICAg
ICAgIC8vICd2aXJ0dWFsIFNWR1pvb21BbmRQYW4gZnVuY3Rpb25zCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRab29tQW5kUGFuKHVuc2lnbmVkIHNob3J0IHpvb21BbmRQYW4pOwpJbmRleDoga3N2
ZzIvc3ZnL1NWR1NldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdTZXRF
bGVtZW50LmNwcAkocmV2aXNpb24gMTY1NTcpCisrKyBrc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDggQEAgdm9pZCBTVkdTZXRFbGVtZW50Ojpo
YW5kbGVUaW1lckV2ZW50KGRvdQogCiAgICAgLy8gQ29tbWl0IGNoYW5nZSBub3cuLi4KICAgICBp
ZiAobV9zYXZlZFRvLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgYXR0cih0YXJnZXRBdHRy
aWJ1dGUoKSk7Ci0gICAgICAgIG1fc2F2ZWRUbyA9IGF0dHIuZGVwcmVjYXRlZFN0cmluZygpOwot
ICAgICAgICBzZXRUYXJnZXRBdHRyaWJ1dGUoU3RyaW5nKG1fdG8pLmltcGwoKSk7CisgICAgICAg
IG1fc2F2ZWRUbyA9IHRhcmdldEF0dHJpYnV0ZSgpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAg
ICAgc2V0VGFyZ2V0QXR0cmlidXRlKG1fdG8pOwogICAgIH0KIAogICAgIC8vIEVuZCBjb25kaXRp
b24uCkBAIC02NSw3ICs2NCw3IEBAIHZvaWQgU1ZHU2V0RWxlbWVudDo6aGFuZGxlVGltZXJFdmVu
dChkb3UKICAgICAgICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKIAogICAgICAgICBpZiAoIWlzRnJv
emVuKCkpCi0gICAgICAgICAgICBzZXRUYXJnZXRBdHRyaWJ1dGUoU3RyaW5nKG1fc2F2ZWRUbyku
aW1wbCgpKTsKKyAgICAgICAgICAgIHNldFRhcmdldEF0dHJpYnV0ZShtX3NhdmVkVG8pOwogCiAg
ICAgICAgIG1fc2F2ZWRUbyA9IERlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICB9CkluZGV4OiBrc3Zn
Mi9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHVVJJ
UmVmZXJlbmNlLmNwcAkocmV2aXNpb24gMTY1NTcpCisrKyBrc3ZnMi9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTYgKzUzLDE3IEBAIGJvb2wgU1ZHVVJJUmVm
ZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLURlcHJl
Y2F0ZWRTdHJpbmcgU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoY29uc3QgRGVwcmVjYXRlZFN0
cmluZyAmdXJsKQorU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGNvbnN0IFN0cmlu
ZyYgdXJsKQogewotICAgIGlmICh1cmwuc3RhcnRzV2l0aCgidXJsKCIpKSB7IC8vIFVSSSBSZWZl
cmVuY2VzLCBpZS4gZmlsbDp1cmwoI3RhcmdldCkKLSAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0
ID0gdXJsLmZpbmQoJyMnKSArIDE7Ci0gICAgICAgIHVuc2lnbmVkIGludCBlbmQgPSB1cmwuZmlu
ZFJldignKScpOworICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsRGVwcmVjYXRlZCA9IHVybC5kZXBy
ZWNhdGVkU3RyaW5nKCk7IC8vIEZJWE1FOiBOZWVkZWQgdW50aWwgZmluZFJldiBleGlzdHMgZm9y
IFN0cmluZworICAgIGlmICh1cmxEZXByZWNhdGVkLnN0YXJ0c1dpdGgoInVybCgiKSkgeyAvLyBV
UkkgUmVmZXJlbmNlcywgaWUuIGZpbGw6dXJsKCN0YXJnZXQpCisgICAgICAgIHVuc2lnbmVkIGlu
dCBzdGFydCA9IHVybERlcHJlY2F0ZWQuZmluZCgnIycpICsgMTsKKyAgICAgICAgdW5zaWduZWQg
aW50IGVuZCA9IHVybERlcHJlY2F0ZWQuZmluZFJldignKScpOwogCi0gICAgICAgIHJldHVybiB1
cmwubWlkKHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgIHJldHVybiB1cmxEZXByZWNhdGVk
Lm1pZChzdGFydCwgZW5kIC0gc3RhcnQpOwogICAgIH0gZWxzZSBpZiAodXJsLmZpbmQoJyMnKSA+
IC0xKSB7IC8vIGZvcm1hdCBpcyAjdGFyZ2V0CiAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydCA9
IHVybC5maW5kKCcjJykgKyAxOwotICAgICAgICByZXR1cm4gdXJsLm1pZChzdGFydCwgdXJsLmxl
bmd0aCgpIC0gc3RhcnQpOworICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZyhzdGFydCwgdXJs
Lmxlbmd0aCgpIC0gc3RhcnQpOwogICAgIH0gZWxzZSAvLyBOb3JtYWwgUmVmZXJlbmNlLCBpZS4g
c3R5bGU9ImNvbG9yLXByb2ZpbGU6Y2hhbmdlQ29sb3IiCiAgICAgICAgIHJldHVybiB1cmw7CiB9
CkluZGV4OiBrc3ZnMi9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIv
c3ZnL1NWR1VSSVJlZmVyZW5jZS5oCShyZXZpc2lvbiAxNjU1NykKKysrIGtzdmcyL3N2Zy9TVkdV
UklSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2lmZGVmIFNW
R19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiRGVwcmVjYXRl
ZFN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDEwICszNiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR1VSSVJlZmVyZW5jZSgpOwog
CiAgICAgICAgIC8vICdTVkdVUklSZWZlcmVuY2UnIGZ1bmN0aW9ucwotICAgICAgICBib29sIHBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7CisgICAgICAgIGJvb2wg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICAgICAgLy8gSGVs
cGVycwotICAgICAgICBzdGF0aWMgRGVwcmVjYXRlZFN0cmluZyBnZXRUYXJnZXQoY29uc3QgRGVw
cmVjYXRlZFN0cmluZyAmdXJsKTsKKyAgICAgICAgc3RhdGljIFN0cmluZyBnZXRUYXJnZXQoY29u
c3QgU3RyaW5nJiB1cmwpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgPSAwOwo=
</data>
<flag name="review"
          id="3541"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10754</attachid>
            <date>2006-09-25 05:45:12 -0700</date>
            <delta_ts>2006-09-25 05:45:12 -0700</delta_ts>
            <desc>A basic test case (which seems to fail, probably due to invalidation issues)</desc>
            <filename>basic-animatecolor.svg</filename>
            <type>image/svg+xml</type>
            <size>219</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBm
aWxsPSJyZWQiPgogICAgPGFuaW1hdGVDb2xvciBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBhdHRyaWJ1
dGVUeXBlPSJDU1MiIHZhbHVlcz0iZ3JlZW4iIC8+CiAgPC9yZWN0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10755</attachid>
            <date>2006-09-25 05:50:07 -0700</date>
            <delta_ts>2006-09-25 05:50:07 -0700</delta_ts>
            <desc>a more complicated example that does work (strange, eh?)</desc>
            <filename>basic-animatecolor.svg</filename>
            <type>image/svg+xml</type>
            <size>272</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBm
aWxsPSJyZWQiPgogICAgPGFuaW1hdGVDb2xvciBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBhdHRyaWJ1
dGVUeXBlPSJDU1MiIHZhbHVlcz0icmVkO2JsdWU7eWVsbG93O2dyZWVuO3JlZCIgZHVyPSI1cyIg
cmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KICA8L3JlY3Q+Cjwvc3ZnPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>