<?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>73121</bug_id>
          
          <creation_ts>2011-11-25 03:53:33 -0800</creation_ts>
          <short_desc>Factor element pointer out of CSSMutableStyleDeclaration.</short_desc>
          <delta_ts>2011-11-29 07:23:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73227</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>ossy</cc>
    
    <cc>rafaelw</cc>
    
    <cc>vsevik</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509067</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-25 03:53:33 -0800</bug_when>
    <thetext>The element (StyledElement, to be precise) pointer in CSSMutableStyleDeclaration is really only needed by inline and mapped style declarations.
We should factor this out somehow, to reduce the size and complexity of vanilla declarations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509092</commentid>
    <comment_count>1</comment_count>
      <attachid>116599</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-25 04:42:18 -0800</bug_when>
    <thetext>Created attachment 116599
Proposed patch

First stab at this: move the element pointer to a CSSElementStyleDeclaration subclass (thin, lives next to CSSMutableStyleDeclaration) and let CSSMappedAttributeDeclaration inherit from it along with the new CSSInlineStyleDeclaration class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509103</commentid>
    <comment_count>2</comment_count>
      <attachid>116599</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-11-25 05:11:36 -0800</bug_when>
    <thetext>Comment on attachment 116599
Proposed patch

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

r=me, nice!

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:615
&gt; +    if (isElementStyleDeclaration() &amp;&amp; static_cast&lt;CSSElementStyleDeclaration*&gt;(this)-&gt;element()) {
&gt; +        StyledElement* element = static_cast&lt;CSSElementStyleDeclaration*&gt;(this)-&gt;element();

This could could live in CSSElementStyleDeclaration

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.h:179
&gt;  
&gt; +class CSSElementStyleDeclaration : public CSSMutableStyleDeclaration {
&gt; +public:

This should probably have a file of its own at some point.

&gt; Source/WebCore/css/CSSStyleDeclaration.h:124
&gt; +    // CSSElementStyleDeclaration bits:
&gt; +    bool m_isElementStyleDeclaration : 1;
&gt; +    bool m_isInlineStyleDeclaration : 1;

Type enum would be another alternative. It might read slightly better in some places (like where the inline bit is passed down in constructor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509155</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-25 06:57:55 -0800</bug_when>
    <thetext>Committed r101172: &lt;http://trac.webkit.org/changeset/101172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509779</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-11-28 06:23:13 -0800</bug_when>
    <thetext>This caused https://bugs.webkit.org/show_bug.cgi?id=73213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510753</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-11-29 07:23:58 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; This caused https://bugs.webkit.org/show_bug.cgi?id=73213
and https://bugs.webkit.org/show_bug.cgi?id=73227</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116599</attachid>
            <date>2011-11-25 04:42:18 -0800</date>
            <delta_ts>2011-11-25 05:11:35 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-73121.diff</filename>
            <type>text/plain</type>
            <size>26277</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5Y2E0N2ExLi45ZTUwZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMg
QEAKKzIwMTEtMTEtMjUgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIEZhY3RvciBlbGVtZW50IHBvaW50ZXIgb3V0IG9mIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83MzEyMT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBTdHlsZWRFbGVtZW50
IHBvaW50ZXIgb3V0IG9mIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uIGFuZCBpbnRvIGEgc3Vi
Y2xhc3MKKyAgICAgICAgZm9yIHRoZSBjYXNlcyB3aGVyZSBpdCdzIG5lZWRlZC4gVGhpcyByZWR1
Y2VzIHRoZSBzaXplIG9mIHZhbmlsbGEgc3R5bGUgZGVjbGFyYXRpb25zCisgICAgICAgIGJ5IG9u
ZSBDUFUgd29yZCAoNCBvciA4IGJ5dGVzLCBkZXBlbmRpbmcgb24gYXJjaGl0ZWN0dXJlLikKKwor
ICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRWxlbWVudFN0eWxlRGVjbGFyYXRpb246OmVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRWxlbWVudFN0eWxlRGVjbGFyYXRpb246OnNldEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRWxlbWVudFN0eWxlRGVjbGFyYXRpb246OkNTU0VsZW1lbnRTdHlsZURlY2xh
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0VsZW1lbnRTdHlsZURlY2xhcmF0aW9uOjp+
Q1NTRWxlbWVudFN0eWxlRGVjbGFyYXRpb24pOgorCisgICAgICAgICAgICBBZGRlZCBDU1NFbGVt
ZW50U3R5bGVEZWNsYXJhdGlvbiwgYSBjb21tb24gcGFyZW50IGNsYXNzIGZvciBpbmxpbmUgc3R5
bGVzCisgICAgICAgICAgICBhbmQgbWFwcGVkIGF0dHJpYnV0ZXMuIEl0IGV4dGVuZHMgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24gYnkgYWRkaW5nIGEgYmFja3BvaW50ZXIKKyAgICAgICAgICAg
IHRvIHRoZSBTdHlsZWRFbGVtZW50IHRoYXQgb3ducyBpdC4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NJbmxp
bmVTdHlsZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW5saW5l
U3R5bGVEZWNsYXJhdGlvbjo6fkNTU0lubGluZVN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW5saW5lU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0lubGluZVN0eWxlRGVjbGFyYXRpb246OkNTU0lubGluZVN0eWxlRGVjbGFyYXRp
b24pOgorCisgICAgICAgICAgICBBZGRlZCBDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpy
b290KToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldE5lZWRzU3R5bGVS
ZWNhbGMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQpOgorCisgICAgICAgICAgICBPbmx5IGZv
bGxvdyB0aGUgYXNzb2NpYXRlZCBlbGVtZW50IG9uIENTU0VsZW1lbnRTdHlsZURlY2xhcmF0aW9u
cy4KKworICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246Om9wZXJhdG9yPSk6CisKKyAgICAgICAgICAgIFJlbW92ZSBjb21tZW50IGFib3V0IG1fZWxl
bWVudCBzaW5jZSB0aGUgZmllbGQgd2FzIG1vdmVkIHRvIGEgc3ViY2xhc3MuCisKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uOjpDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
aXNFbGVtZW50U3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURl
Y2xhcmF0aW9uOjppc0lubGluZVN0eWxlRGVjbGFyYXRpb24pOgorCisgICAgICAgICAgICBXZSBu
byBsb25nZXIgbmVlZCB0byB0cmFjayB3aGV0aGVyIGEgc3R5bGUgZGVjbGFyYXRpb24gaXMgbXV0
YWJsZSBvciBub3QsCisgICAgICAgICAgICBzbyB0aGUgY29uc3RydWN0b3JzIGFyZSBzbGlnaHRs
eSBzaW1wbGlmaWVkLgorICAgICAgICAgICAgQWRkZWQgdHdvIGJpdHMgKGlzRWxlbWVudFN0eWxl
RGVjbGFyYXRpb24gYW5kIGlzSW5saW5lU3R5bGVEZWNsYXJhdGlvbikgZm9yCisgICAgICAgICAg
ICBydW50aW1lIHR5cGUgY2hlY2tpbmcuIFRoZXNlIGFyZSBwcm90ZWN0ZWQgYW5kIHNldCBieSB0
aGUgQ1NTRWxlbWVudFN0eWxlRGVjbGFyYXRpb24KKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLgor
CisgICAgICAgICogZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjpDU1NNYXBwZWRBdHRy
aWJ1dGVEZWNsYXJhdGlvbik6CisKKyAgICAgICAgICAgIFJlbW92ZSBwb2ludGxlc3MgQ1NTUnVs
ZSogYXJndW1lbnQgdG8gY29uc3RydWN0b3Igc2luY2Ugd2UgYWx3YXlzIHBhc3NlZCAwLgorCisg
ICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVs
ZW1lbnQ6OmlubGluZVN0eWxlRGVjbCk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6Y3JlYXRlSW5saW5lU3R5bGVEZWNs
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmdldElubGluZVN0eWxlRGVjbCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMpOgorCisgICAgICAgICAgICBNYWtlIHRoZSBpbmxpbmUgc3R5bGUgb24gU3R5bGVkRWxl
bWVudCBhIENTU0lubGluZVN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmlubGluZVN0eWxlRWxlbWVudCk6CisKKyAgICAgICAgICAgIFNsaWdodGx5IHNpbXBsaWZp
ZWQgYnkgaGF2aW5nIENTU0lubGluZVN0eWxlRGVjbGFyYXRpb24uCisKIDIwMTEtMTEtMjMgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXhjZXB0aW9ucyBpbiBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbG9nZ2VkIHRvIHdl
YiBpbnNwZWN0b3IgY29uc29sZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2Iy
ZjlhMi4uZDY3NTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xMDA5LDYg
KzEwMDksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bmhlcml0ZWRWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5saW5lU3R5bGVEZWNsYXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NM
aW5lQm94Q29udGFpblZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCmluZGV4IGVlYjdmODAuLjI3Zjg0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAt
MTUxMCw2ICsxNTEwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU0ltcG9ydFJ1bGUuaCBc
CiAgICAgY3NzL0NTU0luaGVyaXRlZFZhbHVlLmggXAogICAgIGNzcy9DU1NJbml0aWFsVmFsdWUu
aCBcCisgICAgY3NzL0NTU0lubGluZVN0eWxlRGVjbGFyYXRpb24uaCBcCiAgICAgY3NzL0NTU01l
ZGlhUnVsZS5oIFwKICAgICBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCBcCiAgICAg
Y3NzL0NTU09NVXRpbHMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjljN2FmZi4uMjg1M2MwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAgICAgICAgICAgICAnY3NzL0NT
U0hlbHBlci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oJywK
ICAgICAgICAgICAgICdjc3MvQ1NTSW1hZ2VWYWx1ZS5oJywKKyAgICAgICAgICAgICdjc3MvQ1NT
SW5saW5lU3R5bGVEZWNsYXJhdGlvbi5oJywKICAgICAgICAgICAgICdjc3MvQ1NTTGluZUJveENv
bnRhaW5WYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1BhcnNlclZhbHVlcy5oJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYTFlYjY2Ni4uMzgyZGU5
NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTMyNTE0LDYgKzMyNTE0LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uLmgiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NMaW5lQm94
Q29udGFpblZhbHVlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmU0NzQwNi4uMTBkMjY5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjk0OCw2ICsyOTQ4LDcgQEAKIAkJOENBREYyQUIxMzVDN0IzNjAwOUVGNDNGIC8q
IExldmVsREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOENBREYyQTUxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJEYXRhYmFzZS5oICov
OyB9OwogCQk4Q0FERjJBRDEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Q0FERjJBNzEzNUM3
QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkl0ZXJhdG9yLmggKi87IH07CiAJCThDQURGMkFFMTM1QzdC
MzYwMDlFRjQzRiAvKiBMZXZlbERCU2xpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhDQURGMkE4MTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCU2xp
Y2UuaCAqLzsgfTsKKwkJOENGN0RERTQxNDdFQ0Y5NDAwNDFBNkYyIC8qIENTU0lubGluZVN0eWxl
RGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhDRjdEREUxMTQ3RTQzMkQwMDQxQTZGMiAvKiBDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2
NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBF
dmVudFF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOEZBQzc3NEQxMTk4NzJDQjAwMTVBRTk0IC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4
NDExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLzsgfTsKIAkJ
OTAwMTc3NDAxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0QxMkUw
MzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwICovOyB9OwpAQCAtMTAx
NTMsNiArMTAxNTQsNyBAQAogCQk4Q0FERjJBNTEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkRh
dGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExldmVsREJEYXRhYmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Q0FERjJBNzEzNUM3QjM2MDA5RUY0
M0YgLyogTGV2ZWxEQkl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExldmVsREJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Q0FERjJB
ODEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQlNsaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExldmVsREJTbGljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4Q0Y3RERFMTE0N0U0MzJEMDA0MUE2RjIgLyogQ1NTSW5saW5lU3R5bGVEZWNsYXJhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NJbmxpbmVTdHlsZURlY2xhcmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThGNjc1NjE5MTI4OEIxN0IwMDQ3
QUNBMyAvKiBFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2
ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY5MzREODMxMTg5RjFF
RTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01haW5UaHJlYWRFeGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01haW5UaHJl
YWRFeGVjU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2MTgsNiAr
MjA2MjAsNyBAQAogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4Q0Y3RERFMTE0N0U0MzJEMDA0
MUE2RjIgLyogQ1NTSW5saW5lU3R5bGVEZWNsYXJhdGlvbi5oICovLAogCQkJCTUwMzhCQzA2MTQ3
MTFDREIwMDk1RTBEMSAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAgKi8sCiAJCQkJNTBCNDIx
NTcxNDY5NzY5NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8sCiAJCQkJQUQw
M0FBRjgxNDY4NDUzOTAwQTM5QjVCIC8qIENTU1ZhbHVlLmNwcCAqLywKQEAgLTIxNjkxLDYgKzIx
Njk0LDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCThDRjdEREU0MTQ3RUNGOTQwMDQx
QTZGMiAvKiBDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
M0JCNTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTA2MDM3MDE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4MDBDMEExOTUxNkUwMEE4RUY1RiAvKiBTdHls
ZVNoZWV0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgKaW5kZXggZDkxMzgxMy4uMTJhYjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgSlNET01CaW5k
aW5nX2gKICNkZWZpbmUgSlNET01CaW5kaW5nX2gKIAorI2luY2x1ZGUgIkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxl
U2hlZXQuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgpAQCAtMjA2LDkgKzIwNyw5
IEBAIGVudW0gUGFyYW1ldGVyTWlzc2luZ1BvbGljeSB7CiAgICAgICAgICAgICByZXR1cm4gcm9v
dChwYXJlbnRSdWxlKTsKICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBz
dHlsZS0+cGFyZW50U3R5bGVTaGVldCgpKQogICAgICAgICAgICAgcmV0dXJuIHJvb3Qoc3R5bGVT
aGVldCk7Ci0gICAgICAgIGlmIChzdHlsZS0+aXNNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbigpKSB7
Ci0gICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKj4oc3R5bGUpLT5lbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHJvb3Qobm9kZSk7CisgICAgICAgIGlmIChzdHlsZS0+aXNFbGVtZW50U3R5bGVEZWNsYXJhdGlv
bigpKSB7CisgICAgICAgICAgICBpZiAoU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19j
YXN0PENTU0VsZW1lbnRTdHlsZURlY2xhcmF0aW9uKj4oc3R5bGUpLT5lbGVtZW50KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJvb3QoZWxlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHN0eWxlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmxp
bmVTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5saW5lU3R5bGVE
ZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMmM1NTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5saW5lU3R5bGVEZWNs
YXJhdGlvbi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFuZHJlYXMgS2xpbmcgKGtsaW5nQHdlYmtpdC5vcmcpCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uX2gKKyNkZWZpbmUgQ1NTSW5saW5lU3R5bGVE
ZWNsYXJhdGlvbl9oCisKKyNpbmNsdWRlICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU0lubGluZVN0eWxlRGVjbGFyYXRpb24g
OiBwdWJsaWMgQ1NTRWxlbWVudFN0eWxlRGVjbGFyYXRpb24geworcHVibGljOgorICAgIHZpcnR1
YWwgfkNTU0lubGluZVN0eWxlRGVjbGFyYXRpb24oKSB7IH0KKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU0lubGluZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENTU0lubGluZVN0eWxlRGVjbGFyYXRpb24pOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uKCkKKyAgICAgICAgOiBDU1NF
bGVtZW50U3R5bGVEZWNsYXJhdGlvbigvKiBpc0lubGluZSAqLyB0cnVlKQorICAgIHsKKyAgICB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NJbmxpbmVTdHls
ZURlY2xhcmF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IGI3OWVhZDkuLmViZmQwODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTA3LDMxICsx
MDcsMjcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIFN0eWxlQXR0cmlidXRlTXV0YXRp
b25TY29wZTo6c19jdXJyZW50RGVjbCA9IDA7CiAjZW5kaWYgLy8gRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKIAogQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKCkKLSAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24oMCwgLyogaXNNdXRhYmxlICov
IHRydWUpCi0gICAgLCBtX2VsZW1lbnQoMCkKKyAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24oMCkK
IHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgZm9yIHZhcmlvdXMgaW5saW5lIHN0
eWxlIGRlY2xhcmF0aW9ucywgc28gZGlzYWJsZSBzdHJpY3QgcGFyc2luZy4KICAgICBtX3N0cmlj
dFBhcnNpbmcgPSBmYWxzZTsKIH0KIAogQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCkKLSAgICA6IENTU1N0eWxlRGVj
bGFyYXRpb24ocGFyZW50LCAvKiBpc011dGFibGUgKi8gdHJ1ZSkKLSAgICAsIG1fZWxlbWVudCgw
KQorICAgIDogQ1NTU3R5bGVEZWNsYXJhdGlvbihwYXJlbnQpCiB7CiB9CiAKIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJl
bnQsIGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mIHByb3BlcnRpZXMpCi0gICAgOiBDU1NTdHls
ZURlY2xhcmF0aW9uKHBhcmVudCwgLyogaXNNdXRhYmxlICovIHRydWUpCisgICAgOiBDU1NTdHls
ZURlY2xhcmF0aW9uKHBhcmVudCkKICAgICAsIG1fcHJvcGVydGllcyhwcm9wZXJ0aWVzKQotICAg
ICwgbV9lbGVtZW50KDApCiB7CiAgICAgbV9wcm9wZXJ0aWVzLnNocmlua1RvRml0KCk7CiAgICAg
Ly8gRklYTUU6IFRoaXMgYWxsb3dzIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgogfQogCiBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSog
cGFyZW50LCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QgKiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJv
cGVydGllcykKLSAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24ocGFyZW50LCAvKiBpc011dGFibGUg
Ki8gdHJ1ZSkKLSAgICAsIG1fZWxlbWVudCgwKQorICAgIDogQ1NTU3R5bGVEZWNsYXJhdGlvbihw
YXJlbnQpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtUHJv
cGVydGllcyk7CiAgICAgSGFzaE1hcDxpbnQsIGJvb2w+IGNhbmRpZGF0ZXM7CkBAIC0xNTYsNyAr
MTUyLDYgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246On5DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbigpCiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiYgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246Om9wZXJhdG9yPShjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiYgb3Ro
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX2l0ZXJhdG9yQ291bnQpOwotICAgIC8vIGRvbid0IGF0dGFj
aCBpdCB0byB0aGUgc2FtZSBlbGVtZW50LCBqdXN0IGxlYXZlIHRoZSBjdXJyZW50IG1fZWxlbWVu
dCB2YWx1ZQogICAgIG1fcHJvcGVydGllcyA9IG90aGVyLm1fcHJvcGVydGllczsKICAgICBtX3N0
cmljdFBhcnNpbmcgPSBvdGhlci5tX3N0cmljdFBhcnNpbmc7CiAgICAgcmV0dXJuICp0aGlzOwpA
QCAtNjE0LDI0ICs2MDksMTggQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpy
ZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgYm9vbCBub3RpZnlDaGEKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLWJvb2wgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmlzSW5saW5lU3R5
bGVEZWNsYXJhdGlvbigpCi17Ci0gICAgLy8gRklYTUU6IElkZWFsbHksIHRoaXMgc2hvdWxkIGJl
IGZhY3RvcmVkIGJldHRlciBhbmQgdGhlcmUKLSAgICAvLyBzaG91bGQgYmUgYSBzdWJjbGFzcyBv
ZiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiBqdXN0Ci0gICAgLy8gZm9yIGlubGluZSBzdHls
ZSBkZWNsYXJhdGlvbnMgdGhhdCBoYW5kbGVzIHRoaXMKLSAgICByZXR1cm4gbV9lbGVtZW50ICYm
IG1fZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkgPT0gdGhpczsKLX0KLQogdm9pZCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYygpCiB7Ci0gICAgaWYgKG1f
ZWxlbWVudCkgewotICAgICAgICBpZiAoaXNJbmxpbmVTdHlsZURlY2xhcmF0aW9uKCkpIHsKLSAg
ICAgICAgICAgIG1fZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhJbmxpbmVTdHlsZUNoYW5n
ZSk7Ci0gICAgICAgICAgICBtX2VsZW1lbnQtPmludmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSgpOwot
ICAgICAgICAgICAgaWYgKG1fZWxlbWVudC0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHIobV9lbGVtZW50
LT5kb2N1bWVudCgpLCBtX2VsZW1lbnQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1f
ZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGlmIChp
c0VsZW1lbnRTdHlsZURlY2xhcmF0aW9uKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTRWxlbWVudFN0eWxl
RGVjbGFyYXRpb24qPih0aGlzKS0+ZWxlbWVudCgpKSB7CisgICAgICAgIFN0eWxlZEVsZW1lbnQq
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxDU1NFbGVtZW50U3R5bGVEZWNsYXJhdGlvbio+KHRoaXMp
LT5lbGVtZW50KCk7CisgICAgICAgIGlmICghaXNJbmxpbmVTdHlsZURlY2xhcmF0aW9uKCkpCisg
ICAgICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2Fs
YyhJbmxpbmVTdHlsZUNoYW5nZSk7CisgICAgICAgICAgICBlbGVtZW50LT5pbnZhbGlkYXRlU3R5
bGVBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVt
ZW50LT5kb2N1bWVudCgpKQorICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihkb2N1bWVudCwgZWxlbWVudCk7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uaAppbmRleCA3MTdiMjFmLi4zMmZhMjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaApAQCAtODMsMTAg
KzgzLDYgQEAgcHVibGljOgogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gY29u
c3RfaXRlcmF0b3IodGhpcywgbV9wcm9wZXJ0aWVzLmJlZ2luKCkpOyB9CiAgICAgY29uc3RfaXRl
cmF0b3IgZW5kKCkgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgbV9wcm9wZXJ0aWVzLmVu
ZCgpKTsgfQogCi0gICAgdm9pZCBzZXRFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIHsg
bV9lbGVtZW50ID0gZWxlbWVudDsgfQotCi0gICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQotCiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKIApAQCAtMTM5LDEzICsxMzUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBw
cm9wZXJ0aWVzRXF1YWwoY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIG8pIGNvbnN0
IHsgcmV0dXJuIG1fcHJvcGVydGllcyA9PSBvLT5tX3Byb3BlcnRpZXM7IH0KIAotICAgIGJvb2wg
aXNJbmxpbmVTdHlsZURlY2xhcmF0aW9uKCk7Ci0KIHByb3RlY3RlZDoKICAgICBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlKTsKKyAgICBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbigpOwogCiBwcml2YXRlOgotICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKCk7CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVs
ZSwgY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYpOwogICAgIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqLCBp
bnQgbnVtUHJvcGVydGllcyk7CiAKQEAgLTE3OCwxMSArMTcyLDI5IEBAIHByaXZhdGU6CiAKICAg
ICBWZWN0b3I8Q1NTUHJvcGVydHksIDQ+IG1fcHJvcGVydGllczsKIAotICAgIFN0eWxlZEVsZW1l
bnQqIG1fZWxlbWVudDsKLQogICAgIGZyaWVuZCBjbGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbkNvbnN0SXRlcmF0b3I7CiB9OwogCitjbGFzcyBDU1NFbGVtZW50U3R5bGVEZWNsYXJhdGlv
biA6IHB1YmxpYyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiB7CitwdWJsaWM6CisgICAgU3R5
bGVkRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZv
aWQgc2V0RWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSB7IG1fZWxlbWVudCA9IGVsZW1l
bnQ7IH0KKworcHJvdGVjdGVkOgorICAgIENTU0VsZW1lbnRTdHlsZURlY2xhcmF0aW9uKGJvb2wg
aXNJbmxpbmUpCisgICAgICAgIDogQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oKQorICAgICAg
ICAsIG1fZWxlbWVudCgwKQorICAgIHsKKyAgICAgICAgbV9pc0VsZW1lbnRTdHlsZURlY2xhcmF0
aW9uID0gdHJ1ZTsKKyAgICAgICAgbV9pc0lubGluZVN0eWxlRGVjbGFyYXRpb24gPSBpc0lubGlu
ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5DU1NFbGVtZW50U3R5bGVEZWNsYXJhdGlvbigpIHsg
fQorCitwcml2YXRlOgorICAgIFN0eWxlZEVsZW1lbnQqIG1fZWxlbWVudDsKK307CisKIGlubGlu
ZSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3I6OkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uQ29uc3RJdGVyYXRvcihjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogZGVjbCwgQ1NTUHJvcGVydHkqIGN1cnJlbnQpCiA6IG1fZGVjbChkZWNsKQogLCBtX2N1cnJl
bnQoY3VycmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcApp
bmRleCAyMjhiZGEyLi44NGE4MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC0zOCwxMiArMzgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU1NTdHlsZURlY2xhcmF0aW9uOjpDU1NTdHlsZURlY2xh
cmF0aW9uKENTU1J1bGUqIHBhcmVudCwgYm9vbCBpc011dGFibGUpCitDU1NTdHlsZURlY2xhcmF0
aW9uOjpDU1NTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCkKICAgICA6IG1fc3RyaWN0
UGFyc2luZyghcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0UGFyc2luZygpKQogI2lmbmRlZiBO
REVCVUcKICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCi0gICAgLCBtX2lzTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24oaXNNdXRhYmxlKQorICAgICwgbV9pc0VsZW1lbnRTdHlsZURlY2xh
cmF0aW9uKGZhbHNlKQorICAgICwgbV9pc0lubGluZVN0eWxlRGVjbGFyYXRpb24oZmFsc2UpCiAg
ICAgLCBtX3BhcmVudElzUnVsZSh0cnVlKQogICAgICwgbV9wYXJlbnRSdWxlKHBhcmVudCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDI2N2JhY2QuLjMz
ZWRjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtMTAy
LDIyICsxMDIsMjggQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1N0eWxlKCk7CiAjZW5kaWYKIAot
ICAgIGJvb2wgaXNNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjsgfQorICAgIGJvb2wgaXNFbGVtZW50U3R5bGVEZWNsYXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNFbGVtZW50U3R5bGVEZWNsYXJhdGlvbjsgfQorICAg
IGJvb2wgaXNJbmxpbmVTdHlsZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0lubGlu
ZVN0eWxlRGVjbGFyYXRpb247IH0KIAogcHJvdGVjdGVkOgotICAgIENTU1N0eWxlRGVjbGFyYXRp
b24oQ1NTUnVsZSogcGFyZW50UnVsZSA9IDAsIGJvb2wgaXNNdXRhYmxlID0gZmFsc2UpOworICAg
IENTU1N0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSA9IDApOwogCiAgICAgdmly
dHVhbCBib29sIGNzc1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSopIGNvbnN0Owog
Ci0gICAgLy8gVGhlc2UgYml0cyBhcmUgb25seSB1c2VkIGJ5IENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uIGJ1dCBrZXB0IGhlcmUKKyAgICAvLyBUaGUgYml0cyBpbiB0aGlzIHNlY3Rpb24gYXJl
IG9ubHkgdXNlZCBieSBzcGVjaWZpYyBzdWJjbGFzc2VzIGJ1dCBrZXB0IGhlcmUKICAgICAvLyB0
byBtYXhpbWl6ZSBzdHJ1Y3QgcGFja2luZy4KKworICAgIC8vIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uIGJpdHM6CiAgICAgYm9vbCBtX3N0cmljdFBhcnNpbmcgOiAxOwogI2lmbmRlZiBOREVC
VUcKICAgICB1bnNpZ25lZCBtX2l0ZXJhdG9yQ291bnQgOiA0OwogI2VuZGlmCiAKKyAgICAvLyBD
U1NFbGVtZW50U3R5bGVEZWNsYXJhdGlvbiBiaXRzOgorICAgIGJvb2wgbV9pc0VsZW1lbnRTdHls
ZURlY2xhcmF0aW9uIDogMTsKKyAgICBib29sIG1faXNJbmxpbmVTdHlsZURlY2xhcmF0aW9uIDog
MTsKKwogcHJpdmF0ZToKLSAgICBib29sIG1faXNNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiA6IDE7
CiAgICAgYm9vbCBtX3BhcmVudElzUnVsZSA6IDE7CiAgICAgdW5pb24gewogICAgICAgICBDU1NS
dWxlKiBtX3BhcmVudFJ1bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCmluZGV4IDM5
MTZmMjYuLmFiMTJjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCkBAIC02Niw4
ICs2NiwxMCBAQCB2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3JUZXh0KQogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gbV9z
dHlsZS0+cGFyZW50U3R5bGVTaGVldCgpKQogICAgICAgICBkb2MgPSBzdHlsZVNoZWV0LT5maW5k
RG9jdW1lbnQoKTsKIAotICAgIGlmICghZG9jKQotICAgICAgICBkb2MgPSBtX3N0eWxlLT5lbGVt
ZW50KCkgPyBtX3N0eWxlLT5lbGVtZW50KCktPmRvY3VtZW50KCkgOiAwOworICAgIGlmICghZG9j
ICYmIG1fc3R5bGUtPmlzRWxlbWVudFN0eWxlRGVjbGFyYXRpb24oKSkgeworICAgICAgICBpZiAo
U3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PENTU0VsZW1lbnRTdHlsZURlY2xh
cmF0aW9uKj4obV9zdHlsZS5nZXQoKSktPmVsZW1lbnQoKSkKKyAgICAgICAgICAgIGRvYyA9IGVs
ZW1lbnQtPmRvY3VtZW50KCk7CisgICAgfQogCiAgICAgaWYgKCFkb2MpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNs
YXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uLmgKaW5kZXggMTliYTVhMC4uZDM5Nzg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmgKQEAgLTMxLDExICszMSwxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uIDogcHVibGljIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uIHsKK2NsYXNzIENTU01hcHBl
ZEF0dHJpYnV0ZURlY2xhcmF0aW9uIDogcHVibGljIENTU0VsZW1lbnRTdHlsZURlY2xhcmF0aW9u
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNYXBwZWRBdHRyaWJ1dGVEZWNs
YXJhdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oMCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpOwpAQCAtNDgsMTMgKzQ4LDEzIEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24oQ1NTUnVsZSogcGFyZW50UnVsZSkKLSAgICAgICAgOiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbihwYXJlbnRSdWxlKQorICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkKKyAg
ICAgICAgOiBDU1NFbGVtZW50U3R5bGVEZWNsYXJhdGlvbigvKiBpc0lubGluZSAqLyBmYWxzZSkK
ICAgICAgICAgLCBtX2VudHJ5VHlwZShlTm9uZSkKICAgICAgICAgLCBtX2F0dHJOYW1lKGFueVFO
YW1lKCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIE1hcHBlZEF0dHJpYnV0ZUVudHJ5IG1f
ZW50cnlUeXBlOwogICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyTmFtZTsKICAgICBBdG9taWNTdHJp
bmcgbV9hdHRyVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggYzlm
ZTE5YS4uN2JkZTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjUs
NyArMjUsNyBAQAogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJp
YnV0ZS5oIgotI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVk
ZSAiQ1NTSW5saW5lU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0
b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3
b3Jkcy5oIgpAQCAtMTI5LDcgKzEyOSw3IEBAIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBTdHlsZWRF
bGVtZW50OjpjcmVhdGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwKIAogdm9p
ZCBTdHlsZWRFbGVtZW50OjpjcmVhdGVJbmxpbmVTdHlsZURlY2woKQogewotICAgIG1faW5saW5l
U3R5bGVEZWNsID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOworICAgIG1f
aW5saW5lU3R5bGVEZWNsID0gQ1NTSW5saW5lU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldFBhcmVudFN0eWxlU2hlZXQoZG9jdW1lbnQoKS0+ZWxl
bWVudFNoZWV0KCkpOwogICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRFbGVtZW50KHRoaXMpOwog
ICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGlzSFRNTEVsZW1lbnQoKSAm
JiAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQg
U3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAg
IH0KIH0KIAotQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbnQ6OmdldElu
bGluZVN0eWxlRGVjbCgpCitDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50
OjpnZXRJbmxpbmVTdHlsZURlY2woKQogewogICAgIGlmICghbV9pbmxpbmVTdHlsZURlY2wpCiAg
ICAgICAgIGNyZWF0ZUlubGluZVN0eWxlRGVjbCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQg
U3R5bGVkRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCAq
c291cmNlRWxlbWVudCkKIAogdm9pZCBTdHlsZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CiB7Ci0gICAgaWYgKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGlubGluZVN0eWxlRGVjbCgpKQorICAgIGlm
IChDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGlubGluZVN0eWxlRGVjbCgpKQog
ICAgICAgICBzdHlsZS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDMyZmM0YzIuLjgyODJjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBTdHlsZWRFbGVt
ZW50X2gKICNkZWZpbmUgU3R5bGVkRWxlbWVudF9oCiAKKyNpbmNsdWRlICJDU1NJbmxpbmVTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0
dHJpYnV0ZUVudHJ5LmgiCiAKQEAgLTMyLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBdHRyaWJ1dGU7CiBjbGFzcyBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjsK
LWNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogCiBjbGFzcyBTdHlsZWRFbGVtZW50
IDogcHVibGljIEVsZW1lbnQgewogcHVibGljOgpAQCAtNTQsMTAgKzU0LDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGdldE1hcHBlZEF0dHJp
YnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIEF0dHJpYnV0ZSopOwogICAgIHN0YXRpYyB2
b2lkIHNldE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIEF0dHJpYnV0
ZSosIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKik7CiAKLSAgICBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5bGVEZWNsKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVT
dHlsZURlY2wuZ2V0KCk7IH0KKyAgICBDU1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVT
dHlsZURlY2woKSBjb25zdCB7IHJldHVybiBtX2lubGluZVN0eWxlRGVjbC5nZXQoKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBjYW5IYXZlQWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRpdGlvbmFsQXR0cmlidXRl
U3R5bGVEZWNscyhWZWN0b3I8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPiYpIHsgfQotICAg
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBnZXRJbmxpbmVTdHlsZURlY2woKTsKKyAgICBD
U1NJbmxpbmVTdHlsZURlY2xhcmF0aW9uKiBnZXRJbmxpbmVTdHlsZURlY2woKTsKICAgICBDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlQXR0cmli
dXRlKCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lJbmxp
bmVTdHlsZURlY2woKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBj
b25zdDsKIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9pbmxpbmVT
dHlsZURlY2w7CisgICAgUmVmUHRyPENTU0lubGluZVN0eWxlRGVjbGFyYXRpb24+IG1faW5saW5l
U3R5bGVEZWNsOwogfTsKIAogaW5saW5lIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIFN0eWxlZEVs
ZW1lbnQ6OmNsYXNzTmFtZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggY2ExZDI3NS4uYWVmMzRhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00NDIsMTIgKzQ0
Miw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yCiAvLyBzdGF0aWMKIEVsZW1lbnQqIEluc3Bl
Y3RvckNTU0FnZW50OjppbmxpbmVTdHlsZUVsZW1lbnQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGUpCiB7Ci0gICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmlzTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24oKSkKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+aXNJbmxpbmVTdHlsZURlY2xhcmF0aW9u
KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBt
dXRhYmxlU3R5bGUgPSBzdGF0aWNfY2FzdDxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+KHN0
eWxlKTsKLSAgICBpZiAoIW11dGFibGVTdHlsZS0+aXNJbmxpbmVTdHlsZURlY2xhcmF0aW9uKCkp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtdXRhYmxlU3R5bGUtPmVsZW1lbnQoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW5saW5lU3R5bGVEZWNsYXJhdGlvbio+KHN0eWxl
KS0+ZWxlbWVudCgpOwogfQogCiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIElu
c3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCkK
</data>
<flag name="review"
          id="115802"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>