<?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>209637</bug_id>
          
          <creation_ts>2020-03-26 18:15:50 -0700</creation_ts>
          <short_desc>[JSC] Make Operator an enum class to avoid Op* identifiers</short_desc>
          <delta_ts>2020-03-27 19:48:13 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1634677</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-03-26 18:15:50 -0700</bug_when>
    <thetext>[JSC] Make Operator an enum class to avoid Op* identifiers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634679</commentid>
    <comment_count>1</comment_count>
      <attachid>394685</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-03-26 18:20:07 -0700</bug_when>
    <thetext>Created attachment 394685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634681</commentid>
    <comment_count>2</comment_count>
      <attachid>394685</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-03-26 18:23:06 -0700</bug_when>
    <thetext>Comment on attachment 394685
Patch

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

&gt; Source/JavaScriptCore/parser/Nodes.h:1416
&gt; -        unsigned m_operator : 30;
&gt; +        Operator m_operator;

A note of interest:
Looks like this was overlooked in r233937 due to the obfuscation introduced in r170381.
(Not sure if these booleans still need the `: 1` either but I&apos;ll leave &apos;em unless someone says otherwise.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634847</commentid>
    <comment_count>3</comment_count>
      <attachid>394685</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-27 10:10:34 -0700</bug_when>
    <thetext>Comment on attachment 394685
Patch

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

I like this, but since it’s a coding style thing, and sometimes the people working on JavaScript don’t agree with me on coding style (and I try not to be heavy handed about my opinions in such cases) I am not sure if my review is sufficient.

&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1416
&gt;&gt; +        Operator m_operator;
&gt; 
&gt; A note of interest:
&gt; Looks like this was overlooked in r233937 due to the obfuscation introduced in r170381.
&gt; (Not sure if these booleans still need the `: 1` either but I&apos;ll leave &apos;em unless someone says otherwise.)

So this should reduce the bits from 30 to 8. But we could limit the number of bits even further if we needed to? I’d want Yusuke to weigh on whether a slight reduction in this node’s size would have a desirable effect and if so, then do what it takes to use the smaller number of bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635093</commentid>
    <comment_count>4</comment_count>
      <attachid>394685</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-27 19:26:08 -0700</bug_when>
    <thetext>Comment on attachment 394685
Patch

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

&gt; Source/JavaScriptCore/parser/Nodes.h:79
&gt; +    enum class Operator : uint8_t {
&gt; +        Equal,
&gt; +        PlusEq,
&gt; +        MinusEq,
&gt; +        MultEq,
&gt; +        DivEq,
&gt; +        PlusPlus,
&gt; +        MinusMinus,
&gt; +        BitAndEq,
&gt; +        BitXOrEq,
&gt; +        BitOrEq,
&gt; +        ModEq,
&gt; +        PowEq,
&gt; +        LShift,
&gt; +        RShift,
&gt; +        URShift
&gt;      };
&gt;      
&gt; -    enum LogicalOperator : uint8_t {
&gt; -        OpLogicalAnd,
&gt; -        OpLogicalOr
&gt; +    enum class LogicalOperator : uint8_t {
&gt; +        And,
&gt; +        Or
&gt;      };

I think this is nice. But please keep in mind about one possible issue (currently we are not hitting this).
IIRC, windows.h is notorious about defining many generic-named macros. So, if you define `Operator::VOID`, you will see some super fancy compile error because VOID is replaced with something fun.

&gt;&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1416
&gt;&gt;&gt; +        Operator m_operator;
&gt;&gt; 
&gt;&gt; A note of interest:
&gt;&gt; Looks like this was overlooked in r233937 due to the obfuscation introduced in r170381.
&gt;&gt; (Not sure if these booleans still need the `: 1` either but I&apos;ll leave &apos;em unless someone says otherwise.)
&gt; 
&gt; So this should reduce the bits from 30 to 8. But we could limit the number of bits even further if we needed to? I’d want Yusuke to weigh on whether a slight reduction in this node’s size would have a desirable effect and if so, then do what it takes to use the smaller number of bits.

I think the effect is not significantly large. These memory allocation is transient one, so, they are destroyed once the code-generation is done.
But on the other hand, this is kept in memory-pool, and for very small daemons using JSC, once of the memory peak is when parsing code. But maybe not so large.
Reducing memory typically becomes significant effective if the data structure becomes somewhat persistent, like, some sort of cache, data structure which is kept alive so long etc.
But making things small is always better :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635099</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-27 19:47:13 -0700</bug_when>
    <thetext>Committed r259150: &lt;https://trac.webkit.org/changeset/259150&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394685.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635100</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-27 19:48:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/60995714&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394685</attachid>
            <date>2020-03-26 18:20:07 -0700</date>
            <delta_ts>2020-03-27 19:47:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209637-20200326182007.patch</filename>
            <type>text/plain</type>
            <size>18488</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzMyYzQ4M2M0ZTkwOWQ0MjBkN2U1MzI1OGE2NjQ2OWIzY2U1NTE0Li4wMjUyODE3OWZmMTMwOGFi
ODU4ZjY0OWU2MWRhZTZhMjQ1NjA2N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0wMy0yNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gTWFrZSBPcGVyYXRvciBhbiBlbnVtIGNsYXNzIHRvIGF2
b2lkIE9wKiBpZGVudGlmaWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3VycmVudGx5LCAoZS5nLikgT3BMU2hpZnQgaXMgYSB2YWx1ZSBvZiBlbnVt
IE9wZXJhdG9yIHdoaWxlIE9wTHNoaWZ0IGlzIGFuIG9wY29kZS4KKyAgICAgICAgQ2FwaXRhbGl6
YXRpb24gYXNpZGUsIGl0J3MgY29uZnVzaW5nIHRvIGJlIHVzaW5nIE9wKiBmb3IgZGlzcGFyYXRl
IHB1cnBvc2VzIGxpa2UgdGhpcy4KKyAgICAgICAgTGV0J3MgbW9kZXJuaXplIHRoZSBlbnVtIHNv
IHRoYXQgdGhpcyBjb25mdXNpb24gY2FuIGdvIGF3YXkgYXMgYSBzaWRlIGVmZmVjdC4KKworICAg
ICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjplbWl0
SW5jT3JEZWMpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TG9n
aWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE9wTm9kZTo6
ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6ZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VB
c3NpZ25Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VV
bmFyeUV4cHJlc3Npb24pOgorCiAyMDIwLTAzLTI2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbSlNDXSBSZW5hbWUgQU5ERVFVQUwgdG8gQklUQU5E
RVFVQUwgKGV0Yy4pIHRocm91Z2hvdXQgZnJvbnRlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMTRjMzA2ZDVhYWNm
MTMwYTI3YzE3MjhmZDQ0ZTQ4MTNkN2YyMTU3Li42NDBiMjQ5NzU1ZTEwZWNkZDlhODNiOWUxNGIw
OTdhYjM5ZmQwOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xODc5LDcgKzE4NzksNyBAQCBSZWdpc3RlcklEKiBB
cHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLAogCiBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEluY09yRGVjKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHNyY0RzdCwgT3BlcmF0b3Igb3BlcikKIHsK
LSAgICByZXR1cm4gKG9wZXIgPT0gT3BQbHVzUGx1cykgPyBnZW5lcmF0b3IuZW1pdEluYyhzcmNE
c3QpIDogZ2VuZXJhdG9yLmVtaXREZWMoc3JjRHN0KTsKKyAgICByZXR1cm4gKG9wZXIgPT0gT3Bl
cmF0b3I6OlBsdXNQbHVzKSA/IGdlbmVyYXRvci5lbWl0SW5jKHNyY0RzdCkgOiBnZW5lcmF0b3Iu
ZW1pdERlYyhzcmNEc3QpOwogfQogCiBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFBvc3RJbmNPckRl
YyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyY0RzdCwgT3BlcmF0b3Igb3BlcikKQEAgLTIwMDgsNyArMjAwOCw3IEBAIFJlZ2lzdGVy
SUQqIFBvc3RmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCoKICAgICAgICAgcmV0dXJuIGVtaXREb3QoZ2VuZXJhdG9yLCBkc3QpOwog
CiAgICAgQVNTRVJUKG1fZXhwci0+aXNGdW5jdGlvbkNhbGwoKSk7Ci0gICAgcmV0dXJuIGVtaXRU
aHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgbV9vcGVyYXRvciA9PSBPcFBsdXNQbHVzCisg
ICAgcmV0dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgbV9vcGVyYXRvciA9
PSBPcGVyYXRvcjo6UGx1c1BsdXMKICAgICAgICAgPyAiUG9zdGZpeCArKyBvcGVyYXRvciBhcHBs
aWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiJfcwogICAgICAgICA6ICJQb3N0
Zml4IC0tIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2Uu
Il9zKTsKIH0KQEAgLTIyMzAsNyArMjIzMCw3IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAg
ICAgICAgIHJldHVybiBlbWl0RG90KGdlbmVyYXRvciwgZHN0KTsKIAogICAgIEFTU0VSVChtX2V4
cHItPmlzRnVuY3Rpb25DYWxsKCkpOwotICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJv
cihnZW5lcmF0b3IsIG1fb3BlcmF0b3IgPT0gT3BQbHVzUGx1cworICAgIHJldHVybiBlbWl0VGhy
b3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsIG1fb3BlcmF0b3IgPT0gT3BlcmF0b3I6OlBsdXNQ
bHVzCiAgICAgICAgID8gIlByZWZpeCArKyBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQg
aXMgbm90IGEgcmVmZXJlbmNlLiJfcwogICAgICAgICA6ICJQcmVmaXggLS0gb3BlcmF0b3IgYXBw
bGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MpOwogfQpAQCAtMjY2Miw3
ICsyNjYyLDcgQEAgUmVnaXN0ZXJJRCogTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWY8TGFiZWw+IHRhcmdl
dCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIAogICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0
ZW1wLmdldCgpLCBtX2V4cHIxKTsKLSAgICBpZiAobV9vcGVyYXRvciA9PSBPcExvZ2ljYWxBbmQp
CisgICAgaWYgKG1fb3BlcmF0b3IgPT0gTG9naWNhbE9wZXJhdG9yOjpBbmQpCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKICAgICBl
bHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLmdldCgpLCB0YXJnZXQu
Z2V0KCkpOwpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgdm9pZCBMb2dpY2FsT3BOb2RlOjplbWl0Qnl0
ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sodGhpcyk7CiAKICAgICBSZWY8TGFiZWw+IGFm
dGVyRXhwcjEgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICBpZiAobV9vcGVyYXRvciA9PSBP
cExvZ2ljYWxBbmQpCisgICAgaWYgKG1fb3BlcmF0b3IgPT0gTG9naWNhbE9wZXJhdG9yOjpBbmQp
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIxLCBh
ZnRlckV4cHIxLmdldCgpLCBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNZWFuc1RydWUpOwogICAg
IGVsc2UgCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4
cHIxLCB0cnVlVGFyZ2V0LCBhZnRlckV4cHIxLmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zRmFsc2Up
OwpAQCAtMjc1Niw0NyArMjc1Niw0NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklE
KiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbgogewogICAg
IE9wY29kZUlEIG9wY29kZUlEOwogICAgIHN3aXRjaCAob3BlcikgewotICAgICAgICBjYXNlIE9w
TXVsdEVxOgotICAgICAgICAgICAgb3Bjb2RlSUQgPSBvcF9tdWw7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBPcERpdkVxOgotICAgICAgICAgICAgb3Bjb2RlSUQgPSBvcF9kaXY7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPcFBsdXNFcToKLSAgICAgICAgICAg
IGlmIChtX3JpZ2h0LT5pc0FkZCgpICYmIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKS5kZWZp
bml0ZWx5SXNTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWRk
Tm9kZSo+KG1fcmlnaHQpLT5lbWl0U3RyY2F0KGdlbmVyYXRvciwgZHN0LCBzcmMxLCBlbWl0RXhw
cmVzc2lvbkluZm9Gb3JNZSk7Ci0gICAgICAgICAgICBvcGNvZGVJRCA9IG9wX2FkZDsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9wTWludXNFcToKLSAgICAgICAgICAgIG9wY29k
ZUlEID0gb3Bfc3ViOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT3BMU2hpZnQ6
Ci0gICAgICAgICAgICBvcGNvZGVJRCA9IG9wX2xzaGlmdDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE9wUlNoaWZ0OgotICAgICAgICAgICAgb3Bjb2RlSUQgPSBvcF9yc2hpZnQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPcFVSU2hpZnQ6Ci0gICAgICAgICAg
ICBvcGNvZGVJRCA9IG9wX3Vyc2hpZnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBPcEJpdEFuZEVxOgotICAgICAgICAgICAgb3Bjb2RlSUQgPSBvcF9iaXRhbmQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPcEJpdFhPckVxOgotICAgICAgICAgICAgb3Bjb2Rl
SUQgPSBvcF9iaXR4b3I7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPcEJpdE9y
RXE6Ci0gICAgICAgICAgICBvcGNvZGVJRCA9IG9wX2JpdG9yOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgT3BNb2RFcToKLSAgICAgICAgICAgIG9wY29kZUlEID0gb3BfbW9kOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT3BQb3dFcToKLSAgICAgICAgICAgIG9w
Y29kZUlEID0gb3BfcG93OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0
dXJuIGRzdDsKKyAgICBjYXNlIE9wZXJhdG9yOjpNdWx0RXE6CisgICAgICAgIG9wY29kZUlEID0g
b3BfbXVsOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wZXJhdG9yOjpEaXZFcToKKyAgICAg
ICAgb3Bjb2RlSUQgPSBvcF9kaXY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3BlcmF0b3I6
OlBsdXNFcToKKyAgICAgICAgaWYgKG1fcmlnaHQtPmlzQWRkKCkgJiYgbV9yaWdodC0+cmVzdWx0
RGVzY3JpcHRvcigpLmRlZmluaXRlbHlJc1N0cmluZygpKQorICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEFkZE5vZGUqPihtX3JpZ2h0KS0+ZW1pdFN0cmNhdChnZW5lcmF0b3IsIGRzdCwg
c3JjMSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUpOworICAgICAgICBvcGNvZGVJRCA9IG9wX2Fk
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRvcjo6TWludXNFcToKKyAgICAgICAg
b3Bjb2RlSUQgPSBvcF9zdWI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3BlcmF0b3I6OkxT
aGlmdDoKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9sc2hpZnQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgT3BlcmF0b3I6OlJTaGlmdDoKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9yc2hpZnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgT3BlcmF0b3I6OlVSU2hpZnQ6CisgICAgICAgIG9wY29k
ZUlEID0gb3BfdXJzaGlmdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRvcjo6Qml0
QW5kRXE6CisgICAgICAgIG9wY29kZUlEID0gb3BfYml0YW5kOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE9wZXJhdG9yOjpCaXRYT3JFcToKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9iaXR4b3I7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3BlcmF0b3I6OkJpdE9yRXE6CisgICAgICAgIG9w
Y29kZUlEID0gb3BfYml0b3I7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3BlcmF0b3I6Ok1v
ZEVxOgorICAgICAgICBvcGNvZGVJRCA9IG9wX21vZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBPcGVyYXRvcjo6UG93RXE6CisgICAgICAgIG9wY29kZUlEID0gb3BfcG93OworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZHN0OwogICAgIH0KIAogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9yaWdodCk7CkBAIC0yODA2LDcgKzI4MDYsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbgogICAgIGlmIChlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+
ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90U3RhcnQoKSwgZW1pdEV4cHJl
c3Npb25JbmZvRm9yTWUtPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdl
bmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlSUQsIGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwot
ICAgIGlmIChvcGVyID09IE9wVVJTaGlmdCkKKyAgICBpZiAob3BlciA9PSBPcGVyYXRvcjo6VVJT
aGlmdCkKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcDxPcFVuc2lnbmVkPihy
ZXN1bHQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI5NjEsNyArMjk2MSw3
IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhp
c1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKICAgICB9IGVsc2UKICAgICAgICAgdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpLCBtX2lkZW50KTsKLSAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1v
ZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3Bl
cmF0b3I+KG1fb3BlcmF0b3IpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUo
KSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CisgICAgUmVnaXN0ZXJJRCogdXBkYXRl
ZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBt
X29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdo
dC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
cmV0OwpAQCAtMzAyNSw3ICszMDI1LDcgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICAg
ICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKLSAg
ICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2Vu
ZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFs
dWUuZ2V0KCksIG1fcmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1fb3BlcmF0b3Ip
LCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0
RGVzY3JpcHRvcigpKSk7CisgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNGM2MTczMGVkZWM4
YWRlYmU5NWQ2OWZhYTcwNWVjMWMyMGJmNWU5OC4uNDNiMTcxZmJjNGU3YjM1OWRiZTY4MjdmYTVk
YzViODVhODllYmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKQEAgLTE0NTgsMTAgKzE0NTgsMTAgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VCaW5hcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludAogICAgICAg
ICByZXR1cm4gbWFrZUNvYWxlc2NlTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3Qp
OwogCiAgICAgY2FzZSBPUjoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgTG9n
aWNhbE9wTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIE9wTG9naWNhbE9yKTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgTG9naWNhbE9wTm9kZShsb2NhdGlv
biwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIExvZ2ljYWxPcGVyYXRvcjo6T3IpOwogCiAgICAgY2Fz
ZSBBTkQ6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIExvZ2ljYWxPcE5vZGUo
bG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBMb2dpY2FsT3BOb2RlKGxvY2F0aW9uLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgTG9naWNhbE9wZXJhdG9yOjpBbmQpOwogCiAgICAgY2FzZSBCSVRPUjoK
ICAgICAgICAgcmV0dXJuIG1ha2VCaXRPck5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwpAQCAtMTU0OCw3ICsxNTQ4LDcgQEAgRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHIKIAogICAgIGlmIChsb2MtPmlzUmVzb2x2ZU5vZGUoKSkgewog
ICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
bG9jKTsKLSAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKKyAgICAgICAgaWYgKG9wID09IE9w
ZXJhdG9yOjpFcXVhbCkgewogICAgICAgICAgICAgaWYgKGV4cHItPmlzQmFzZUZ1bmNFeHByTm9k
ZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEJhc2VG
dW5jRXhwck5vZGUqPihleHByKS0+bWV0YWRhdGEoKTsKICAgICAgICAgICAgICAgICBtZXRhZGF0
YS0+c2V0RWNtYU5hbWUocmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKQEAgLTE1NjIsNyArMTU2Miw3
IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgfQogICAgIGlmIChsb2MtPmlzQnJhY2tl
dEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQg
PSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4obG9jKTsKLSAgICAgICAgaWYgKG9w
ID09IE9wRXF1YWwpCisgICAgICAgIGlmIChvcCA9PSBPcGVyYXRvcjo6RXF1YWwpCiAgICAgICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25CcmFja2V0Tm9kZShsb2NhdGlv
biwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNz
aWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgc3RhcnQsIGVu
ZCk7CiAgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJB
cmVuYSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJy
YWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNB
c3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOwogICAgICAgICBub2RlLT5zZXRTdWJleHBy
ZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdEVuZCgpLm9mZnNldCk7
CkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFz
c2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcgogICAgIH0KICAg
ICBBU1NFUlQobG9jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUq
IGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGxvYyk7Ci0gICAgaWYgKG9wID09
IE9wRXF1YWwpCisgICAgaWYgKG9wID09IE9wZXJhdG9yOjpFcXVhbCkKICAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3Qo
KSwgc3RhcnQsIGVuZCk7CiAKICAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0
LCBlbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGUzY2Y0YmY5Njgy
YTUwZjkwOWNkZDFmZWI0MWYxMTZkZjJjNmFmNGUuLjIyZGY1YWU0ZDA4ZTU4NmU3OGY4YjM5YjJi
YmY1YTY4ZmYxOGU2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTU1
LDI3ICs1NSwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYgU21hbGxQdHJTZXQ8
VW5pcXVlZFN0cmluZ0ltcGwqPiBVbmlxdWVkU3RyaW5nSW1wbFB0clNldDsKIAotICAgIGVudW0g
T3BlcmF0b3IgOiB1aW50OF90IHsKLSAgICAgICAgT3BFcXVhbCwKLSAgICAgICAgT3BQbHVzRXEs
Ci0gICAgICAgIE9wTWludXNFcSwKLSAgICAgICAgT3BNdWx0RXEsCi0gICAgICAgIE9wRGl2RXEs
Ci0gICAgICAgIE9wUGx1c1BsdXMsCi0gICAgICAgIE9wTWludXNNaW51cywKLSAgICAgICAgT3BC
aXRBbmRFcSwKLSAgICAgICAgT3BCaXRYT3JFcSwKLSAgICAgICAgT3BCaXRPckVxLAotICAgICAg
ICBPcE1vZEVxLAotICAgICAgICBPcFBvd0VxLAotICAgICAgICBPcExTaGlmdCwKLSAgICAgICAg
T3BSU2hpZnQsCi0gICAgICAgIE9wVVJTaGlmdAorICAgIGVudW0gY2xhc3MgT3BlcmF0b3IgOiB1
aW50OF90IHsKKyAgICAgICAgRXF1YWwsCisgICAgICAgIFBsdXNFcSwKKyAgICAgICAgTWludXNF
cSwKKyAgICAgICAgTXVsdEVxLAorICAgICAgICBEaXZFcSwKKyAgICAgICAgUGx1c1BsdXMsCisg
ICAgICAgIE1pbnVzTWludXMsCisgICAgICAgIEJpdEFuZEVxLAorICAgICAgICBCaXRYT3JFcSwK
KyAgICAgICAgQml0T3JFcSwKKyAgICAgICAgTW9kRXEsCisgICAgICAgIFBvd0VxLAorICAgICAg
ICBMU2hpZnQsCisgICAgICAgIFJTaGlmdCwKKyAgICAgICAgVVJTaGlmdAogICAgIH07CiAgICAg
Ci0gICAgZW51bSBMb2dpY2FsT3BlcmF0b3IgOiB1aW50OF90IHsKLSAgICAgICAgT3BMb2dpY2Fs
QW5kLAotICAgICAgICBPcExvZ2ljYWxPcgorICAgIGVudW0gY2xhc3MgTG9naWNhbE9wZXJhdG9y
IDogdWludDhfdCB7CisgICAgICAgIEFuZCwKKyAgICAgICAgT3IKICAgICB9OwogCiAgICAgZW51
bSBGYWxsVGhyb3VnaE1vZGUgOiB1aW50OF90IHsKQEAgLTE0MTMsNyArMTQxMyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9zdWJzY3JpcHQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0
OwotICAgICAgICB1bnNpZ25lZCBtX29wZXJhdG9yIDogMzA7CisgICAgICAgIE9wZXJhdG9yIG1f
b3BlcmF0b3I7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyA6IDE7CiAg
ICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzIDogMTsKICAgICB9OwpAQCAtMTQ1NSw3
ICsxNDU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jh
c2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX3JpZ2h0OwotICAgICAgICB1bnNpZ25lZCBtX29wZXJhdG9yIDogMzE7CisgICAg
ICAgIE9wZXJhdG9yIG1fb3BlcmF0b3I7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzIDogMTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggYTNhN2UxYjZhZjQyZWZmZjcxODRhZmM1Njc5ZWY2ZGU0YjI3YjM3MC4uZDQ2OGNhNTJj
YTkwNmJlOWUwYTg3ZDlhZWJkOTc0MzA4ZjUyYWMxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMzg0MywxOSArMzg0MywxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFz
c2lnbm1lbgogICAgIGJvb2wgaGFkQXNzaWdubWVudCA9IGZhbHNlOwogICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKLSAgICAgICAgY2FzZSBFUVVB
TDogb3AgPSBPcEVxdWFsOyBicmVhazsKLSAgICAgICAgY2FzZSBQTFVTRVFVQUw6IG9wID0gT3BQ
bHVzRXE7IGJyZWFrOwotICAgICAgICBjYXNlIE1JTlVTRVFVQUw6IG9wID0gT3BNaW51c0VxOyBi
cmVhazsKLSAgICAgICAgY2FzZSBNVUxURVFVQUw6IG9wID0gT3BNdWx0RXE7IGJyZWFrOwotICAg
ICAgICBjYXNlIERJVkVRVUFMOiBvcCA9IE9wRGl2RXE7IGJyZWFrOwotICAgICAgICBjYXNlIExT
SElGVEVRVUFMOiBvcCA9IE9wTFNoaWZ0OyBicmVhazsKLSAgICAgICAgY2FzZSBSU0hJRlRFUVVB
TDogb3AgPSBPcFJTaGlmdDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVJTSElGVEVRVUFMOiBvcCA9
IE9wVVJTaGlmdDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQklUQU5ERVFVQUw6IG9wID0gT3BCaXRB
bmRFcTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQklUWE9SRVFVQUw6IG9wID0gT3BCaXRYT3JFcTsg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQklUT1JFUVVBTDogb3AgPSBPcEJpdE9yRXE7IGJyZWFrOwot
ICAgICAgICBjYXNlIE1PREVRVUFMOiBvcCA9IE9wTW9kRXE7IGJyZWFrOwotICAgICAgICBjYXNl
IFBPV0VRVUFMOiBvcCA9IE9wUG93RXE7IGJyZWFrOworICAgICAgICBjYXNlIEVRVUFMOiBvcCA9
IE9wZXJhdG9yOjpFcXVhbDsgYnJlYWs7CisgICAgICAgIGNhc2UgUExVU0VRVUFMOiBvcCA9IE9w
ZXJhdG9yOjpQbHVzRXE7IGJyZWFrOworICAgICAgICBjYXNlIE1JTlVTRVFVQUw6IG9wID0gT3Bl
cmF0b3I6Ok1pbnVzRXE7IGJyZWFrOworICAgICAgICBjYXNlIE1VTFRFUVVBTDogb3AgPSBPcGVy
YXRvcjo6TXVsdEVxOyBicmVhazsKKyAgICAgICAgY2FzZSBESVZFUVVBTDogb3AgPSBPcGVyYXRv
cjo6RGl2RXE7IGJyZWFrOworICAgICAgICBjYXNlIExTSElGVEVRVUFMOiBvcCA9IE9wZXJhdG9y
OjpMU2hpZnQ7IGJyZWFrOworICAgICAgICBjYXNlIFJTSElGVEVRVUFMOiBvcCA9IE9wZXJhdG9y
OjpSU2hpZnQ7IGJyZWFrOworICAgICAgICBjYXNlIFVSU0hJRlRFUVVBTDogb3AgPSBPcGVyYXRv
cjo6VVJTaGlmdDsgYnJlYWs7CisgICAgICAgIGNhc2UgQklUQU5ERVFVQUw6IG9wID0gT3BlcmF0
b3I6OkJpdEFuZEVxOyBicmVhazsKKyAgICAgICAgY2FzZSBCSVRYT1JFUVVBTDogb3AgPSBPcGVy
YXRvcjo6Qml0WE9yRXE7IGJyZWFrOworICAgICAgICBjYXNlIEJJVE9SRVFVQUw6IG9wID0gT3Bl
cmF0b3I6OkJpdE9yRXE7IGJyZWFrOworICAgICAgICBjYXNlIE1PREVRVUFMOiBvcCA9IE9wZXJh
dG9yOjpNb2RFcTsgYnJlYWs7CisgICAgICAgIGNhc2UgUE9XRVFVQUw6IG9wID0gT3BlcmF0b3I6
OlBvd0VxOyBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdvdG8gZW5kOwog
ICAgICAgICB9CkBAIC01MTE3LDcgKzUxMTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwog
ICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChjb250
ZXh0LCBleHByKSwgIlBvc3RmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZSIpOwogICAgICAgICBtX3BhcnNlclN0YXRlLm5vblRyaXZpYWxFeHBy
ZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25MSFNDb3VudCsrOwotICAg
ICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wUGx1
c1BsdXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSwgdG9rZW5FbmRQb3Np
dGlvbigpKTsKKyAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9u
LCBleHByLCBPcGVyYXRvcjo6UGx1c1BsdXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kUG9z
aXRpb24oKSwgdG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgbV9wYXJzZXJTdGF0ZS5hc3Np
Z25tZW50Q291bnQrKzsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGlzRXZhbE9yQXJndW1l
bnRzLCAiQ2Fubm90IG1vZGlmeSAnIiwgbV9wYXJzZXJTdGF0ZS5sYXN0SWRlbnRpZmllci0+aW1w
bCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaGFz
UHJlZml4VXBkYXRlT3AsICJUaGUgIiwgb3BlcmF0b3JTdHJpbmcoZmFsc2UsIGxhc3RPcGVyYXRv
ciksICIgb3BlcmF0b3IgcmVxdWlyZXMgYSByZWZlcmVuY2UgZXhwcmVzc2lvbiIpOwpAQCAtNTEy
OCw3ICs1MTI4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgc2VtYW50aWNG
YWlsSWZGYWxzZShpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoY29udGV4dCwgZXhwciksICJQb3N0
Zml4IC0tIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2Ui
KTsKICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAg
ICAgICAgIG1fcGFyc2VyU3RhdGUubm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9IGNvbnRl
eHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4cHJT
dGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSwgdG9rZW5FbmRQb3NpdGlvbigpKTsKKyAgICAg
ICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcGVyYXRv
cjo6TWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpLCB0b2tl
bkVuZFBvc2l0aW9uKCkpOwogICAgICAgICBtX3BhcnNlclN0YXRlLmFzc2lnbm1lbnRDb3VudCsr
OwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QoaXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9w
YXJzZXJTdGF0ZS5sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUgbW9kaWZpZWQg
aW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGhhc1ByZWZpeFVw
ZGF0ZU9wLCAiVGhlICIsIG9wZXJhdG9yU3RyaW5nKGZhbHNlLCBsYXN0T3BlcmF0b3IpLCAiIG9w
ZXJhdG9yIHJlcXVpcmVzIGEgcmVmZXJlbmNlIGV4cHJlc3Npb24iKTsKQEAgLTUxNTgsMTMgKzUx
NTgsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgY2FzZSBQTFVTUExVUzoK
ICAgICAgICAgY2FzZSBBVVRPUExVU1BMVVM6CiAgICAgICAgICAgICBBU1NFUlQoaXNTaW1wbGVB
c3NpZ25tZW50VGFyZ2V0KGNvbnRleHQsIGV4cHIpKTsKLSAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJFeHByU3Rh
cnQsIHN1YkV4cHJTdGFydCArIDIsIGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5t
YWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BlcmF0b3I6OlBsdXNQbHVzLCBzdWJFeHBy
U3RhcnQsIHN1YkV4cHJTdGFydCArIDIsIGVuZCk7CiAgICAgICAgICAgICBtX3BhcnNlclN0YXRl
LmFzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlO
VVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKICAgICAgICAgICAgIEFTU0VS
VChpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoY29udGV4dCwgZXhwcikpOwotICAgICAgICAgICAg
ZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51
cywgc3ViRXhwclN0YXJ0LCBzdWJFeHByU3RhcnQgKyAyLCBlbmQpOworICAgICAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wZXJhdG9yOjpNaW51
c01pbnVzLCBzdWJFeHByU3RhcnQsIHN1YkV4cHJTdGFydCArIDIsIGVuZCk7CiAgICAgICAgICAg
ICBtX3BhcnNlclN0YXRlLmFzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVFlQRU9GOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>