<?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>148039</bug_id>
          
          <creation_ts>2015-08-14 13:49:56 -0700</creation_ts>
          <short_desc>Accessing HTMLCollection.length is slow</short_desc>
          <delta_ts>2016-01-28 10:32:30 -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>Bindings</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=148092</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=153599</see_also>
          <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>148043</dependson>
          <blocked>110611</blocked>
    
    <blocked>147980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117748</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 13:49:56 -0700</bug_when>
    <thetext>Accessing HTMLCollection.length is slow. It is especially much slower than accessing NodeList.length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117814</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 15:25:22 -0700</bug_when>
    <thetext>The issue is in our GetOwnPropertySlot. Currently, it does:
1. Check if property name is in our prototype
2. Check static properties (getStaticValueSlotEntryWithoutCaching())
3. Indexed getter
4. Named getter
5. Check own and static properties (getStaticValueSlot())

Performance-wise, the prototype check (1) is costly and is done every time we access HTMLCollection.length or HTMLCollection[i].

Based on the Web IDL specification [a][b][c] for indexed / named getters. It looks like the order ought to be:
1. Indexed Getter
2. Check own and static properties
3. Check if property name is in our prototype
4. Named getter

Besides following the specification, this has the benefit of bypassing the prototype check when accessing HTMLCollection.length or HTMLCollection[i].

On a side note, the HTMLCollection GetOwnPropertySlot is marked as impure, which means we won&apos;t cache what is returned by GetOwnPropertySlot, including accesses to the &apos;length&apos; property.

[a] https://heycam.github.io/webidl/#named-properties-object-getownproperty
[b] https://heycam.github.io/webidl/#dfn-named-property-visibility
[c] https://heycam.github.io/webidl/#getownproperty-guts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117883</commentid>
    <comment_count>2</comment_count>
      <attachid>259078</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 20:44:36 -0700</bug_when>
    <thetext>Created attachment 259078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117904</commentid>
    <comment_count>3</comment_count>
      <attachid>259078</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-08-14 22:55:23 -0700</bug_when>
    <thetext>Comment on attachment 259078
Patch

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

&gt; Source/WebCore/ChangeLog:39
&gt; +        Note that this patch takes the minimal approach to get the performance win
&gt; +        while limiting the risk of breakage. Indeed, the current behavior still
&gt; +        does not match the WebIDL specification, which seems to indicate the order
&gt; +        should be:

Why don&apos;t we just match the spec instead assuming other browsers follow it?
I don&apos;t think named properties masking prototype properties is ever useful.

We can revert back to this behavior if we find websites that&apos;s not compatible wit the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117936</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-15 08:19:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 259078 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259078&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:39
&gt; &gt; +        Note that this patch takes the minimal approach to get the performance win
&gt; &gt; +        while limiting the risk of breakage. Indeed, the current behavior still
&gt; &gt; +        does not match the WebIDL specification, which seems to indicate the order
&gt; &gt; +        should be:
&gt; 
&gt; Why don&apos;t we just match the spec instead assuming other browsers follow it?
&gt; I don&apos;t think named properties masking prototype properties is ever useful.
&gt; 
&gt; We can revert back to this behavior if we find websites that&apos;s not
&gt; compatible wit the spec.

Oh, I intend to match the spec but I am doing it incrementally because it is going to be a larger change. One issue for example is that getStaticValueSlot() does more than looking for own properties. If it doesn&apos;t find any, it calls the Base class&apos;s getOwnPropertySlot(). In the case of HTMLFormControlCollection, calling getStaticValueSlot() before the named getter means the parent&apos;s named getter (HTMLCollection) takes priority over HTMLFormControlCollection&apos;s named getter. This is an issue because the named getter is supposed to return a NodeList but HTMLCollection&apos;s named getter returns a single Element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117946</commentid>
    <comment_count>5</comment_count>
      <attachid>259078</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-08-15 09:12:32 -0700</bug_when>
    <thetext>Comment on attachment 259078
Patch

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

r=me.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:-404
&gt; -    if (!$interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedGetter&quot;} and InstanceAttributeCount($interface) &gt; 0) {
&gt; -        &amp;$manualLookupGetterGeneration();
&gt; -    }
&gt; -

Oh, I see. You&apos;re changing the behavior of all classes with named properties.
I guess this is risky enough that it warrants its own patch.

Perhaps you want to mention that in the change log.
Your change log entry made it sound like it would only affect HTMLCollection.

&gt; LayoutTests/ChangeLog:10
&gt; +        Add new layout test covering the expected behavior of HTMLCollection&apos;s

Can we also add a test for other classes with named properties?
It can be a separate patch but given we&apos;re modifying their behaviors, it&apos;s good to test them.

&gt; LayoutTests/fast/dom/htmlcollection-getownproperty-expected.txt:9
&gt; +* Named properties should not mask static properties on HTMLCollection

Can we add a blank line between these test cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118123</commentid>
    <comment_count>6</comment_count>
      <attachid>259078</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-17 09:41:03 -0700</bug_when>
    <thetext>Comment on attachment 259078
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:-404
&gt;&gt; -
&gt; 
&gt; Oh, I see. You&apos;re changing the behavior of all classes with named properties.
&gt; I guess this is risky enough that it warrants its own patch.
&gt; 
&gt; Perhaps you want to mention that in the change log.
&gt; Your change log entry made it sound like it would only affect HTMLCollection.

The web-exposed behavior change only impacts NamedNodeMap and HTML*Collection at the moment. This manualLookupGetterGeneration() code is merely moved after the indexed getter for performance reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118124</commentid>
    <comment_count>7</comment_count>
      <attachid>259155</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-17 09:42:58 -0700</bug_when>
    <thetext>Created attachment 259155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118127</commentid>
    <comment_count>8</comment_count>
      <attachid>259155</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-17 09:46:45 -0700</bug_when>
    <thetext>Comment on attachment 259155
Patch

Clearing flags on attachment: 259155

Committed r188523: &lt;http://trac.webkit.org/changeset/188523&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118128</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-17 09:46:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259078</attachid>
            <date>2015-08-14 20:44:36 -0700</date>
            <delta_ts>2015-08-17 09:42:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148039-20150814204417.patch</filename>
            <type>text/plain</type>
            <size>14430</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3ZjczYTJkODBkMjdh
YjhiNjQzYjM4MGI2OTU3YzU0MWQ5MGQ5OS4uZGEwODcyNTVjNGI2ZDdlZGIwNDQ5YTJkODAwNzhm
YWIxMzE3YTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTA4LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaW5nIEhUTUxDb2xs
ZWN0aW9uLmxlbmd0aCBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBY2Nlc3Npbmcgd2FzIEhUTUxDb2xsZWN0aW9uLmxlbmd0aCBpcyBzbG93
LCBtdWNoIHNsb3dlciB0aGFuIGFjY2Vzc2luZworICAgICAgICBOb2RlTGlzdC5sZW5ndGguIFRo
ZSByZWFzb24gaXMgdGhhdCBIVE1MQ29sbGVjdGlvbidzIGJpbmRpbmdzIGNvZGUgaXMKKyAgICAg
ICAgc2xpZ2h0bHkgZGlmZmVyZW50LiBJbiBwYXJ0aWN1bGFyLCBIVE1MQ29sbGVjdGlvbidzIEdl
dE93blByb3BlcnR5U2xvdCgpCisgICAgICAgIGhhcyBhbiBleHRyYSBjaGVjayB0byBzZWUgaWYg
dGhlIFByb3BlcnR5TmFtZSBpcyBhdmFpbGFibGUgb24gdGhlCisgICAgICAgIHByb3RvdHlwZSBi
ZWZvcmUgZG9pbmc6CisgICAgICAgIDEuIENoZWNrIHN0YXRpYyBwcm9wZXJ0aWVzIChnZXRTdGF0
aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nKCkpCisgICAgICAgIDIuIEluZGV4ZWQgZ2V0
dGVyCisgICAgICAgIDMuIE5hbWVkIGdldHRlcgorICAgICAgICA0LiBDaGVjayBvd24gcHJvcGVy
dGllcyAoZ2V0U3RhdGljVmFsdWVTbG90KCkpCisKKyAgICAgICAgVGhpcyBtZWFucyB0aGF0IGV2
ZXJ5dGltZSB0aGUgSmF2YVNjcmlwdCB3YXMgYWNjZXNzaW5nIEhUTUxDb2xsZWN0aW9uLmxlbmd0
aAorICAgICAgICBvciBIVE1MQ29sbGVjdGlvbltpbmRleF0sIHdlIHdvdWxkIGNoZWNrIGlmIGxl
bmd0aCAvIGluZGV4IHdhcyBwcmVzZW50IG9uIHRoZQorICAgICAgICBwcm90b3R5cGUgYmVmb3Jl
IGNhbGxpbmcgSFRNTENvbGxlY3Rpb246Omxlbmd0aCgpIC8gSFRNTENvbGxlY3Rpb246Oml0ZW0o
aSkuCisgICAgICAgIFRoZSBwcm90b3R5cGUgY2hlY2sgaXMgZmFpcmx5IGV4cGVuc2l2ZSBhbmQg
d2FzIG1ha2luZyB0cmF2ZXJzaW5nIGFuCisgICAgICAgIEhUTUxDb2xsZWN0aW9uIG11Y2ggc2xv
d2VyIHRoYW4gdHJhdmVyc2luZyBhIE5vZGVMaXN0LgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gs
IEkgcmVmYWN0b3JlZCBHZXRPd25Qcm9wZXJ0eVNsb3QoKSB0byBkbzoKKyAgICAgICAgMS4gSW5k
ZXhlZCBnZXR0ZXIKKyAgICAgICAgMi4gQ2hlY2sgc3RhdGljIHByb3BlcnRpZXMKKyAgICAgICAg
My4gUHJvdG90eXBlIGNoZWNrCisgICAgICAgIDQuIE5hbWVkIGdldHRlcgorICAgICAgICA1LiBD
aGVjayBvd24gcHJvcGVydGllcworCisgICAgICAgIFRoaXMgd2F5LCB0aGUgcHJvdG90eXBlIGNo
ZWNrIGlzIG5vIGxvbmdlciBzbG93aW5nIGRvd24gSFRNTENvbGxlY3Rpb24KKyAgICAgICAgdHJh
dmVyc2FsLiBXaGF0IG1hdHRlcnMgaXMgdGhhdCB3ZSBkbyB0aGUgcHJvdG90eXBlIGNoZWNrICpi
ZWZvcmUqIGNhbGxpbmcKKyAgICAgICAgdGhlIG5hbWVkIGdldHRlciBhcyB3ZSBkb24ndCB3YW50
IG5hbWVkIHByb3BlcnRpZXMgdG8gbWFzayBwcm9wZXJ0aWVzIG9uCisgICAgICAgIHRoZSBwcm90
b3R5cGUuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggdGFrZXMgdGhlIG1pbmltYWwg
YXBwcm9hY2ggdG8gZ2V0IHRoZSBwZXJmb3JtYW5jZSB3aW4KKyAgICAgICAgd2hpbGUgbGltaXRp
bmcgdGhlIHJpc2sgb2YgYnJlYWthZ2UuIEluZGVlZCwgdGhlIGN1cnJlbnQgYmVoYXZpb3Igc3Rp
bGwKKyAgICAgICAgZG9lcyBub3QgbWF0Y2ggdGhlIFdlYklETCBzcGVjaWZpY2F0aW9uLCB3aGlj
aCBzZWVtcyB0byBpbmRpY2F0ZSB0aGUgb3JkZXIKKyAgICAgICAgc2hvdWxkIGJlOgorICAgICAg
ICAxLiBJbmRleGVkIGdldHRlcgorICAgICAgICAyLiBDaGVjayBzdGF0aWMgLyBvd24gcHJvcGVy
dGllcworICAgICAgICAzLiBQcm90b3R5cGUgY2hlY2sKKyAgICAgICAgNC4gTmFtZWQgZ2V0dGVy
CisKKyAgICAgICAgT25jZSB3ZSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiwgSSBiZWxpZXZlIHdl
IHdpbGwgYmUgYWJsZSB0byBkcm9wIHRoZQorICAgICAgICBKU0M6Okhhc0ltcHVyZUdldE93blBy
b3BlcnR5U2xvdCBmbGFnIG9uIEhUTUxDb2xsZWN0aW9uLCB3aGljaCBjdXJyZW50bHkKKyAgICAg
ICAgbWFrZXMgSFRNTENvbGxlY3Rpb24ubGVuZ3RoIG5vdCBjYWNoZWFibGUuIFJpZ2h0IG5vdywg
SSBiZWxpZXZlIHdlIHN0aWxsCisgICAgICAgIG5lZWQgdGhpcyBmbGFnIGJlY2F1c2UgbmFtZWQg
cHJvcGVydGllcyBjYW4gc3RpbGwgbWFzayBvd24gcHJvcGVydGllcy4KKworICAgICAgICBQZXJm
b3JtYW5jZToKKyAgICAgICAgL0JpbmRpbmdzL2NoaWxkTm9kZXMtdHJhdmVyc2FsOiA1NTk3LjU0
ICsvLSAwLjclIC0+IDU1NzIuMTAgKy8tIDAuNCUKKyAgICAgICAgL0JpbmRpbmdzL2NoaWxkcmVu
LXRyYXZlcnNhbDogMzg1Mi42MSArLy0gMC4zJSAtPiA0NzMxLjAzICsvLSAwLjMlICh+MjMlIGJl
dHRlcikKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9w
ZXJ0eS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorCiAyMDE1
LTA4LTE0ICBNYXR0aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudGluZyBlbnVtZXJhdGVEZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGJiYmMzZDM0MWIwMGZhODBhNjEw
YmM0Zjk2ZTU3ZmNiOTgwMWFmYjUuLjkyZTM3YmJjYzFkMzlhMjBjYmZhYWU2NmJlZTIwMDhjNjMy
MmM1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0zODEsMTIgKzM4MSw2IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3Bl
cnR5U2xvdEJvZHkKIAogICAgIG15IEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsID0gKCk7CiAKLSAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUg
PX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvKSB7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
U2xvdEltcGwsICIgICAgJHtuYW1lc3BhY2VNYXliZX1KU1ZhbHVlIHByb3RvID0gdGhpc09iamVj
dC0+cHJvdG90eXBlKCk7XG4iKTsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1w
bCwgIiAgICBpZiAocHJvdG8uaXNPYmplY3QoKSAmJiBqc0Nhc3Q8JHtuYW1lc3BhY2VNYXliZX1K
U09iamVjdCo+KHByb3RvKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwot
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1cm4gZmFs
c2U7XG5cbiIpOwotICAgIH0KLQogICAgIG15ICRtYW51YWxMb29rdXBHZXR0ZXJHZW5lcmF0aW9u
ID0gc3ViIHsKICAgICAgICAgbXkgJHJlcXVpcmVzTWFudWFsTG9va3VwID0gJGluZGV4ZWRHZXR0
ZXJGdW5jdGlvbiB8fCAkbmFtZWRHZXR0ZXJGdW5jdGlvbjsKICAgICAgICAgaWYgKCRyZXF1aXJl
c01hbnVhbExvb2t1cCkgewpAQCAtMzk4LDEwICszOTIsNiBAQCBzdWIgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eVNsb3RCb2R5CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgaWYgKCEkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIifSBhbmQgSW5zdGFuY2VB
dHRyaWJ1dGVDb3VudCgkaW50ZXJmYWNlKSA+IDApIHsKLSAgICAgICAgJiRtYW51YWxMb29rdXBH
ZXR0ZXJHZW5lcmF0aW9uKCk7Ci0gICAgfQotCiAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rp
b24pIHsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBPcHRpb25h
bDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTtcbiIp
OwogCkBAIC00MjQsNiArNDE0LDE3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJv
ZHkKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICB9XG4iKTsKICAg
ICB9CiAKKyAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21O
YW1lZEdldHRlciJ9IGFuZCBJbnN0YW5jZUF0dHJpYnV0ZUNvdW50KCRpbnRlcmZhY2UpID4gMCkg
eworICAgICAgICAmJG1hbnVhbExvb2t1cEdldHRlckdlbmVyYXRpb24oKTsKKyAgICB9CisKKyAg
ICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyBmb3IgZXZlcnkgaW50ZXJmYWNlIGZvciBldmVy
eSBpbnRlcmZhY2UgdGhhdCBoYXMgYSBuYW1lZCBnZXR0ZXIuCisgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxl
Y3Rpb24kLykgeworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICR7
bmFtZXNwYWNlTWF5YmV9SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpO1xu
Iik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKHByb3Rv
LmlzT2JqZWN0KCkgJiYganNDYXN0PCR7bmFtZXNwYWNlTWF5YmV9SlNPYmplY3QqPihwcm90bykt
Pmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpXG4iKTsKKyAgICAgICAgcHVzaChAZ2V0
T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4iKTsKKyAgICB9
CisKICAgICBpZiAoJG5hbWVkR2V0dGVyRnVuY3Rpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0pIHsKICAgICAgICAgcHVzaChAZ2V0T3du
UHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAoY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsICZ0aGlz
T2JqZWN0LT5pbXBsKCksIHByb3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICBwdXNoKEBnZXRP
d25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBS
ZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdGhpc09iamVjdC0+bmFtZUdldHRlcik7
XG4iKTsKQEAgLTQ0Niw2ICs0NDcsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
b2R5CiAgICAgfQogCiAgICAgaWYgKCRoYXNBdHRyaWJ1dGVzKSB7CisgICAgICAgICMgRklYTUU6
IFdlIGFyZSBzdXBwb3NlZCB0byBjaGVjayBmb3Igb3duIHByb3BlcnRpZXMgKmJlZm9yZSogY2Fs
bGluZyB0aGUgbmFtZWQgZ2V0dGVyLgogICAgICAgICBpZiAoJGlubGluZWQpIHsKICAgICAgICAg
ICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgcmV0dXJuICR7bmFtZXNwYWNl
TWF5YmV9Z2V0U3RhdGljVmFsdWVTbG90PCRjbGFzc05hbWUsIEJhc2U+KGV4ZWMsICppbmZvKCkt
PnN0YXRpY1Byb3BIYXNoVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IGYwNzlh
MDc5ZDBlYjQyYmJmZmQ5Mzg1NTZhMzAxN2I5M2Q1NzUzZGUuLjUxY2NlMTc1NWQ4M2M1MWJmMDBm
NjdiMWRkY2RhMTIxNDUzYTEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTc2
LDExICsxNzYsNiBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcgogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBjb25zdCBIYXNoVGFi
bGVWYWx1ZSogZW50cnkgPSBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPEpT
VGVzdEV2ZW50VGFyZ2V0PihleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChlbnRyeSkgewot
ICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBlbnRyeS0+YXR0cmli
dXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKTsKICAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZh
bHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7CkBAIC0xODgsNiArMTgzLDExIEBAIGJvb2wg
SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByCiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0
cmlidXRlcywgdG9KUyhleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVj
dC0+aW1wbCgpLml0ZW0oaW5kZXgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAg
ICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdp
dGhvdXRDYWNoaW5nPEpTVGVzdEV2ZW50VGFyZ2V0PihleGVjLCBwcm9wZXJ0eU5hbWUpOworICAg
IGlmIChlbnRyeSkgeworICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0
LCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KICAgICBpZiAoY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsICZ0
aGlzT2JqZWN0LT5pbXBsKCksIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0
b20odGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRoaXNPYmpl
Y3QtPm5hbWVHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTIyMTNiMWM5
YjYxYzkyYzZhODY3NmZlZWFjOTM4NmNhNjhiMThlLi41NDE2OWU2NmZhOTJhMzVlNWE0ODA4NmJh
OWZlYjhkNTAxYTgwYzM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDgtMTQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBY2Nlc3NpbmcgSFRNTENvbGxl
Y3Rpb24ubGVuZ3RoIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRv
d25wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyBsYXlvdXQgdGVzdCBjb3Zl
cmluZyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3Igb2YgSFRNTENvbGxlY3Rpb24ncworICAgICAgICBb
W0dldE93blByb3BlcnR5XV0uIEEgZmV3IGNoZWNrcyBhcmUgc3RpbGwgZmFpbGluZyBhcyB3ZSBk
b24ndCBlbnRpcmVseQorICAgICAgICBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiB5ZXQuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBS
ZWJhc2VsaW5lIHRlc3QgYXMgYSBmZXcgbW9yZSBjaGVja3MgYXJlIG5vdyBwYXNzaW5nLgorCiAy
MDE1LTA4LTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVT
NiBjbGFzcyBzeW50YXggc2hvdWxkIGFsbG93IGNvbXB1dGVkIG5hbWUgbWV0aG9kCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25w
cm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg5MTRlYTYzODU3Njk0ZTU0MGM3ZGU4
MGRkMWI4MGU1MzNmMDdmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2h0bWxjb2xsZWN0aW9uLWdldG93bnByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5
IEBACitUZXN0cyB0aGF0IHRoZSBiZWhhdmlvciBvZiBIVE1MQ29sbGVjdGlvbidzIFtbR2V0T3du
UHJvcGVydHldXSBjb25mb3JtcyB0byBXZWIgSURMCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCisqIE5hbWVkIHByb3BlcnRpZXMgc2hvdWxkIG5vdCBtYXNrIHByb3BlcnRpZXMgb24g
dGhlIHByb3RvdHlwZQorUEFTUyBodG1sQ29sbGVjdGlvbi5uYW1lZEl0ZW0oJ3RvU3RyaW5nJykg
aXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvU3RyaW5nUCcpCitQQVNTIGh0bWxDb2xsZWN0
aW9uLnRvU3RyaW5nIGlzIEhUTUxDb2xsZWN0aW9uLnByb3RvdHlwZS50b1N0cmluZworKiBOYW1l
ZCBwcm9wZXJ0aWVzIHNob3VsZCBub3QgbWFzayBzdGF0aWMgcHJvcGVydGllcyBvbiBIVE1MQ29s
bGVjdGlvbgorUEFTUyBodG1sQ29sbGVjdGlvbi5uYW1lZEl0ZW0oJ2xlbmd0aCcpIGlzIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsZW5ndGhQJykKK1BBU1MgaHRtbENvbGxlY3Rpb24ubGVuZ3Ro
IGlzIDQKKyogTmFtZWQgcHJvcGVydGllcyBzaG91bGQgbm90IG1hc2sgb3duIHByb3BlcnRpZXMg
b24gSFRNTENvbGxlY3Rpb24KK2h0bWxDb2xsZWN0aW9uLmZvbyA9ICdmb28nCitQQVNTIGh0bWxD
b2xsZWN0aW9uLm5hbWVkSXRlbSgnZm9vJykgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zv
b1AnKQorRkFJTCBodG1sQ29sbGVjdGlvbi5mb28gc2hvdWxkIGJlIGZvbyAob2YgdHlwZSBzdHJp
bmcpLiBXYXMgW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVudF0gKG9mIHR5cGUgb2JqZWN0KS4K
KyogTmFtZWQgcHJvcGVydGllcyBzaG91bGQgbm90IG1hc2sgaW5kZXhlZCBwcm9wZXJ0aWVzCitQ
QVNTIGh0bWxDb2xsZWN0aW9uLml0ZW0oMCkgaXMgdGVzdERpdi5maXJzdEVsZW1lbnRDaGlsZAor
UEFTUyBodG1sQ29sbGVjdGlvblswXSBpcyB0ZXN0RGl2LmZpcnN0RWxlbWVudENoaWxkCitQQVNT
IGh0bWxDb2xsZWN0aW9uLm5hbWVkSXRlbSgnMCcpIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCcwUCcpCitQQVNTIGh0bWxDb2xsZWN0aW9uWycwJ10gaXMgdGVzdERpdi5maXJzdEVsZW1lbnRD
aGlsZAorKiBPd24gcHJvcGVydGllcyBvbiBIVE1MQ29sbGVjdGlvbiBzaG91bGQgbWFzayBwcm9w
ZXJ0aWVzIG9uIHByb3RvdHlwZQoraHRtbENvbGxlY3Rpb24udG9TdHJpbmcgPSAnSW5zdGFuY2VU
b1N0cmluZycKK0ZBSUwgaHRtbENvbGxlY3Rpb24udG9TdHJpbmcgc2hvdWxkIGJlIEluc3RhbmNl
VG9TdHJpbmcgKG9mIHR5cGUgc3RyaW5nKS4gV2FzIGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAg
IFtuYXRpdmUgY29kZV0KK30gKG9mIHR5cGUgZnVuY3Rpb24pLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWdldG93bnByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQwMWYzYWVlN2Y5Yzk3YTBiMjg5YWM5MTcxMmFlYmFmNjQ1NTc5YzAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eS5o
dG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRp
diBpZD0idGVzdERpdiI+Cis8cCBuYW1lPSJ0b1N0cmluZyIgaWQ9InRvU3RyaW5nUCI+PC9wPgor
PHAgbmFtZT0ibGVuZ3RoIiBpZD0ibGVuZ3RoUCI+PC9wPgorPHAgbmFtZT0iZm9vIiBpZD0iZm9v
UCI+PC9wPgorPHAgbmFtZT0iMCIgaWQ9IjBQIj48L3A+Cis8L2Rpdj4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgYmVoYXZpb3Igb2YgSFRNTENvbGxlY3Rpb24ncyBbW0dl
dE93blByb3BlcnR5XV0gY29uZm9ybXMgdG8gV2ViIElETCIpOworCit2YXIgdGVzdERpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7Cit2YXIgaHRtbENvbGxlY3Rpb24gPSB0
ZXN0RGl2LmNoaWxkcmVuOworCitkZWJ1ZygiKiBOYW1lZCBwcm9wZXJ0aWVzIHNob3VsZCBub3Qg
bWFzayBwcm9wZXJ0aWVzIG9uIHRoZSBwcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJodG1sQ29sbGVj
dGlvbi5uYW1lZEl0ZW0oJ3RvU3RyaW5nJykiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rv
U3RyaW5nUCcpIik7CitzaG91bGRCZSgiaHRtbENvbGxlY3Rpb24udG9TdHJpbmciLCAiSFRNTENv
bGxlY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nIik7CisKK2RlYnVnKCIqIE5hbWVkIHByb3BlcnRp
ZXMgc2hvdWxkIG5vdCBtYXNrIHN0YXRpYyBwcm9wZXJ0aWVzIG9uIEhUTUxDb2xsZWN0aW9uIik7
CitzaG91bGRCZSgiaHRtbENvbGxlY3Rpb24ubmFtZWRJdGVtKCdsZW5ndGgnKSIsICJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbGVuZ3RoUCcpIik7CitzaG91bGRCZSgiaHRtbENvbGxlY3Rpb24u
bGVuZ3RoIiwgIjQiKTsKKworZGVidWcoIiogTmFtZWQgcHJvcGVydGllcyBzaG91bGQgbm90IG1h
c2sgb3duIHByb3BlcnRpZXMgb24gSFRNTENvbGxlY3Rpb24iKTsKK2V2YWxBbmRMb2coImh0bWxD
b2xsZWN0aW9uLmZvbyA9ICdmb28nIik7CitzaG91bGRCZSgiaHRtbENvbGxlY3Rpb24ubmFtZWRJ
dGVtKCdmb28nKSIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9vUCcpIikKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiaHRtbENvbGxlY3Rpb24uZm9vIiwgImZvbyIpOworCitkZWJ1ZygiKiBO
YW1lZCBwcm9wZXJ0aWVzIHNob3VsZCBub3QgbWFzayBpbmRleGVkIHByb3BlcnRpZXMiKTsKK3No
b3VsZEJlKCJodG1sQ29sbGVjdGlvbi5pdGVtKDApIiwgInRlc3REaXYuZmlyc3RFbGVtZW50Q2hp
bGQiKTsKK3Nob3VsZEJlKCJodG1sQ29sbGVjdGlvblswXSIsICJ0ZXN0RGl2LmZpcnN0RWxlbWVu
dENoaWxkIik7CitzaG91bGRCZSgiaHRtbENvbGxlY3Rpb24ubmFtZWRJdGVtKCcwJykiLCAiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzBQJykiKTsKK3Nob3VsZEJlKCJodG1sQ29sbGVjdGlvblsn
MCddIiwgInRlc3REaXYuZmlyc3RFbGVtZW50Q2hpbGQiKTsKKworZGVidWcoIiogT3duIHByb3Bl
cnRpZXMgb24gSFRNTENvbGxlY3Rpb24gc2hvdWxkIG1hc2sgcHJvcGVydGllcyBvbiBwcm90b3R5
cGUiKTsKK2V2YWxBbmRMb2coImh0bWxDb2xsZWN0aW9uLnRvU3RyaW5nID0gJ0luc3RhbmNlVG9T
dHJpbmcnIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImh0bWxDb2xsZWN0aW9uLnRvU3RyaW5n
IiwgIkluc3RhbmNlVG9TdHJpbmciKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vd3JhcHBlci1jbGFzc2VzLWV4cGVjdGVkLnR4dApp
bmRleCBiZDliM2Q0Yzc0NGNmZTJlYmJhZDVkMTM1MGRiN2Y5ZDQ0MGIwYjE3Li5iZDE0NWI0NmU0
MzQyOWRmOWM3OTcxZjhhMThjMDQ5OWY1ZGRiODgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQKQEAgLTE5LDcgKzE5LDcgQEAgUEFT
UyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5fX3Byb3RvX18pIGlzICdE
T01JbXBsZW1lbnRhdGlvblByb3QKIFBBU1MganNXcmFwcGVyQ2xhc3MoZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uY29uc3RydWN0b3IpIGlzICdET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yJwog
UEFTUyBqc1dyYXBwZXJDbGFzcyhyb290LmF0dHJpYnV0ZXMpIGlzICdOYW1lZE5vZGVNYXAnCiBQ
QVNTIGpzV3JhcHBlckNsYXNzKHJvb3QuYXR0cmlidXRlcy5fX3Byb3RvX18pIGlzICdOYW1lZE5v
ZGVNYXBQcm90b3R5cGUnCi1GQUlMIGpzV3JhcHBlckNsYXNzKHJvb3QuYXR0cmlidXRlcy5jb25z
dHJ1Y3Rvcikgc2hvdWxkIGJlIE5hbWVkTm9kZU1hcENvbnN0cnVjdG9yLiBXYXMgRnVuY3Rpb24u
CitQQVNTIGpzV3JhcHBlckNsYXNzKHJvb3QuYXR0cmlidXRlcy5jb25zdHJ1Y3RvcikgaXMgJ05h
bWVkTm9kZU1hcENvbnN0cnVjdG9yJwogUEFTUyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5jcmVh
dGVOb2RlSXRlcmF0b3Iocm9vdCwgMCwgbnVsbCwgZmFsc2UpKSBpcyAnTm9kZUl0ZXJhdG9yJwog
UEFTUyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3Iocm9vdCwgMCwg
bnVsbCwgZmFsc2UpLl9fcHJvdG9fXykgaXMgJ05vZGVJdGVyYXRvclByb3RvdHlwZScKIFBBU1Mg
anNXcmFwcGVyQ2xhc3MoZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKHJvb3QsIDAsIG51bGws
IGZhbHNlKS5jb25zdHJ1Y3RvcikgaXMgJ05vZGVJdGVyYXRvckNvbnN0cnVjdG9yJwpAQCAtMTM2
LDcgKzEzNiw3IEBAIEhUTUwgRE9NCiAKIFBBU1MganNXcmFwcGVyQ2xhc3Mocm9vdC5jaGlsZHJl
bikgaXMgJ0hUTUxDb2xsZWN0aW9uJwogUEFTUyBqc1dyYXBwZXJDbGFzcyhyb290LmNoaWxkcmVu
Ll9fcHJvdG9fXykgaXMgJ0hUTUxDb2xsZWN0aW9uUHJvdG90eXBlJwotRkFJTCBqc1dyYXBwZXJD
bGFzcyhyb290LmNoaWxkcmVuLmNvbnN0cnVjdG9yKSBzaG91bGQgYmUgSFRNTENvbGxlY3Rpb25D
b25zdHJ1Y3Rvci4gV2FzIEZ1bmN0aW9uLgorUEFTUyBqc1dyYXBwZXJDbGFzcyhyb290LmNoaWxk
cmVuLmNvbnN0cnVjdG9yKSBpcyAnSFRNTENvbGxlY3Rpb25Db25zdHJ1Y3RvcicKIFBBU1MganNX
cmFwcGVyQ2xhc3MoZG9jdW1lbnQpIGlzICdIVE1MRG9jdW1lbnQnCiBQQVNTIGpzV3JhcHBlckNs
YXNzKGRvY3VtZW50Ll9fcHJvdG9fXykgaXMgJ0hUTUxEb2N1bWVudFByb3RvdHlwZScKIFBBU1Mg
anNXcmFwcGVyQ2xhc3MoZG9jdW1lbnQuY29uc3RydWN0b3IpIGlzICdIVE1MRG9jdW1lbnRDb25z
dHJ1Y3RvcicK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259155</attachid>
            <date>2015-08-17 09:42:58 -0700</date>
            <delta_ts>2015-08-17 09:46:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148039-20150817094257.patch</filename>
            <type>text/plain</type>
            <size>14586</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjNDVhOGY3ZTQ3MmI1
ZDNhODRiM2Q2MDJmMmNmMWFhZWYyOGNmZS4uMmMyMDgyZDI0ZmJkOTgzYjNjYjg1ZmYxYjBiMGU1
MWIzZmQ0Mjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTA4LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaW5nIEhUTUxDb2xs
ZWN0aW9uLmxlbmd0aCBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
CisKKyAgICAgICAgQWNjZXNzaW5nIHdhcyBIVE1MQ29sbGVjdGlvbi5sZW5ndGggaXMgc2xvdywg
bXVjaCBzbG93ZXIgdGhhbiBhY2Nlc3NpbmcKKyAgICAgICAgTm9kZUxpc3QubGVuZ3RoLiBUaGUg
cmVhc29uIGlzIHRoYXQgSFRNTENvbGxlY3Rpb24ncyBiaW5kaW5ncyBjb2RlIGlzCisgICAgICAg
IHNsaWdodGx5IGRpZmZlcmVudC4gSW4gcGFydGljdWxhciwgSFRNTENvbGxlY3Rpb24ncyBHZXRP
d25Qcm9wZXJ0eVNsb3QoKQorICAgICAgICBoYXMgYW4gZXh0cmEgY2hlY2sgdG8gc2VlIGlmIHRo
ZSBQcm9wZXJ0eU5hbWUgaXMgYXZhaWxhYmxlIG9uIHRoZQorICAgICAgICBwcm90b3R5cGUgYmVm
b3JlIGRvaW5nOgorICAgICAgICAxLiBDaGVjayBzdGF0aWMgcHJvcGVydGllcyAoZ2V0U3RhdGlj
VmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZygpKQorICAgICAgICAyLiBJbmRleGVkIGdldHRl
cgorICAgICAgICAzLiBOYW1lZCBnZXR0ZXIKKyAgICAgICAgNC4gQ2hlY2sgb3duIHByb3BlcnRp
ZXMgKGdldFN0YXRpY1ZhbHVlU2xvdCgpKQorCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBldmVy
eXRpbWUgdGhlIEphdmFTY3JpcHQgd2FzIGFjY2Vzc2luZyBIVE1MQ29sbGVjdGlvbi5sZW5ndGgK
KyAgICAgICAgb3IgSFRNTENvbGxlY3Rpb25baW5kZXhdLCB3ZSB3b3VsZCBjaGVjayBpZiBsZW5n
dGggLyBpbmRleCB3YXMgcHJlc2VudCBvbiB0aGUKKyAgICAgICAgcHJvdG90eXBlIGJlZm9yZSBj
YWxsaW5nIEhUTUxDb2xsZWN0aW9uOjpsZW5ndGgoKSAvIEhUTUxDb2xsZWN0aW9uOjppdGVtKGkp
LgorICAgICAgICBUaGUgcHJvdG90eXBlIGNoZWNrIGlzIGZhaXJseSBleHBlbnNpdmUgYW5kIHdh
cyBtYWtpbmcgdHJhdmVyc2luZyBhbgorICAgICAgICBIVE1MQ29sbGVjdGlvbiBtdWNoIHNsb3dl
ciB0aGFuIHRyYXZlcnNpbmcgYSBOb2RlTGlzdC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCBJ
IHJlZmFjdG9yZWQgR2V0T3duUHJvcGVydHlTbG90KCkgdG8gZG86CisgICAgICAgIDEuIEluZGV4
ZWQgZ2V0dGVyCisgICAgICAgIDIuIENoZWNrIHN0YXRpYyBwcm9wZXJ0aWVzCisgICAgICAgIDMu
IFByb3RvdHlwZSBjaGVjaworICAgICAgICA0LiBOYW1lZCBnZXR0ZXIKKyAgICAgICAgNS4gQ2hl
Y2sgb3duIHByb3BlcnRpZXMKKworICAgICAgICBUaGlzIHdheSwgdGhlIHByb3RvdHlwZSBjaGVj
ayBpcyBubyBsb25nZXIgc2xvd2luZyBkb3duIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIHRyYXZl
cnNhbC4gV2hhdCBtYXR0ZXJzIGlzIHRoYXQgd2UgZG8gdGhlIHByb3RvdHlwZSBjaGVjayAqYmVm
b3JlKiBjYWxsaW5nCisgICAgICAgIHRoZSBuYW1lZCBnZXR0ZXIgYXMgd2UgZG9uJ3Qgd2FudCBu
YW1lZCBwcm9wZXJ0aWVzIHRvIG1hc2sgcHJvcGVydGllcyBvbgorICAgICAgICB0aGUgcHJvdG90
eXBlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIHRha2VzIHRoZSBtaW5pbWFsIGFw
cHJvYWNoIHRvIGdldCB0aGUgcGVyZm9ybWFuY2Ugd2luCisgICAgICAgIHdoaWxlIGxpbWl0aW5n
IHRoZSByaXNrIG9mIGJyZWFrYWdlLiBJbmRlZWQsIHRoZSBjdXJyZW50IGJlaGF2aW9yIHN0aWxs
CisgICAgICAgIGRvZXMgbm90IG1hdGNoIHRoZSBXZWJJREwgc3BlY2lmaWNhdGlvbiwgd2hpY2gg
c2VlbXMgdG8gaW5kaWNhdGUgdGhlIG9yZGVyCisgICAgICAgIHNob3VsZCBiZToKKyAgICAgICAg
MS4gSW5kZXhlZCBnZXR0ZXIKKyAgICAgICAgMi4gQ2hlY2sgc3RhdGljIC8gb3duIHByb3BlcnRp
ZXMKKyAgICAgICAgMy4gUHJvdG90eXBlIGNoZWNrCisgICAgICAgIDQuIE5hbWVkIGdldHRlcgor
CisgICAgICAgIE9uY2Ugd2UgbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24sIEkgYmVsaWV2ZSB3ZSB3
aWxsIGJlIGFibGUgdG8gZHJvcCB0aGUKKyAgICAgICAgSlNDOjpIYXNJbXB1cmVHZXRPd25Qcm9w
ZXJ0eVNsb3QgZmxhZyBvbiBIVE1MQ29sbGVjdGlvbiwgd2hpY2ggY3VycmVudGx5CisgICAgICAg
IG1ha2VzIEhUTUxDb2xsZWN0aW9uLmxlbmd0aCBub3QgY2FjaGVhYmxlLiBSaWdodCBub3csIEkg
YmVsaWV2ZSB3ZSBzdGlsbAorICAgICAgICBuZWVkIHRoaXMgZmxhZyBiZWNhdXNlIG5hbWVkIHBy
b3BlcnRpZXMgY2FuIHN0aWxsIG1hc2sgb3duIHByb3BlcnRpZXMuCisKKyAgICAgICAgUGVyZm9y
bWFuY2U6CisgICAgICAgIC9CaW5kaW5ncy9jaGlsZE5vZGVzLXRyYXZlcnNhbDogNTU5Ny41NCAr
Ly0gMC43JSAtPiA1NTcyLjEwICsvLSAwLjQlCisgICAgICAgIC9CaW5kaW5ncy9jaGlsZHJlbi10
cmF2ZXJzYWw6IDM4NTIuNjEgKy8tIDAuMyUgLT4gNDczMS4wMyArLy0gMC4zJSAofjIzJSBiZXR0
ZXIpCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVy
dHkuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KToKKwogMjAxNS0w
OC0xNyAgSmlueW91bmcgSHVyICA8aHVyLmltc0BuYXZlcmNvcnAuY29tPgogCiAgICAgICAgIEZp
eCBwb3NzaWJsZSBFR0wgYW5kIEdMWCBtYWtlQ3VycmVudCBwcm9ibGVtIG9mIEdMUGxhdGZvcm1D
b250ZXh0IGFuZCBHTFBsYXRmb3JtU3VyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiYmJjM2QzNDFiMDBmYTgwYTYx
MGJjNGY5NmU1N2ZjYjk4MDFhZmI1Li45MmUzN2JiY2MxZDM5YTIwY2JmYWFlNjZiZWUyMDA4YzYz
MjJjNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtMzgxLDEyICszODEsNiBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eVNsb3RCb2R5CiAKICAgICBteSBAZ2V0T3duUHJvcGVydHlTbG90SW1wbCA9ICgpOwogCi0g
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1l
ID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLykgewotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0
eVNsb3RJbXBsLCAiICAgICR7bmFtZXNwYWNlTWF5YmV9SlNWYWx1ZSBwcm90byA9IHRoaXNPYmpl
Y3QtPnByb3RvdHlwZSgpO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdElt
cGwsICIgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganNDYXN0PCR7bmFtZXNwYWNlTWF5YmV9
SlNPYmplY3QqPihwcm90byktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpXG4iKTsK
LSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgcmV0dXJuIGZh
bHNlO1xuXG4iKTsKLSAgICB9Ci0KICAgICBteSAkbWFudWFsTG9va3VwR2V0dGVyR2VuZXJhdGlv
biA9IHN1YiB7CiAgICAgICAgIG15ICRyZXF1aXJlc01hbnVhbExvb2t1cCA9ICRpbmRleGVkR2V0
dGVyRnVuY3Rpb24gfHwgJG5hbWVkR2V0dGVyRnVuY3Rpb247CiAgICAgICAgIGlmICgkcmVxdWly
ZXNNYW51YWxMb29rdXApIHsKQEAgLTM5OCwxMCArMzkyLDYgQEAgc3ViIEdlbmVyYXRlR2V0T3du
UHJvcGVydHlTbG90Qm9keQogICAgICAgICB9CiAgICAgfTsKIAotICAgIGlmICghJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0gYW5kIEluc3RhbmNl
QXR0cmlidXRlQ291bnQoJGludGVyZmFjZSkgPiAwKSB7Ci0gICAgICAgICYkbWFudWFsTG9va3Vw
R2V0dGVyR2VuZXJhdGlvbigpOwotICAgIH0KLQogICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0
aW9uKSB7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgT3B0aW9u
YWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7XG4i
KTsKIApAQCAtNDI0LDYgKzQxNCwxNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
b2R5CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgfVxuIik7CiAg
ICAgfQogCisgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
TmFtZWRHZXR0ZXIifSBhbmQgSW5zdGFuY2VBdHRyaWJ1dGVDb3VudCgkaW50ZXJmYWNlKSA+IDAp
IHsKKyAgICAgICAgJiRtYW51YWxMb29rdXBHZXR0ZXJHZW5lcmF0aW9uKCk7CisgICAgfQorCisg
ICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoaXMgZm9yIGV2ZXJ5IGludGVyZmFjZSBmb3IgZXZl
cnkgaW50ZXJmYWNlIHRoYXQgaGFzIGEgbmFtZWQgZ2V0dGVyLgorICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAiTmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xs
ZWN0aW9uJC8pIHsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAk
e25hbWVzcGFjZU1heWJlfUpTVmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKTtc
biIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChwcm90
by5pc09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4ocHJvdG8p
LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKVxuIik7CisgICAgICAgIHB1c2goQGdl
dE93blByb3BlcnR5U2xvdEltcGwsICIgICAgICAgIHJldHVybiBmYWxzZTtcblxuIik7CisgICAg
fQorCiAgICAgaWYgKCRuYW1lZEdldHRlckZ1bmN0aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCAmdGhp
c09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0eU5hbWUpKSB7XG4iKTsKICAgICAgICAgcHVzaChAZ2V0
T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIp
O1xuIik7CkBAIC00NDYsNiArNDQ3LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90
Qm9keQogICAgIH0KIAogICAgIGlmICgkaGFzQXR0cmlidXRlcykgeworICAgICAgICAjIEZJWE1F
OiBXZSBhcmUgc3VwcG9zZWQgdG8gY2hlY2sgZm9yIG93biBwcm9wZXJ0aWVzICpiZWZvcmUqIGNh
bGxpbmcgdGhlIG5hbWVkIGdldHRlci4KICAgICAgICAgaWYgKCRpbmxpbmVkKSB7CiAgICAgICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHJldHVybiAke25hbWVzcGFj
ZU1heWJlfWdldFN0YXRpY1ZhbHVlU2xvdDwkY2xhc3NOYW1lLCBCYXNlPihleGVjLCAqaW5mbygp
LT5zdGF0aWNQcm9wSGFzaFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xu
Iik7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBmMDc5
YTA3OWQwZWI0MmJiZmZkOTM4NTU2YTMwMTdiOTNkNTc1M2RlLi41MWNjZTE3NTVkODNjNTFiZjAw
ZjY3YjFkZGNkYTEyMTQ1M2ExMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE3
NiwxMSArMTc2LDYgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHIKIHsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgY29uc3QgSGFzaFRh
YmxlVmFsdWUqIGVudHJ5ID0gZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZzxK
U1Rlc3RFdmVudFRhcmdldD4oZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAoZW50cnkpIHsK
LSAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgZW50cnktPmF0dHJp
YnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52
YWx1ZSgpIDwgdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpKSB7CiAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOwpAQCAtMTg4LDYgKzE4MywxMSBAQCBib29s
IEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcgogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0
dHJpYnV0ZXMsIHRvSlMoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmpl
Y3QtPmltcGwoKS5pdGVtKGluZGV4KSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gZ2V0U3RhdGljVmFsdWVTbG90RW50cnlX
aXRob3V0Q2FjaGluZzxKU1Rlc3RFdmVudFRhcmdldD4oZXhlYywgcHJvcGVydHlOYW1lKTsKKyAg
ICBpZiAoZW50cnkpIHsKKyAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVj
dCwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgaWYgKGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCAm
dGhpc09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0aGlzT2Jq
ZWN0LT5uYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzMyNWNhYjc3
MzMxZjFmNWE1YzA3MGE3ZDk3ZDA5NzFlZTM2N2VmMi4uMjExYjQ3NDY4YjdjYmM0OWEwNWZkNjli
YzQxMTVjZmVhMzM4YTc0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA4LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaW5nIEhUTUxDb2xs
ZWN0aW9uLmxlbmd0aCBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWdldG93
bnByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgbmV3IGxheW91dCB0ZXN0IGNvdmVy
aW5nIHRoZSBleHBlY3RlZCBiZWhhdmlvciBvZiBIVE1MQ29sbGVjdGlvbidzCisgICAgICAgIFtb
R2V0T3duUHJvcGVydHldXS4gQSBmZXcgY2hlY2tzIGFyZSBzdGlsbCBmYWlsaW5nIGFzIHdlIGRv
bid0IGVudGlyZWx5CisgICAgICAgIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uIHlldC4KKworICAg
ICAgICAqIGZhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQ6CisgICAgICAgIFJl
YmFzZWxpbmUgdGVzdCBhcyBhIGZldyBtb3JlIGNoZWNrcyBhcmUgbm93IHBhc3NpbmcuCisKIDIw
MTUtMDgtMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlZCBhbiBleHBlY3RhdGlvbiBmb3IgaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJl
ZC1yYW5nZS1jb250YWlucy1jdXJyZW50VGltZS5odG1sLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHktZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ3NWU5MzY4N2ExNDRiYzdhMzVmZDdkN2MzNTc3OWY1OTJlZDBi
ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlv
bi1nZXRvd25wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdHMgdGhh
dCB0aGUgYmVoYXZpb3Igb2YgSFRNTENvbGxlY3Rpb24ncyBbW0dldE93blByb3BlcnR5XV0gY29u
Zm9ybXMgdG8gV2ViIElETAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworKiBOYW1l
ZCBwcm9wZXJ0aWVzIHNob3VsZCBub3QgbWFzayBwcm9wZXJ0aWVzIG9uIHRoZSBwcm90b3R5cGUK
K1BBU1MgaHRtbENvbGxlY3Rpb24ubmFtZWRJdGVtKCd0b1N0cmluZycpIGlzIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0b1N0cmluZ1AnKQorUEFTUyBodG1sQ29sbGVjdGlvbi50b1N0cmluZyBp
cyBIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKworKiBOYW1lZCBwcm9wZXJ0aWVz
IHNob3VsZCBub3QgbWFzayBzdGF0aWMgcHJvcGVydGllcyBvbiBIVE1MQ29sbGVjdGlvbgorUEFT
UyBodG1sQ29sbGVjdGlvbi5uYW1lZEl0ZW0oJ2xlbmd0aCcpIGlzIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdsZW5ndGhQJykKK1BBU1MgaHRtbENvbGxlY3Rpb24ubGVuZ3RoIGlzIDQKKworKiBO
YW1lZCBwcm9wZXJ0aWVzIHNob3VsZCBub3QgbWFzayBvd24gcHJvcGVydGllcyBvbiBIVE1MQ29s
bGVjdGlvbgoraHRtbENvbGxlY3Rpb24uZm9vID0gJ2ZvbycKK1BBU1MgaHRtbENvbGxlY3Rpb24u
bmFtZWRJdGVtKCdmb28nKSBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9vUCcpCitGQUlM
IGh0bWxDb2xsZWN0aW9uLmZvbyBzaG91bGQgYmUgZm9vIChvZiB0eXBlIHN0cmluZykuIFdhcyBb
b2JqZWN0IEhUTUxQYXJhZ3JhcGhFbGVtZW50XSAob2YgdHlwZSBvYmplY3QpLgorCisqIE5hbWVk
IHByb3BlcnRpZXMgc2hvdWxkIG5vdCBtYXNrIGluZGV4ZWQgcHJvcGVydGllcworUEFTUyBodG1s
Q29sbGVjdGlvbi5pdGVtKDApIGlzIHRlc3REaXYuZmlyc3RFbGVtZW50Q2hpbGQKK1BBU1MgaHRt
bENvbGxlY3Rpb25bMF0gaXMgdGVzdERpdi5maXJzdEVsZW1lbnRDaGlsZAorUEFTUyBodG1sQ29s
bGVjdGlvbi5uYW1lZEl0ZW0oJzAnKSBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnMFAnKQor
UEFTUyBodG1sQ29sbGVjdGlvblsnMCddIGlzIHRlc3REaXYuZmlyc3RFbGVtZW50Q2hpbGQKKwor
KiBPd24gcHJvcGVydGllcyBvbiBIVE1MQ29sbGVjdGlvbiBzaG91bGQgbWFzayBwcm9wZXJ0aWVz
IG9uIHByb3RvdHlwZQoraHRtbENvbGxlY3Rpb24udG9TdHJpbmcgPSAnSW5zdGFuY2VUb1N0cmlu
ZycKK0ZBSUwgaHRtbENvbGxlY3Rpb24udG9TdHJpbmcgc2hvdWxkIGJlIEluc3RhbmNlVG9TdHJp
bmcgKG9mIHR5cGUgc3RyaW5nKS4gV2FzIGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAgIFtuYXRp
dmUgY29kZV0KK30gKG9mIHR5cGUgZnVuY3Rpb24pLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2h0bWxjb2xsZWN0aW9uLWdldG93bnByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYzQ0
NjlkZWEwZWQ3NzllNDUyYTA5NzU3NTUwZWJiNzc5ZThkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eS5odG1sCkBA
IC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0i
dGVzdERpdiI+Cis8cCBuYW1lPSJ0b1N0cmluZyIgaWQ9InRvU3RyaW5nUCI+PC9wPgorPHAgbmFt
ZT0ibGVuZ3RoIiBpZD0ibGVuZ3RoUCI+PC9wPgorPHAgbmFtZT0iZm9vIiBpZD0iZm9vUCI+PC9w
PgorPHAgbmFtZT0iMCIgaWQ9IjBQIj48L3A+Cis8L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCB0aGUgYmVoYXZpb3Igb2YgSFRNTENvbGxlY3Rpb24ncyBbW0dldE93blBy
b3BlcnR5XV0gY29uZm9ybXMgdG8gV2ViIElETCIpOworCit2YXIgdGVzdERpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7Cit2YXIgaHRtbENvbGxlY3Rpb24gPSB0ZXN0RGl2
LmNoaWxkcmVuOworCitkZWJ1ZygiKiBOYW1lZCBwcm9wZXJ0aWVzIHNob3VsZCBub3QgbWFzayBw
cm9wZXJ0aWVzIG9uIHRoZSBwcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJodG1sQ29sbGVjdGlvbi5u
YW1lZEl0ZW0oJ3RvU3RyaW5nJykiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvU3RyaW5n
UCcpIik7CitzaG91bGRCZSgiaHRtbENvbGxlY3Rpb24udG9TdHJpbmciLCAiSFRNTENvbGxlY3Rp
b24ucHJvdG90eXBlLnRvU3RyaW5nIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCIqIE5hbWVkIHBy
b3BlcnRpZXMgc2hvdWxkIG5vdCBtYXNrIHN0YXRpYyBwcm9wZXJ0aWVzIG9uIEhUTUxDb2xsZWN0
aW9uIik7CitzaG91bGRCZSgiaHRtbENvbGxlY3Rpb24ubmFtZWRJdGVtKCdsZW5ndGgnKSIsICJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGVuZ3RoUCcpIik7CitzaG91bGRCZSgiaHRtbENvbGxl
Y3Rpb24ubGVuZ3RoIiwgIjQiKTsKKworZGVidWcoIiIpOworZGVidWcoIiogTmFtZWQgcHJvcGVy
dGllcyBzaG91bGQgbm90IG1hc2sgb3duIHByb3BlcnRpZXMgb24gSFRNTENvbGxlY3Rpb24iKTsK
K2V2YWxBbmRMb2coImh0bWxDb2xsZWN0aW9uLmZvbyA9ICdmb28nIik7CitzaG91bGRCZSgiaHRt
bENvbGxlY3Rpb24ubmFtZWRJdGVtKCdmb28nKSIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Zm9vUCcpIikKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaHRtbENvbGxlY3Rpb24uZm9vIiwgImZv
byIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiKiBOYW1lZCBwcm9wZXJ0aWVzIHNob3VsZCBub3Qg
bWFzayBpbmRleGVkIHByb3BlcnRpZXMiKTsKK3Nob3VsZEJlKCJodG1sQ29sbGVjdGlvbi5pdGVt
KDApIiwgInRlc3REaXYuZmlyc3RFbGVtZW50Q2hpbGQiKTsKK3Nob3VsZEJlKCJodG1sQ29sbGVj
dGlvblswXSIsICJ0ZXN0RGl2LmZpcnN0RWxlbWVudENoaWxkIik7CitzaG91bGRCZSgiaHRtbENv
bGxlY3Rpb24ubmFtZWRJdGVtKCcwJykiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzBQJyki
KTsKK3Nob3VsZEJlKCJodG1sQ29sbGVjdGlvblsnMCddIiwgInRlc3REaXYuZmlyc3RFbGVtZW50
Q2hpbGQiKTsKKworZGVidWcoIiIpOworZGVidWcoIiogT3duIHByb3BlcnRpZXMgb24gSFRNTENv
bGxlY3Rpb24gc2hvdWxkIG1hc2sgcHJvcGVydGllcyBvbiBwcm90b3R5cGUiKTsKK2V2YWxBbmRM
b2coImh0bWxDb2xsZWN0aW9uLnRvU3RyaW5nID0gJ0luc3RhbmNlVG9TdHJpbmcnIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImh0bWxDb2xsZWN0aW9uLnRvU3RyaW5nIiwgIkluc3RhbmNlVG9T
dHJpbmciKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vd3JhcHBlci1jbGFzc2VzLWV4cGVjdGVkLnR4dAppbmRleCBiZDliM2Q0Yzc0
NGNmZTJlYmJhZDVkMTM1MGRiN2Y5ZDQ0MGIwYjE3Li5iZDE0NWI0NmU0MzQyOWRmOWM3OTcxZjhh
MThjMDQ5OWY1ZGRiODgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVy
LWNsYXNzZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXIt
Y2xhc3Nlcy1leHBlY3RlZC50eHQKQEAgLTE5LDcgKzE5LDcgQEAgUEFTUyBqc1dyYXBwZXJDbGFz
cyhkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5fX3Byb3RvX18pIGlzICdET01JbXBsZW1lbnRhdGlv
blByb3QKIFBBU1MganNXcmFwcGVyQ2xhc3MoZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY29uc3Ry
dWN0b3IpIGlzICdET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yJwogUEFTUyBqc1dyYXBwZXJD
bGFzcyhyb290LmF0dHJpYnV0ZXMpIGlzICdOYW1lZE5vZGVNYXAnCiBQQVNTIGpzV3JhcHBlckNs
YXNzKHJvb3QuYXR0cmlidXRlcy5fX3Byb3RvX18pIGlzICdOYW1lZE5vZGVNYXBQcm90b3R5cGUn
Ci1GQUlMIGpzV3JhcHBlckNsYXNzKHJvb3QuYXR0cmlidXRlcy5jb25zdHJ1Y3Rvcikgc2hvdWxk
IGJlIE5hbWVkTm9kZU1hcENvbnN0cnVjdG9yLiBXYXMgRnVuY3Rpb24uCitQQVNTIGpzV3JhcHBl
ckNsYXNzKHJvb3QuYXR0cmlidXRlcy5jb25zdHJ1Y3RvcikgaXMgJ05hbWVkTm9kZU1hcENvbnN0
cnVjdG9yJwogUEFTUyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3Io
cm9vdCwgMCwgbnVsbCwgZmFsc2UpKSBpcyAnTm9kZUl0ZXJhdG9yJwogUEFTUyBqc1dyYXBwZXJD
bGFzcyhkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3Iocm9vdCwgMCwgbnVsbCwgZmFsc2UpLl9f
cHJvdG9fXykgaXMgJ05vZGVJdGVyYXRvclByb3RvdHlwZScKIFBBU1MganNXcmFwcGVyQ2xhc3Mo
ZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKHJvb3QsIDAsIG51bGwsIGZhbHNlKS5jb25zdHJ1
Y3RvcikgaXMgJ05vZGVJdGVyYXRvckNvbnN0cnVjdG9yJwpAQCAtMTM2LDcgKzEzNiw3IEBAIEhU
TUwgRE9NCiAKIFBBU1MganNXcmFwcGVyQ2xhc3Mocm9vdC5jaGlsZHJlbikgaXMgJ0hUTUxDb2xs
ZWN0aW9uJwogUEFTUyBqc1dyYXBwZXJDbGFzcyhyb290LmNoaWxkcmVuLl9fcHJvdG9fXykgaXMg
J0hUTUxDb2xsZWN0aW9uUHJvdG90eXBlJwotRkFJTCBqc1dyYXBwZXJDbGFzcyhyb290LmNoaWxk
cmVuLmNvbnN0cnVjdG9yKSBzaG91bGQgYmUgSFRNTENvbGxlY3Rpb25Db25zdHJ1Y3Rvci4gV2Fz
IEZ1bmN0aW9uLgorUEFTUyBqc1dyYXBwZXJDbGFzcyhyb290LmNoaWxkcmVuLmNvbnN0cnVjdG9y
KSBpcyAnSFRNTENvbGxlY3Rpb25Db25zdHJ1Y3RvcicKIFBBU1MganNXcmFwcGVyQ2xhc3MoZG9j
dW1lbnQpIGlzICdIVE1MRG9jdW1lbnQnCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50Ll9f
cHJvdG9fXykgaXMgJ0hUTUxEb2N1bWVudFByb3RvdHlwZScKIFBBU1MganNXcmFwcGVyQ2xhc3Mo
ZG9jdW1lbnQuY29uc3RydWN0b3IpIGlzICdIVE1MRG9jdW1lbnRDb25zdHJ1Y3RvcicK
</data>

          </attachment>
      

    </bug>

</bugzilla>