<?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>149230</bug_id>
          
          <creation_ts>2015-09-16 14:13:57 -0700</creation_ts>
          <short_desc>Implement scoped styling for shadow DOM</short_desc>
          <delta_ts>2015-09-28 00:50:54 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149187</dependson>
    
    <dependson>149353</dependson>
    
    <dependson>149446</dependson>
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>koivisto</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126459</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-16 14:13:57 -0700</bug_when>
    <thetext>Style rules defined or imported inside a shadow tree should only allow to nodes in that shadow tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126460</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-16 14:14:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/22727059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127869</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-21 18:12:27 -0700</bug_when>
    <thetext>*** Bug 149328 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128680</commentid>
    <comment_count>3</comment_count>
      <attachid>261918</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-25 01:08:46 -0700</bug_when>
    <thetext>Created attachment 261918
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128774</commentid>
    <comment_count>4</comment_count>
      <attachid>261939</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-25 14:28:07 -0700</bug_when>
    <thetext>Created attachment 261939
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128776</commentid>
    <comment_count>5</comment_count>
      <attachid>261939</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-25 14:32:40 -0700</bug_when>
    <thetext>Comment on attachment 261939
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=261939&amp;action=review

&gt; Source/WebCore/dom/ShadowRoot.cpp:84
&gt; +        // We could share style resolver with shadow roots that have identical style.

Should this be a FIXME?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128794</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-25 15:06:43 -0700</bug_when>
    <thetext>https://trac.webkit.org/r190256</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128853</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-25 23:16:31 -0700</bug_when>
    <thetext>There is a number of tests in platform/mac/TestExpectations that are marked as being tracked by a duplicate of this bug. Please unmark them if they are expected to pass now:

webkit.org/b/149328 fast/shadow-dom/css-scoping-shadow-host-rule.html [ ImageOnlyFailure ]
webkit.org/b/149328 fast/shadow-dom/css-scoping-shadow-host-functional-rule.html [ ImageOnlyFailure ]
webkit.org/b/149328 fast/shadow-dom/css-scoping-shadow-slotted-rule.html [ ImageOnlyFailure ]
webkit.org/b/149328 fast/shadow-dom/css-scoping-shadow-slot-display-override.html [ ImageOnlyFailure ]
webkit.org/b/149328 fast/shadow-dom/shadow-layout-after-slot-changes.html [ ImageOnlyFailure ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128858</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-25 23:41:58 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; There is a number of tests in platform/mac/TestExpectations that are marked
&gt; as being tracked by a duplicate of this bug. Please unmark them if they are
&gt; expected to pass now:
&gt; 
&gt; webkit.org/b/149328 fast/shadow-dom/css-scoping-shadow-host-rule.html [
&gt; ImageOnlyFailure ]
&gt; webkit.org/b/149328
&gt; fast/shadow-dom/css-scoping-shadow-host-functional-rule.html [
&gt; ImageOnlyFailure ]
&gt; webkit.org/b/149328 fast/shadow-dom/css-scoping-shadow-slotted-rule.html [
&gt; ImageOnlyFailure ]
&gt; webkit.org/b/149328
&gt; fast/shadow-dom/css-scoping-shadow-slot-display-override.html [
&gt; ImageOnlyFailure ]
&gt; webkit.org/b/149328 fast/shadow-dom/shadow-layout-after-slot-changes.html [
&gt; ImageOnlyFailure ]

Oh oops, these are tracked by different bugs. Will update soon.

Thanks for noticing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128977</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-28 00:50:54 -0700</bug_when>
    <thetext>Done that in https://trac.webkit.org/changeset/190275.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261918</attachid>
            <date>2015-09-25 01:08:46 -0700</date>
            <delta_ts>2015-09-25 14:28:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shadow-scoped-style.patch</filename>
            <type>text/plain</type>
            <size>19088</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA5LTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2NvcGVkIHN0
eWxpbmcgZm9yIHNoYWRvdyBET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctd2l0
aC1ydWxlcy1uby1sZWFrLmh0bWwKKworICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXMpOgorCisgICAgICAgICAgICBPbmx5IHVzZSBzcGVjaWFsIHBhdGggaGVyZSBm
b3IgdXNlciBhZ2VudCBzaGFkb3cgdHJlZXMuCisKKyAgICAgICAgKiBkb20vQXV0aG9yU3R5bGVT
aGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVldHM6OkF1dGhvclN0
eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhvclN0eWxlU2hlZXRzOjpyZW1vdmVQ
ZW5kaW5nU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVldHM6OnVwZGF0
ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKworICAgICAgICAgICAgQmFzaWMgc3VwcG9ydCBmb3IgU2hh
ZG93Um9vdCBzY29wZWQgc3R5bGVzaGVldHMuCisKKyAgICAgICAgKiBkb20vQXV0aG9yU3R5bGVT
aGVldHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhvclN0eWxlU2hlZXRzOjphY3RpdmVTdHls
ZVNoZWV0cyk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6On5JbmxpbmVTdHlsZVNoZWV0T3du
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXV0aG9yU3R5bGVTaGVldHNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpyZW1vdmVkRnJv
bURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6Y2xl
YXJEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVy
OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93
bmVyOjpjcmVhdGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3du
ZXI6OmlzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6
OnNoZWV0TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6
c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KToKKworICAgICAgICAgICAgQmFzaWMgc3VwcG9ydCBm
b3IgU2hhZG93Um9vdCBzY29wZWQgaW5saW5lIHN0eWxlc2hlZXRzLgorCisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVT
aGVldE93bmVyOjpzaGVldCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6c3R5bGVSZXNvbHZlcik6CisKKyAgICAgICAgICAgIENy
ZWF0ZSBhbmQgaW5pdGlhbGl6ZSBTaGFkb3dSb290IHNjb3BlZCBzdHlsZSByZXNvbHZlci4KKwor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVzZXRTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF1dGhvclN0eWxlU2hlZXRzKToKKworICAgICAgICAg
ICAgQ29sbGVjdGlvbiBvZiBhdXRob3Igc3R5bGVzaGVldHMgaW4gdGhlIHNoYWRvdyB0cmVlLgor
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojp1cGRhdGVTdHlsZSk6CisKKyAgICAgICAg
ICAgIFRyaWdnZXIgc3R5bGUgcmVjYWxjIHdoZW4gc3R5bGVzaGVldHMgY2hhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjbG9uZU5vZGUpOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpyZXNldFN0eWxlSW5oZXJp
dGFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZUVsZW1lbnQuaDoKKwogMjAxNS0wOS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBTdXBwb3J0IGNvbXBvc2l0ZWQgY29udGVu
dCBpbiBXZWJWaWV3IHJlbmRlci10by1jb250ZXh0IG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMTkwMTY4KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZWxlY3RvckNvbXBpbGVyLmgiCisjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0
eWxlZEVsZW1lbnQuaCIKIApAQCAtMTUyLDcgKzE1Myw4IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6OmNvbGxlY3RNYXRjaGkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0
KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5jdWVQc2V1ZG9SdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1
bGVSYW5nZSk7CiAjZW5kaWYKIAotICAgIGlmIChtX2VsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkg
eworICAgIGF1dG8qIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3Qo
KTsKKyAgICBpZiAoc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT50eXBlKCkgPT0gU2hhZG93Um9v
dDo6VHlwZTo6VXNlckFnZW50KSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHNldWRv
SWQgPSBtX2VsZW1lbnQuc2hhZG93UHNldWRvSWQoKTsKICAgICAgICAgaWYgKCFwc2V1ZG9JZC5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hS
ZXF1ZXN0LnJ1bGVTZXQtPnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZC5pbXBsKCkp
LCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQXV0
aG9yU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BdXRo
b3JTdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDE5MDE2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9BdXRob3JTdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0
eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAj
aW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCkBAIC01NCw4ICs1NSwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnM7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1BdXRob3JTdHlsZVNoZWV0czo6QXV0aG9yU3R5bGVTaGVl
dHMoVHJlZVNjb3BlJiB0cmVlU2NvcGUpCi0gICAgOiBtX2RvY3VtZW50KHRyZWVTY29wZS5kb2N1
bWVudFNjb3BlKCkpCitBdXRob3JTdHlsZVNoZWV0czo6QXV0aG9yU3R5bGVTaGVldHMoRG9jdW1l
bnQmIGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKK3sKK30KKworQXV0aG9y
U3R5bGVTaGVldHM6OkF1dGhvclN0eWxlU2hlZXRzKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCisg
ICAgOiBtX2RvY3VtZW50KHNoYWRvd1Jvb3QuZG9jdW1lbnRTY29wZSgpKQorICAgICwgbV9zaGFk
b3dSb290KCZzaGFkb3dSb290KQogewogfQogCkBAIC03OSw3ICs4NiwxMiBAQCB2b2lkIEF1dGhv
clN0eWxlU2hlZXRzOjpyZW1vdmVQZW5kaW5nU2hlCiAgICAgICAgIG1fZG9jdW1lbnQuc2V0TmVl
ZHNOb3RpZnlSZW1vdmVBbGxQZW5kaW5nU3R5bGVzaGVldCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCisgICAgaWYgKG1fc2hhZG93Um9vdCkgeworICAgICAgICBtX3NoYWRvd1Jv
b3QtPnVwZGF0ZVN0eWxlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2RvY3Vt
ZW50LmRpZFJlbW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0KCk7CiB9CiAKQEAgLTI5OSw5ICszMTEs
MTIgQEAgYm9vbCBBdXRob3JTdHlsZVNoZWV0czo6dXBkYXRlQWN0aXZlU3R5bAogICAgIGJvb2wg
cmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7CiAgICAgYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UodXBk
YXRlRmxhZywgYWN0aXZlQ1NTU3R5bGVTaGVldHMsIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCBy
ZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAKLSAgICBpZiAoc3R5bGVSZXNvbHZlclVwZGF0ZVR5
cGUgPT0gUmVjb25zdHJ1Y3QpCi0gICAgICAgIG1fZG9jdW1lbnQuY2xlYXJTdHlsZVJlc29sdmVy
KCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID09IFJlY29u
c3RydWN0KSB7CisgICAgICAgIGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAgICAgICBtX3NoYWRv
d1Jvb3QtPnJlc2V0U3R5bGVSZXNvbHZlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2RvY3VtZW50LmNsZWFyU3R5bGVSZXNvbHZlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIgPSBtX2RvY3VtZW50LmVuc3VyZVN0eWxlUmVzb2x2
ZXIoKTsKICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID09IFJlc2V0KSB7CiAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLnJ1bGVTZXRzKCkucmVzZXRBdXRob3JTdHlsZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hlZXRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hlZXRzLmgJKHJldmlzaW9uIDE5MDE2
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdXRob3JTdHlsZVNoZWV0cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxMiArNDUsMTQgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBj
bGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKK2NsYXNzIFNo
YWRvd1Jvb3Q7CiBjbGFzcyBUcmVlU2NvcGU7CiAKIGNsYXNzIEF1dGhvclN0eWxlU2hlZXRzIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdXRo
b3JTdHlsZVNoZWV0cyhUcmVlU2NvcGUmKTsKKyAgICBleHBsaWNpdCBBdXRob3JTdHlsZVNoZWV0
cyhEb2N1bWVudCYpOworICAgIGV4cGxpY2l0IEF1dGhvclN0eWxlU2hlZXRzKFNoYWRvd1Jvb3Qm
KTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBhY3RpdmVTdHls
ZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU3R5bGVTaGVldHM7IH0KIApAQCAtMTA3
LDYgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbmFseXplU3R5bGVTaGVldENoYW5nZShV
cGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgbmV3U3R5bGVz
aGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlJiwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVS
ZWNhbGMpOwogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgU2hhZG93Um9vdCogbV9z
aGFkb3dSb290IHsgbnVsbHB0ciB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4g
bV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4+IG1fYWN0aXZlU3R5bGVTaGVldHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAkocmV2aXNpb24gMTkwMTY5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCisj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgog
I2luY2x1ZGUgIlRleHROb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgpAQCAtNDYsOSArNDcsMTUgQEAgSW5saW5lU3R5bGVTaGVldE93bmVyOjp+SW5s
aW5lU3R5bGVTaGVldAogewogfQogCi12b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50KQorc3Rh
dGljIEF1dGhvclN0eWxlU2hlZXRzJiBhdXRob3JTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCkKIHsKLSAgICBkb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmFkZFN0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlKGVsZW1lbnQsIG1faXNQYXJzaW5nQ2hpbGRyZW4pOworICAgIGF1
dG8qIHNoYWRvd1Jvb3QgPSBlbGVtZW50LmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CisgICAgcmV0
dXJuIHNoYWRvd1Jvb3QgPyBzaGFkb3dSb290LT5hdXRob3JTdHlsZVNoZWV0cygpIDogZWxlbWVu
dC5kb2N1bWVudCgpLmF1dGhvclN0eWxlU2hlZXRzKCk7Cit9CisKK3ZvaWQgSW5saW5lU3R5bGVT
aGVldE93bmVyOjppbnNlcnRlZEludG9Eb2N1bWVudChEb2N1bWVudCYsIEVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgYXV0aG9yU3R5bGVTaGVldHNGb3JFbGVtZW50KGVsZW1lbnQpLmFkZFN0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlKGVsZW1lbnQsIG1faXNQYXJzaW5nQ2hpbGRyZW4pOwogCiAgICAg
aWYgKG1faXNQYXJzaW5nQ2hpbGRyZW4pCiAgICAgICAgIHJldHVybjsKQEAgLTU3LDcgKzY0LDcg
QEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6Omluc2VydGVkSW50bwogCiB2b2lkIElubGlu
ZVN0eWxlU2hlZXRPd25lcjo6cmVtb3ZlZEZyb21Eb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQs
IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5y
ZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShlbGVtZW50KTsKKyAgICBhdXRob3JTdHlsZVNo
ZWV0c0ZvckVsZW1lbnQoZWxlbWVudCkucmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoZWxl
bWVudCk7CiAKICAgICBpZiAobV9zaGVldCkKICAgICAgICAgY2xlYXJTaGVldCgpOwpAQCAtNjcs
MTQgKzc0LDE0IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpyZW1vdmVkRnJvbUQKICAg
ICAgICAgZG9jdW1lbnQuc3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiB9
CiAKLXZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhckRvY3VtZW50RGF0YShEb2N1bWVu
dCYgZG9jdW1lbnQsIEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIElubGluZVN0eWxlU2hlZXRPd25l
cjo6Y2xlYXJEb2N1bWVudERhdGEoRG9jdW1lbnQmLCBFbGVtZW50JiBlbGVtZW50KQogewogICAg
IGlmIChtX3NoZWV0KQogICAgICAgICBtX3NoZWV0LT5jbGVhck93bmVyTm9kZSgpOwogCiAgICAg
aWYgKCFlbGVtZW50LmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50
LmF1dGhvclN0eWxlU2hlZXRzKCkucmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoZWxlbWVu
dCk7CisgICAgYXV0aG9yU3R5bGVTaGVldHNGb3JFbGVtZW50KGVsZW1lbnQpLnJlbW92ZVN0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlKGVsZW1lbnQpOwogfQogCiB2b2lkIElubGluZVN0eWxlU2hlZXRP
d25lcjo6Y2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0xMzgsNyArMTQ1LDcg
QEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KAogICAgIGlmICghc2Ny
ZWVuRXZhbC5ldmFsKG1lZGlhUXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsKG1lZGlh
UXVlcmllcy5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRvY3VtZW50LmF1dGhvclN0
eWxlU2hlZXRzKCkuYWRkUGVuZGluZ1NoZWV0KCk7CisgICAgYXV0aG9yU3R5bGVTaGVldHNGb3JF
bGVtZW50KGVsZW1lbnQpLmFkZFBlbmRpbmdTaGVldCgpOwogCiAgICAgbV9sb2FkaW5nID0gdHJ1
ZTsKIApAQCAtMTYwLDE4ICsxNjcsMTggQEAgYm9vbCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6Omlz
TG9hZGluZygpIAogICAgIHJldHVybiBtX3NoZWV0ICYmIG1fc2hlZXQtPmlzTG9hZGluZygpOwog
fQogCi1ib29sIElubGluZVN0eWxlU2hlZXRPd25lcjo6c2hlZXRMb2FkZWQoRG9jdW1lbnQmIGRv
Y3VtZW50KQorYm9vbCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OnNoZWV0TG9hZGVkKEVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBkb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLnJlbW92ZVBlbmRpbmdTaGVldCgp
OworICAgIGF1dGhvclN0eWxlU2hlZXRzRm9yRWxlbWVudChlbGVtZW50KS5yZW1vdmVQZW5kaW5n
U2hlZXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3du
ZXI6OnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldChEb2N1bWVudCYgZG9jdW1lbnQpCit2b2lkIElu
bGluZVN0eWxlU2hlZXRPd25lcjo6c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KEVsZW1lbnQmIGVs
ZW1lbnQpCiB7Ci0gICAgZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMoKS5hZGRQZW5kaW5nU2hl
ZXQoKTsKKyAgICBhdXRob3JTdHlsZVNoZWV0c0ZvckVsZW1lbnQoZWxlbWVudCkuYWRkUGVuZGlu
Z1NoZWV0KCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNo
ZWV0T3duZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmgJKHJldmlzaW9uIDE5MDE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCBwdWJs
aWM6CiAgICAgQ1NTU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0Lmdl
dCgpOyB9CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwotICAgIGJvb2wgc2hlZXRMb2Fk
ZWQoRG9jdW1lbnQmKTsKLSAgICB2b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldChEb2N1bWVu
dCYpOworICAgIGJvb2wgc2hlZXRMb2FkZWQoRWxlbWVudCYpOworICAgIHZvaWQgc3RhcnRMb2Fk
aW5nRHluYW1pY1NoZWV0KEVsZW1lbnQmKTsKIAogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoRG9jdW1lbnQmLCBFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KERv
Y3VtZW50JiwgRWxlbWVudCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2
aXNpb24gMTkwMTY4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgogCisjaW5jbHVkZSAiQXV0aG9yU3R5bGVTaGVldHMuaCIKKyNpbmNs
dWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAt
NDAsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2FtZVNpemVBc1NoYWRv
d1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSB7CiAgICAg
dW5zaWduZWQgY291bnRlcnNBbmRGbGFnc1sxXTsKICAgICB2b2lkKiBzdHlsZVJlc29sdmVyOwor
ICAgIHZvaWQqIGF1dGhvclN0eWxlU2hlZXRzOwogICAgIHZvaWQqIGhvc3Q7CiAjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgdm9pZCogc2xvdEFzc2lnbm1lbnQ7CkBAIC03MywxMCArNzYsNDIg
QEAgU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQogCiBTdHlsZVJlc29sdmVyJiBTaGFkb3dSb290
OjpzdHlsZVJlc29sdmVyKCkKIHsKLSAgICBpZiAobV9zdHlsZVJlc29sdmVyKQotICAgICAgICBy
ZXR1cm4gKm1fc3R5bGVSZXNvbHZlcjsKKyAgICAvLyBGSVhNRTogVXNlIGlzb2xhdGVkIHN0eWxl
IHJlc29sdmVyIGZvciB1c2VyIGFnZW50IHNoYWRvdyByb290cy4KKyAgICBpZiAobV90eXBlID09
IFR5cGU6OlVzZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCkuZW5zdXJlU3R5bGVS
ZXNvbHZlcigpOworCisgICAgaWYgKCFtX3N0eWxlUmVzb2x2ZXIpIHsKKyAgICAgICAgLy8gV2Ug
Y291bGQgc2hhcmUgc3R5bGUgcmVzb2x2ZXIgd2l0aCBzaGFkb3cgcm9vdHMgdGhhdCBoYXZlIGlk
ZW50aWNhbCBzdHlsZS4KKyAgICAgICAgbV9zdHlsZVJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxTdHlsZVJlc29sdmVyPihkb2N1bWVudCgpLCB0cnVlKTsKKyAgICAgICAgaWYgKG1fYXV0aG9y
U3R5bGVTaGVldHMpCisgICAgICAgICAgICBtX3N0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0
eWxlU2hlZXRzKDAsIG1fYXV0aG9yU3R5bGVTaGVldHMtPmFjdGl2ZVN0eWxlU2hlZXRzKCkpOwor
ICAgIH0KKyAgICByZXR1cm4gKm1fc3R5bGVSZXNvbHZlcjsKK30KKwordm9pZCBTaGFkb3dSb290
OjpyZXNldFN0eWxlUmVzb2x2ZXIoKQoreworICAgIG1fc3R5bGVSZXNvbHZlciA9IG51bGxwdHI7
Cit9CisKK0F1dGhvclN0eWxlU2hlZXRzJiBTaGFkb3dSb290OjphdXRob3JTdHlsZVNoZWV0cygp
Cit7CisgICAgaWYgKCFtX2F1dGhvclN0eWxlU2hlZXRzKQorICAgICAgICBtX2F1dGhvclN0eWxl
U2hlZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxBdXRob3JTdHlsZVNoZWV0cz4oKnRoaXMpOworICAg
IHJldHVybiAqbV9hdXRob3JTdHlsZVNoZWV0czsKK30KKwordm9pZCBTaGFkb3dSb290Ojp1cGRh
dGVTdHlsZSgpCit7CisgICAgYm9vbCBzaG91bGRSZWNhbGNTdHlsZSA9IGZhbHNlOworCisgICAg
aWYgKG1fYXV0aG9yU3R5bGVTaGVldHMpIHsKKyAgICAgICAgLy8gRklYTUU6IE1ha2Ugb3B0aW1p
emVkIHVwZGF0ZWQgd29yay4KKyAgICAgICAgc2hvdWxkUmVjYWxjU3R5bGUgPSBtX2F1dGhvclN0
eWxlU2hlZXRzLT51cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhBdXRob3JTdHlsZVNoZWV0czo6RnVs
bFVwZGF0ZSk7CisgICAgfQogCi0gICAgcmV0dXJuIGRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNv
bHZlcigpOworICAgIGlmIChzaG91bGRSZWNhbGNTdHlsZSkKKyAgICAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYygpOwogfQogCiBQYXNzUmVmUHRyPE5vZGU+IFNoYWRvd1Jvb3Q6OmNsb25lTm9kZShi
b29sLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAkocmV2
aXNpb24gMTkwMTY4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEF1dGhvclN0eWxlU2hlZXRzOwogY2xhc3MgQ29udGVudERpc3RyaWJ1dG9yOwogY2xhc3MgSFRN
TFNsb3RFbGVtZW50OwogY2xhc3MgU2xvdEFzc2lnbm1lbnQ7CkBAIC01Niw2ICs1NywxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U2hhZG93Um9vdCgpOwogCiAgICAgU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcigpOworICAgIEF1dGhvclN0eWxlU2hlZXRzJiBhdXRob3JTdHlsZVNoZWV0
cygpOworICAgIAorICAgIHZvaWQgdXBkYXRlU3R5bGUoKTsKKyAgICB2b2lkIHJlc2V0U3R5bGVS
ZXNvbHZlcigpOwogCiAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsgfQogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUlu
aGVyaXRhbmNlKGJvb2wpOwpAQCAtMTAyLDEyICsxMDcsMTMgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOwogICAgIFR5cGUgbV90eXBlOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFN0eWxlUmVzb2x2ZXI+IG1fc3R5bGVSZXNvbHZlcjsKLQogICAgIEVsZW1lbnQq
IG1faG9zdDsKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
bG90QXNzaWdubWVudD4gbV9zbG90QXNzaWdubWVudHM7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3R5bGVSZXNvbHZlcj4gbV9zdHlsZVJlc29sdmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRo
b3JTdHlsZVNoZWV0cz4gbV9hdXRob3JTdHlsZVNoZWV0czsKICNlbmRpZgogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgJKHJldmlzaW9uIDE5MDE2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw5ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdD
aGlsZHJlbigpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVy
biBtX3N0eWxlU2hlZXRPd25lci5pc0xvYWRpbmcoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaGVl
dExvYWRlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5bGVTaGVldE93bmVyLnNoZWV0TG9hZGVk
KGRvY3VtZW50KCkpOyB9CisgICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zdHlsZVNoZWV0T3duZXIuc2hlZXRMb2FkZWQoKnRoaXMpOyB9CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9v
bCBlcnJvck9jY3VycmVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KCkgb3ZlcnJpZGUgeyBtX3N0eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdE
eW5hbWljU2hlZXQoZG9jdW1lbnQoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KCkgb3ZlcnJpZGUgeyBtX3N0eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdE
eW5hbWljU2hlZXQoKnRoaXMpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAkocmV2aXNpb24gMTkwMTY4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4
ICs1OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVTaGVldE93bmVyLmlzTG9hZGluZygpOyB9Ci0gICAgdmlydHVhbCBib29sIHNo
ZWV0TG9hZGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHlsZVNoZWV0T3duZXIuc2hlZXRMb2Fk
ZWQoZG9jdW1lbnQoKSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1No
ZWV0KCkgb3ZlcnJpZGUgeyBtX3N0eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdEeW5hbWljU2hl
ZXQoZG9jdW1lbnQoKSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKSBvdmVycmlk
ZSB7IHJldHVybiBtX3N0eWxlU2hlZXRPd25lci5zaGVldExvYWRlZCgqdGhpcyk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCkgb3ZlcnJpZGUgeyBtX3N0eWxl
U2hlZXRPd25lci5zdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKnRoaXMpOyB9CiAgICAgdmlydHVh
bCBUaW1lciogc3ZnTG9hZEV2ZW50VGltZXIoKSBvdmVycmlkZSB7IHJldHVybiAmbV9zdmdMb2Fk
RXZlbnRUaW1lcjsgfQogCiAgICAgSW5saW5lU3R5bGVTaGVldE93bmVyIG1fc3R5bGVTaGVldE93
bmVyOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjM3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDktMjUgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBzY29wZWQgc3R5bGlu
ZyBmb3Igc2hhZG93IERPTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5MjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMt
bm8tbGVhay1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20v
Y3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMtbm8tbGVhay5odG1sOiBBZGRlZC4KKworICAg
ICAgICAgICAgQWRkIGEgdGVzdCB0aGF0IHZlcmlmaWVzIHRoYXQgc2hhZG93IERPTSBzdHlsZSBk
b2Vzbid0IGFmZmVjdCBub3JtYWwgRE9NLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnM6CisKKyAgICAgICAgICAgIEVuYWJsZSBmYXN0L3NoYWRvdy1kb20vY3NzLXNj
b3Bpbmctc2hhZG93LXdpdGgtcnVsZXMuaHRtbAorCiAyMDE1LTA5LTI0ICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGlzIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciB0
aGlzIHJvbGxvdXQ6IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29w
aW5nLXNoYWRvdy13aXRoLXJ1bGVzLW5vLWxlYWstZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVs
ZXMtbm8tbGVhay1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy13aXRoLXJ1bGVzLW5vLWxlYWstZXhwZWN0
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEw
MHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6
IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5n
LXNoYWRvdy13aXRoLXJ1bGVzLW5vLWxlYWsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMtbm8tbGVhay5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29w
aW5nLXNoYWRvdy13aXRoLXJ1bGVzLW5vLWxlYWsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPkNT
UyBTY29waW5nIC0gYSBzdHlsZSBydWxlIGluc2lkZSBhIHNoYWRvdyB0cmVlIGRvZXNuJ3QgYWZm
ZWN0IHRoZSBub3JtYWwgZG9tPC90aXRsZT4KKyAgICA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9
IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciLz4KKyAgICA8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI3Nl
bGVjdG9ycy1kYXRhLW1vZGVsIj4KKyAgICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJyZWZlcmVu
Y2UvZ3JlZW4tYm94Lmh0bWwiLz4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzdHlsZT4KKyAgICBt
eS1ob3N0IHsKKyAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgfQorICAgIGRpdiB7CisgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dy
b3VuZDogZ3JlZW47CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA8L3N0eWxlPgor
ICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3Jl
ZW4gYm94IGJlbG93LjwvcD4gCisgICAgPG15LWhvc3Q+CisgICAgPC9teS1ob3N0PgorICAgIDxk
aXY+RkFJTDwvZGl2PgorICAgIDxzY3JpcHQ+CisKKyAgICB0cnkgeworICAgICAgICB2YXIgc2hh
ZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ215LWhvc3QnKTsKKyAgICAgICAgc2hh
ZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICAg
ICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHN0eWxlPiBkaXYgeyBiYWNrZ3JvdW5kOiByZWQ7
IH0gPC9zdHlsZT4nOworICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGV4Y2VwdGlvbikpOwor
ICAgIH0KKworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5MDE2OCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzAzLDcgKzEzMDMsNiBAQCB3ZWJraXQub3JnL2IvMTQzMjU4IFsgTWF2ZXJpY2tzIF0gaHR0
cC90CiB3ZWJraXQub3JnL2IvMTQ5MTI4IGZhc3QvdGV4dC9jb250cm9sLWNoYXJhY3RlcnMgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE0ODY5NSBmYXN0L3NoYWRvdy1kb20g
WyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNDkzMjggZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5n
LXNoYWRvdy13aXRoLXJ1bGVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xNDkzMjggZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1ob3N0LXJ1bGUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE0OTMyOCBmYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtZnVuY3Rpb25hbC1ydWxlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNDkzMjggZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29w
aW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261939</attachid>
            <date>2015-09-25 14:28:07 -0700</date>
            <delta_ts>2015-09-25 14:32:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shadow-scoped-style-2.patch</filename>
            <type>text/plain</type>
            <size>19120</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDI1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA5LTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2NvcGVkIHN0
eWxpbmcgZm9yIHNoYWRvdyBET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctd2l0
aC1ydWxlcy1uby1sZWFrLmh0bWwKKworICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXMpOgorCisgICAgICAgICAgICBPbmx5IHVzZSBzcGVjaWFsIHBhdGggaGVyZSBm
b3IgdXNlciBhZ2VudCBzaGFkb3cgdHJlZXMuCisKKyAgICAgICAgKiBkb20vQXV0aG9yU3R5bGVT
aGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVldHM6OkF1dGhvclN0
eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhvclN0eWxlU2hlZXRzOjpyZW1vdmVQ
ZW5kaW5nU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aG9yU3R5bGVTaGVldHM6OnVwZGF0
ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKworICAgICAgICAgICAgQmFzaWMgc3VwcG9ydCBmb3IgU2hh
ZG93Um9vdCBzY29wZWQgc3R5bGVzaGVldHMuCisKKyAgICAgICAgKiBkb20vQXV0aG9yU3R5bGVT
aGVldHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhvclN0eWxlU2hlZXRzOjphY3RpdmVTdHls
ZVNoZWV0cyk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6On5JbmxpbmVTdHlsZVNoZWV0T3du
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXV0aG9yU3R5bGVTaGVldHNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpyZW1vdmVkRnJv
bURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6Y2xl
YXJEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVy
OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93
bmVyOjpjcmVhdGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3du
ZXI6OmlzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6
OnNoZWV0TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6
c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KToKKworICAgICAgICAgICAgQmFzaWMgc3VwcG9ydCBm
b3IgU2hhZG93Um9vdCBzY29wZWQgaW5saW5lIHN0eWxlc2hlZXRzLgorCisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVT
aGVldE93bmVyOjpzaGVldCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6c3R5bGVSZXNvbHZlcik6CisKKyAgICAgICAgICAgIENy
ZWF0ZSBhbmQgaW5pdGlhbGl6ZSBTaGFkb3dSb290IHNjb3BlZCBzdHlsZSByZXNvbHZlci4KKwor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVzZXRTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF1dGhvclN0eWxlU2hlZXRzKToKKworICAgICAgICAg
ICAgQ29sbGVjdGlvbiBvZiBhdXRob3Igc3R5bGVzaGVldHMgaW4gdGhlIHNoYWRvdyB0cmVlLgor
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojp1cGRhdGVTdHlsZSk6CisKKyAgICAgICAg
ICAgIFRyaWdnZXIgc3R5bGUgcmVjYWxjIHdoZW4gc3R5bGVzaGVldHMgY2hhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjbG9uZU5vZGUpOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpyZXNldFN0eWxlSW5oZXJp
dGFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZUVsZW1lbnQuaDoKKwogMjAxNS0wOS0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzc1JlZlB0cjw+IHRvIFJlZlB0cjw+IGNvbnZlcnNp
b24gaW4gbGVnYWN5IEluZGV4ZWREQiBjb2RlLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCShyZXZpc2lvbiAxOTAyNTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ29tcGlsZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVu
dC5oIgogCkBAIC0xNTIsNyArMTUzLDggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29s
bGVjdE1hdGNoaQogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1
ZXN0LnJ1bGVTZXQtPmN1ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsK
ICNlbmRpZgogCi0gICAgaWYgKG1fZWxlbWVudC5pc0luU2hhZG93VHJlZSgpKSB7CisgICAgYXV0
byogc2hhZG93Um9vdCA9IG1fZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOworICAgIGlm
IChzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3QtPnR5cGUoKSA9PSBTaGFkb3dSb290OjpUeXBlOjpV
c2VyQWdlbnQpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwc2V1ZG9JZCA9IG1fZWxl
bWVudC5zaGFkb3dQc2V1ZG9JZCgpOwogICAgICAgICBpZiAoIXBzZXVkb0lkLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVs
ZVNldC0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIG1hdGNoUmVx
dWVzdCwgcnVsZVJhbmdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BdXRob3JTdHlsZVNo
ZWV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hl
ZXRzLmNwcAkocmV2aXNpb24gMTkwMjUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0
eWxlU2hlZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVJbnZhbGlk
YXRpb25BbmFseXNpcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJT
dHlsZVNoZWV0Q29udGVudHMuaCIKQEAgLTU0LDggKzU1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHVzaW5nIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9uczsKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLUF1dGhvclN0eWxlU2hlZXRzOjpBdXRob3JTdHlsZVNoZWV0cyhUcmVlU2Nv
cGUmIHRyZWVTY29wZSkKLSAgICA6IG1fZG9jdW1lbnQodHJlZVNjb3BlLmRvY3VtZW50U2NvcGUo
KSkKK0F1dGhvclN0eWxlU2hlZXRzOjpBdXRob3JTdHlsZVNoZWV0cyhEb2N1bWVudCYgZG9jdW1l
bnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQoreworfQorCitBdXRob3JTdHlsZVNoZWV0
czo6QXV0aG9yU3R5bGVTaGVldHMoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKKyAgICA6IG1fZG9j
dW1lbnQoc2hhZG93Um9vdC5kb2N1bWVudFNjb3BlKCkpCisgICAgLCBtX3NoYWRvd1Jvb3QoJnNo
YWRvd1Jvb3QpCiB7CiB9CiAKQEAgLTc5LDcgKzg2LDEyIEBAIHZvaWQgQXV0aG9yU3R5bGVTaGVl
dHM6OnJlbW92ZVBlbmRpbmdTaGUKICAgICAgICAgbV9kb2N1bWVudC5zZXROZWVkc05vdGlmeVJl
bW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKKyAgICBpZiAobV9zaGFkb3dSb290KSB7CisgICAgICAgIG1fc2hhZG93Um9vdC0+dXBkYXRl
U3R5bGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fZG9jdW1lbnQuZGlkUmVt
b3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQoKTsKIH0KIApAQCAtMjk5LDkgKzMxMSwxMiBAQCBib29s
IEF1dGhvclN0eWxlU2hlZXRzOjp1cGRhdGVBY3RpdmVTdHlsCiAgICAgYm9vbCByZXF1aXJlc0Z1
bGxTdHlsZVJlY2FsYzsKICAgICBhbmFseXplU3R5bGVTaGVldENoYW5nZSh1cGRhdGVGbGFnLCBh
Y3RpdmVDU1NTdHlsZVNoZWV0cywgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIHJlcXVpcmVzRnVs
bFN0eWxlUmVjYWxjKTsKIAotICAgIGlmIChzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9PSBSZWNv
bnN0cnVjdCkKLSAgICAgICAgbV9kb2N1bWVudC5jbGVhclN0eWxlUmVzb2x2ZXIoKTsKLSAgICBl
bHNlIHsKKyAgICBpZiAoc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPT0gUmVjb25zdHJ1Y3QpIHsK
KyAgICAgICAgaWYgKG1fc2hhZG93Um9vdCkKKyAgICAgICAgICAgIG1fc2hhZG93Um9vdC0+cmVz
ZXRTdHlsZVJlc29sdmVyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZG9jdW1lbnQu
Y2xlYXJTdHlsZVJlc29sdmVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1lbnQuZW5zdXJlU3R5bGVSZXNvbHZlcigpOwogICAg
ICAgICBpZiAoc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPT0gUmVzZXQpIHsKICAgICAgICAgICAg
IHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKS5yZXNldEF1dGhvclN0eWxlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQXV0aG9yU3R5bGVTaGVldHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQXV0aG9yU3R5bGVTaGVldHMuaAkocmV2aXNpb24gMTkwMjUwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0F1dGhvclN0eWxlU2hlZXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDEyICs0NSwxNCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxl
U2hlZXRDb250ZW50czsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OworY2xhc3MgU2hhZG93Um9vdDsK
IGNsYXNzIFRyZWVTY29wZTsKIAogY2xhc3MgQXV0aG9yU3R5bGVTaGVldHMgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEF1dGhvclN0eWxlU2hl
ZXRzKFRyZWVTY29wZSYpOworICAgIGV4cGxpY2l0IEF1dGhvclN0eWxlU2hlZXRzKERvY3VtZW50
Jik7CisgICAgZXhwbGljaXQgQXV0aG9yU3R5bGVTaGVldHMoU2hhZG93Um9vdCYpOwogCiAgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIGFjdGl2ZVN0eWxlU2hlZXRzKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVTdHlsZVNoZWV0czsgfQogCkBAIC0xMDcsNiArMTA5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywgU3R5
bGVSZXNvbHZlclVwZGF0ZVR5cGUmLCBib29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAK
ICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3Qg
eyBudWxscHRyIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiBtX3N0eWxlU2hl
ZXRzRm9yU3R5bGVTaGVldExpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4g
bV9hY3RpdmVTdHlsZVNoZWV0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVT
dHlsZVNoZWV0T3duZXIuY3BwCShyZXZpc2lvbiAxOTAyNTApCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0
b3IuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAi
VGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CkBAIC00Niw5ICs0NywxNSBAQCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6On5JbmxpbmVTdHlsZVNo
ZWV0CiB7CiB9CiAKLXZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjppbnNlcnRlZEludG9Eb2N1
bWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgQXV0aG9y
U3R5bGVTaGVldHMmIGF1dGhvclN0eWxlU2hlZXRzRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
KQogewotICAgIGRvY3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkuYWRkU3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGUoZWxlbWVudCwgbV9pc1BhcnNpbmdDaGlsZHJlbik7CisgICAgYXV0byogc2hhZG93
Um9vdCA9IGVsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsKKyAgICByZXR1cm4gc2hhZG93
Um9vdCA/IHNoYWRvd1Jvb3QtPmF1dGhvclN0eWxlU2hlZXRzKCkgOiBlbGVtZW50LmRvY3VtZW50
KCkuYXV0aG9yU3R5bGVTaGVldHMoKTsKK30KKwordm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6
Omluc2VydGVkSW50b0RvY3VtZW50KERvY3VtZW50JiwgRWxlbWVudCYgZWxlbWVudCkKK3sKKyAg
ICBhdXRob3JTdHlsZVNoZWV0c0ZvckVsZW1lbnQoZWxlbWVudCkuYWRkU3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGUoZWxlbWVudCwgbV9pc1BhcnNpbmdDaGlsZHJlbik7CiAKICAgICBpZiAobV9pc1Bh
cnNpbmdDaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwpAQCAtNTcsNyArNjQsNyBAQCB2b2lkIElu
bGluZVN0eWxlU2hlZXRPd25lcjo6aW5zZXJ0ZWRJbnRvCiAKIHZvaWQgSW5saW5lU3R5bGVTaGVl
dE93bmVyOjpyZW1vdmVkRnJvbURvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCwgRWxlbWVudCYg
ZWxlbWVudCkKIHsKLSAgICBkb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLnJlbW92ZVN0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlKGVsZW1lbnQpOworICAgIGF1dGhvclN0eWxlU2hlZXRzRm9yRWxl
bWVudChlbGVtZW50KS5yZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShlbGVtZW50KTsKIAog
ICAgIGlmIChtX3NoZWV0KQogICAgICAgICBjbGVhclNoZWV0KCk7CkBAIC02NywxNCArNzQsMTQg
QEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OnJlbW92ZWRGcm9tRAogICAgICAgICBkb2N1
bWVudC5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAotdm9pZCBJ
bmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyRG9jdW1lbnREYXRhKERvY3VtZW50JiBkb2N1bWVu
dCwgRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhckRv
Y3VtZW50RGF0YShEb2N1bWVudCYsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fc2hl
ZXQpCiAgICAgICAgIG1fc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CiAKICAgICBpZiAoIWVsZW1l
bnQuaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1lbnQuYXV0aG9yU3R5
bGVTaGVldHMoKS5yZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShlbGVtZW50KTsKKyAgICBh
dXRob3JTdHlsZVNoZWV0c0ZvckVsZW1lbnQoZWxlbWVudCkucmVtb3ZlU3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGUoZWxlbWVudCk7CiB9CiAKIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjaGls
ZHJlbkNoYW5nZWQoRWxlbWVudCYgZWxlbWVudCkKQEAgLTEzOCw3ICsxNDUsNyBAQCB2b2lkIElu
bGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoCiAgICAgaWYgKCFzY3JlZW5FdmFsLmV2
YWwobWVkaWFRdWVyaWVzLmdldCgpKSAmJiAhcHJpbnRFdmFsLmV2YWwobWVkaWFRdWVyaWVzLmdl
dCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG9jdW1lbnQuYXV0aG9yU3R5bGVTaGVldHMo
KS5hZGRQZW5kaW5nU2hlZXQoKTsKKyAgICBhdXRob3JTdHlsZVNoZWV0c0ZvckVsZW1lbnQoZWxl
bWVudCkuYWRkUGVuZGluZ1NoZWV0KCk7CiAKICAgICBtX2xvYWRpbmcgPSB0cnVlOwogCkBAIC0x
NjAsMTggKzE2NywxOCBAQCBib29sIElubGluZVN0eWxlU2hlZXRPd25lcjo6aXNMb2FkaW5nKCkg
CiAgICAgcmV0dXJuIG1fc2hlZXQgJiYgbV9zaGVldC0+aXNMb2FkaW5nKCk7CiB9CiAKLWJvb2wg
SW5saW5lU3R5bGVTaGVldE93bmVyOjpzaGVldExvYWRlZChEb2N1bWVudCYgZG9jdW1lbnQpCiti
b29sIElubGluZVN0eWxlU2hlZXRPd25lcjo6c2hlZXRMb2FkZWQoRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRv
Y3VtZW50LmF1dGhvclN0eWxlU2hlZXRzKCkucmVtb3ZlUGVuZGluZ1NoZWV0KCk7CisgICAgYXV0
aG9yU3R5bGVTaGVldHNGb3JFbGVtZW50KGVsZW1lbnQpLnJlbW92ZVBlbmRpbmdTaGVldCgpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6c3RhcnRM
b2FkaW5nRHluYW1pY1NoZWV0KERvY3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgSW5saW5lU3R5bGVT
aGVldE93bmVyOjpzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoRWxlbWVudCYgZWxlbWVudCkKIHsK
LSAgICBkb2N1bWVudC5hdXRob3JTdHlsZVNoZWV0cygpLmFkZFBlbmRpbmdTaGVldCgpOworICAg
IGF1dGhvclN0eWxlU2hlZXRzRm9yRWxlbWVudChlbGVtZW50KS5hZGRQZW5kaW5nU2hlZXQoKTsK
IH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
aAkocmV2aXNpb24gMTkwMjUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICBD
U1NTdHlsZVNoZWV0KiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQuZ2V0KCk7IH0KIAog
ICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBzaGVldExvYWRlZChEb2N1bWVu
dCYpOwotICAgIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KERvY3VtZW50Jik7CisgICAg
Ym9vbCBzaGVldExvYWRlZChFbGVtZW50Jik7CisgICAgdm9pZCBzdGFydExvYWRpbmdEeW5hbWlj
U2hlZXQoRWxlbWVudCYpOwogCiAgICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudChEb2N1bWVu
dCYsIEVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoRG9jdW1lbnQmLCBF
bGVtZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lvbiAxOTAy
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAKKyNpbmNsdWRlICJBdXRob3JTdHlsZVNoZWV0cy5oIgorI2luY2x1ZGUgIkNTU1N0
eWxlU2hlZXQuaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSW5z
ZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC00MCw2ICs0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTYW1lU2l6ZUFzU2hhZG93Um9vdCA6IHB1
YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlIHsKICAgICB1bnNpZ25lZCBj
b3VudGVyc0FuZEZsYWdzWzFdOwogICAgIHZvaWQqIHN0eWxlUmVzb2x2ZXI7CisgICAgdm9pZCog
YXV0aG9yU3R5bGVTaGVldHM7CiAgICAgdm9pZCogaG9zdDsKICNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICB2b2lkKiBzbG90QXNzaWdubWVudDsKQEAgLTczLDEwICs3Niw0MiBAQCBTaGFkb3dS
b290Ojp+U2hhZG93Um9vdCgpCiAKIFN0eWxlUmVzb2x2ZXImIFNoYWRvd1Jvb3Q6OnN0eWxlUmVz
b2x2ZXIoKQogewotICAgIGlmIChtX3N0eWxlUmVzb2x2ZXIpCi0gICAgICAgIHJldHVybiAqbV9z
dHlsZVJlc29sdmVyOworICAgIC8vIEZJWE1FOiBVc2UgaXNvbGF0ZWQgc3R5bGUgcmVzb2x2ZXIg
Zm9yIHVzZXIgYWdlbnQgc2hhZG93IHJvb3RzLgorICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VXNl
ckFnZW50KQorICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVyKCk7
CisKKyAgICBpZiAoIW1fc3R5bGVSZXNvbHZlcikgeworICAgICAgICAvLyBXZSBjb3VsZCBzaGFy
ZSBzdHlsZSByZXNvbHZlciB3aXRoIHNoYWRvdyByb290cyB0aGF0IGhhdmUgaWRlbnRpY2FsIHN0
eWxlLgorICAgICAgICBtX3N0eWxlUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVz
b2x2ZXI+KGRvY3VtZW50KCksIHRydWUpOworICAgICAgICBpZiAobV9hdXRob3JTdHlsZVNoZWV0
cykKKyAgICAgICAgICAgIG1fc3R5bGVSZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMo
MCwgbV9hdXRob3JTdHlsZVNoZWV0cy0+YWN0aXZlU3R5bGVTaGVldHMoKSk7CisgICAgfQorICAg
IHJldHVybiAqbV9zdHlsZVJlc29sdmVyOworfQorCit2b2lkIFNoYWRvd1Jvb3Q6OnJlc2V0U3R5
bGVSZXNvbHZlcigpCit7CisgICAgbV9zdHlsZVJlc29sdmVyID0gbnVsbHB0cjsKK30KKworQXV0
aG9yU3R5bGVTaGVldHMmIFNoYWRvd1Jvb3Q6OmF1dGhvclN0eWxlU2hlZXRzKCkKK3sKKyAgICBp
ZiAoIW1fYXV0aG9yU3R5bGVTaGVldHMpCisgICAgICAgIG1fYXV0aG9yU3R5bGVTaGVldHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEF1dGhvclN0eWxlU2hlZXRzPigqdGhpcyk7CisgICAgcmV0dXJuICpt
X2F1dGhvclN0eWxlU2hlZXRzOworfQorCit2b2lkIFNoYWRvd1Jvb3Q6OnVwZGF0ZVN0eWxlKCkK
K3sKKyAgICBib29sIHNob3VsZFJlY2FsY1N0eWxlID0gZmFsc2U7CisKKyAgICBpZiAobV9hdXRo
b3JTdHlsZVNoZWV0cykgeworICAgICAgICAvLyBGSVhNRTogTWFrZSBvcHRpbWl6ZWQgdXBkYXRl
ZCB3b3JrLgorICAgICAgICBzaG91bGRSZWNhbGNTdHlsZSA9IG1fYXV0aG9yU3R5bGVTaGVldHMt
PnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKEF1dGhvclN0eWxlU2hlZXRzOjpGdWxsVXBkYXRlKTsK
KyAgICB9CiAKLSAgICByZXR1cm4gZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVyKCk7Cisg
ICAgaWYgKHNob3VsZFJlY2FsY1N0eWxlKQorICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAxOTAy
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXV0aG9yU3R5
bGVTaGVldHM7CiBjbGFzcyBDb250ZW50RGlzdHJpYnV0b3I7CiBjbGFzcyBIVE1MU2xvdEVsZW1l
bnQ7CiBjbGFzcyBTbG90QXNzaWdubWVudDsKQEAgLTU2LDYgKzU3LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CiAKICAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyKCk7CisgICAgQXV0aG9yU3R5bGVTaGVldHMmIGF1dGhvclN0eWxlU2hlZXRzKCk7CisgICAg
CisgICAgdm9pZCB1cGRhdGVTdHlsZSgpOworICAgIHZvaWQgcmVzZXRTdHlsZVJlc29sdmVyKCk7
CiAKICAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
ZXRTdHlsZUluaGVyaXRhbmNlOyB9CiAgICAgdm9pZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2Uo
Ym9vbCk7CkBAIC0xMDIsMTIgKzEwNywxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNldFN0
eWxlSW5oZXJpdGFuY2U7CiAgICAgVHlwZSBtX3R5cGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3R5bGVSZXNvbHZlcj4gbV9zdHlsZVJlc29sdmVyOwotCiAgICAgRWxlbWVudCogbV9ob3N0Owog
CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25t
ZW50PiBtX3Nsb3RBc3NpZ25tZW50czsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZVJlc29s
dmVyPiBtX3N0eWxlUmVzb2x2ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1dGhvclN0eWxlU2hl
ZXRzPiBtX2F1dGhvclN0eWxlU2hlZXRzOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAkocmV2aXNpb24gMTkwMjUwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDkgKzU5
LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVT
aGVldE93bmVyLmlzTG9hZGluZygpOyB9Ci0gICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zdHlsZVNoZWV0T3duZXIuc2hlZXRMb2FkZWQoZG9jdW1lbnQo
KSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKSBvdmVycmlkZSB7IHJldHVybiBt
X3N0eWxlU2hlZXRPd25lci5zaGVldExvYWRlZCgqdGhpcyk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2Nj
dXJyZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hl
ZXQoKSBvdmVycmlkZSB7IG1fc3R5bGVTaGVldE93bmVyLnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVl
dChkb2N1bWVudCgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hl
ZXQoKSBvdmVycmlkZSB7IG1fc3R5bGVTaGVldE93bmVyLnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVl
dCgqdGhpcyk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlRWxlbWVudC5oCShyZXZpc2lvbiAxOTAyNTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHls
ZVNoZWV0T3duZXIuaXNMb2FkaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQo
KSBvdmVycmlkZSB7IHJldHVybiBtX3N0eWxlU2hlZXRPd25lci5zaGVldExvYWRlZChkb2N1bWVu
dCgpKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKSBvdmVy
cmlkZSB7IG1fc3R5bGVTaGVldE93bmVyLnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldChkb2N1bWVu
dCgpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fc3R5bGVTaGVldE93bmVyLnNoZWV0TG9hZGVkKCp0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKSBvdmVycmlkZSB7IG1fc3R5bGVTaGVldE93bmVy
LnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgqdGhpcyk7IH0KICAgICB2aXJ0dWFsIFRpbWVyKiBz
dmdMb2FkRXZlbnRUaW1lcigpIG92ZXJyaWRlIHsgcmV0dXJuICZtX3N2Z0xvYWRFdmVudFRpbWVy
OyB9CiAKICAgICBJbmxpbmVTdHlsZVNoZWV0T3duZXIgbV9zdHlsZVNoZWV0T3duZXI7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxOTAyNTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wOS0yNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHNjb3BlZCBzdHlsaW5nIGZvciBzaGFk
b3cgRE9NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDkyMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctd2l0aC1ydWxlcy1uby1sZWFrLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGlu
Zy1zaGFkb3ctd2l0aC1ydWxlcy1uby1sZWFrLmh0bWw6IEFkZGVkLgorCisgICAgICAgICAgICBB
ZGQgYSB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhhdCBzaGFkb3cgRE9NIHN0eWxlIGRvZXNuJ3QgYWZm
ZWN0IG5vcm1hbCBET00uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
czoKKworICAgICAgICAgICAgRW5hYmxlIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFk
b3ctd2l0aC1ydWxlcy5odG1sCisKIDIwMTUtMDktMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYXJrIG1lZGlhL21lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9u
LXVwZGF0ZXMuaHRtbCBmYWlsZWQgZm9yIGFsbCBNYWMgcGxhdGZvcm1zLgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy13aXRoLXJ1bGVzLW5vLWxl
YWstZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMtbm8tbGVhay1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNo
YWRvdy13aXRoLXJ1bGVzLW5vLWxlYWstZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0
IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxv
dy48L3A+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNr
Z3JvdW5kOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy13aXRoLXJ1bGVzLW5vLWxlYWsu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bp
bmctc2hhZG93LXdpdGgtcnVsZXMtbm8tbGVhay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy13aXRoLXJ1bGVzLW5vLWxl
YWsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPkNTUyBTY29waW5nIC0gYSBzdHlsZSBydWxlIGlu
c2lkZSBhIHNoYWRvdyB0cmVlIGRvZXNuJ3QgYWZmZWN0IHRoZSBub3JtYWwgZG9tPC90aXRsZT4K
KyAgICA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRv
OnJuaXdhQHdlYmtpdC5vcmciLz4KKyAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93
d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI3NlbGVjdG9ycy1kYXRhLW1vZGVsIj4KKyAgICA8
bGluayByZWw9Im1hdGNoIiBocmVmPSJyZWZlcmVuY2UvZ3JlZW4tYm94Lmh0bWwiLz4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxzdHlsZT4KKyAgICBteS1ob3N0IHsKKyAgICAgICAgZGlzcGxheTog
YmxvY2s7CisgICAgfQorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgICAgIGNvbG9y
OmdyZWVuOworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBz
ZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4gCisgICAgPG15
LWhvc3Q+CisgICAgPC9teS1ob3N0PgorICAgIDxkaXY+RkFJTDwvZGl2PgorICAgIDxzY3JpcHQ+
CisKKyAgICB0cnkgeworICAgICAgICB2YXIgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ215LWhvc3QnKTsKKyAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNo
U2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PHN0eWxlPiBkaXYgeyBiYWNrZ3JvdW5kOiByZWQ7IH0gPC9zdHlsZT4nOworICAgIH0gY2F0Y2gg
KGV4Y2VwdGlvbikgeworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGV4Y2VwdGlvbikpOworICAgIH0KKworICAgIDwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMJKHJldmlzaW9uIDE5MDI1MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA4LDggKzEzMDgsNiBAQCB3ZWJraXQu
b3JnL2IvMTQzMjU4IFsgTWF2ZXJpY2tzIF0gaHR0cC90CiB3ZWJraXQub3JnL2IvMTQ5MTI4IGZh
c3QvdGV4dC9jb250cm9sLWNoYXJhY3RlcnMgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzE0ODY5NSBmYXN0L3NoYWRvdy1kb20gWyBQYXNzIF0KLQotd2Via2l0Lm9yZy9iLzE0
OTMyOCBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE0OTMyOCBmYXN0L3NoYWRvdy1kb20v
Y3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtcnVsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTQ5MzI4IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctaG9z
dC1mdW5jdGlvbmFsLXJ1bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzE0OTMyOCBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXNsb3R0ZWQtcnVsZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>
<flag name="review"
          id="287132"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>