<?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>55351</bug_id>
          
          <creation_ts>2011-02-27 22:26:47 -0800</creation_ts>
          <short_desc>Add templatized CSSMutableStyleDeclaration::get{ShorthandValue, CommonValue, LayeredShorthandValue}()</short_desc>
          <delta_ts>2011-03-09 21:02:12 -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>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>darin</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>358895</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-02-27 22:26:47 -0800</bug_when>
    <thetext>We should add template variants of CSSMutableStyleDeclaration::get{ShorthandValue, CommonValue, LayeredShorthandValue}() that are capable of determining the size of the passed array so that the caller does not need to provide such information. This helps improve the readability of the code (by removing redundant information) as well as makes usage of these functions less error prone (since the caller doesn&apos;t need to provide the size of the array).

For completeness, we&apos;ve used this technique before for functions RenderListMarker::to{Alphabetic, Numeric, Symbolic}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358898</commentid>
    <comment_count>1</comment_count>
      <attachid>84018</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-02-27 22:36:51 -0800</bug_when>
    <thetext>Created attachment 84018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363198</commentid>
    <comment_count>2</comment_count>
      <attachid>84915</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-06 20:09:18 -0800</bug_when>
    <thetext>Created attachment 84915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363386</commentid>
    <comment_count>3</comment_count>
      <attachid>84915</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-07 09:57:49 -0800</bug_when>
    <thetext>Comment on attachment 84915
Patch

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

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.h:163
&gt; +    template &lt;size_t size&gt; String getShorthandValue(const int (&amp;properties)[size]) const { return getShorthandValue(properties, size); }
&gt; +    template &lt;size_t size&gt; String getCommonValue(const int (&amp;properties)[size]) const { return getCommonValue(properties, size); }
&gt; +    template &lt;size_t size&gt; String getLayeredShorthandValue(const int (&amp;properties)[size]) const { return getLayeredShorthandValue(properties, size); }

I like to leave out the space between “template” and “&lt;” by analogy with function calls. Not sure others like that style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364317</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-08 21:51:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I like to leave out the space between “template” and “&lt;” by analogy with function calls. Not sure others like that style.

Will change before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364975</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-09 21:02:12 -0800</bug_when>
    <thetext>Committed r80620: &lt;http://trac.webkit.org/changeset/80620&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84018</attachid>
            <date>2011-02-27 22:36:51 -0800</date>
            <delta_ts>2011-03-06 20:09:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55351-20110227223649.patch</filename>
            <type>text/plain</type>
            <size>14842</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODQxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMjcgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0ZW1wbGF0aXplZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0e1Nob3J0aGFuZFZhbHVlLCBDb21tb25WYWx1ZSwgTGF5ZXJlZFNob3J0aGFuZFZhbHVl
fSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTM1
MQorCisgICAgICAgIEJ5IHVzaW5nIHNvbWUgdGVtcGxhdGUgbWFnaWMgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmdldHtTaG9ydGhhbmRWYWx1ZSwgQ29tbW9uVmFsdWUsIExheWVyZWRTaG9y
dGhhbmRWYWx1ZX0oKQorICAgICAgICBjYW4gYmUgY2FsbGVkIG9uIGFuIGFycmF5IEEgd2l0aG91
dCB0aGUgY2FsbGVyIGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGUgc2l6ZSBvZiBBLgorCisgICAg
ICAgIE5vIGZ1bmN0aW9uYWxpdHkgd2FzIGNoYW5nZWQuIFNvIG5vIG5ldyB0ZXN0cy4KKworICAg
ICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZSk6IE1vZGlm
aWVkIHRvIGNhbGwgdGVtcGxhdGl6ZWQgdmFyaWFudHMgb2YKKyAgICAgICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmdldHtTaG9ydGhhbmRWYWx1ZSwgQ29tbW9uVmFsdWUsIExheWVyZWRT
aG9ydGhhbmRWYWx1ZX0oKS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUpOiBSZW5hbWVkIHNlY29uZCBhcmd1bWVu
dCBmcm9tICJudW1iZXIiIHRvICJzaXplIgorICAgICAgICB0byBiZXR0ZXIgcmVmbGVjdCBpdHMg
cHVycG9zZSAtIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBwYXNzZWQgYXJyYXkuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U2hvcnRoYW5kVmFsdWUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRD
b21tb25WYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNzc1RleHQpOiBNb2RpZmllZCB0byBjYWxsIHRlbXBsYXRpemVkIHZhcmlhbnQg
b2YgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFNob3J0aGFuZFZhbHVlKCkuCisgICAg
ICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U2hvcnRoYW5kVmFsdWUpOiBBZGRlZCB0
ZW1wbGF0aXplZCBmdW5jdGlvbiB0aGF0IGNhbiBkZXRlcm1pbmUKKyAgICAgICAgdGhlIHNpemUg
b2YgYSBwYXNzZWQgYXJyYXkuIENoYW5nZWQgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQgdG8gc2l6
ZV90IHNpbmNlIGl0IHJlcHJlc2VudHMgdGhlIHNpemUgb2YKKyAgICAgICAgYW4gYXJyYXkuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q29tbW9uVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUpOiBEaXR0by4KKwogMjAxMS0wMi0yNyAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDc5ODM1KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTExLDExICsxMTEsMTEgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOiB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyBUaGUgY29kZSBpbiBjc3NwYXJzZXIu
Y3BwIGlzIGNvbmZ1c2luZwogICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHBy
b3BlcnRpZXMsIDIpOworICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1
ZShwcm9wZXJ0aWVzKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdDogewogICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkg
fTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGll
cywgMik7CisgICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3Bl
cnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOiB7
CiAgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s5XSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IsCkBAIC0xMjcsNyArMTI3LDcgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpnZXRQcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4g
fTsgCi0gICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRp
ZXMsIDkpOworICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9w
ZXJ0aWVzKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOiB7CiAg
ICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXVs0XSA9IHt7IENTU1Byb3BlcnR5Qm9y
ZGVyVG9wV2lkdGgsCkBAIC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpnZXRQcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9fTsKICAgICAgICAgICAgIFN0cmluZyBy
ZXM7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgo
cHJvcGVydGllcyk7ICsraSkgewotICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENv
bW1vblZhbHVlKHByb3BlcnRpZXNbaV0sIDQpOworICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1
ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOwogICAgICAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuaXNOdWxsKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOwpAQCAtMTU2LDI3ICsxNTYsMjcg
QEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wOiB7CiAgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShw
cm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9w
ZXJ0aWVzKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6
IHsKICAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3J9
OwotICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDMpOwor
ICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206IHsKICAgICAgICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3J9OwotICAgICAgICAg
ICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDMpOworICAgICAgICAgICAg
cmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OiB7CiAgICAgICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhh
bmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRW
YWx1ZShwcm9wZXJ0aWVzKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZTogewogICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3Bl
cnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciB9OwotICAg
ICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDMpOworICAgICAg
ICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjogewogICAgICAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRDb2xvciwKQEAgLTIwMCw3ICsyMDAsNyBAQCBTdHJpbmcgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmdldFByCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU92ZXJmbG93OiB7CiAgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsg
Q1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZIH07Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0Q29tbW9uVmFsdWUocHJvcGVydGllcywgMik7CisgICAgICAgICAgICByZXR1
cm4gZ2V0Q29tbW9uVmFsdWUocHJvcGVydGllcyk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVBhZGRpbmc6IHsKICAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRd
ID0geyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LApAQCAt
MjEwLDQwICsyMTAsNDAgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOiB7CiAgICAgICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAgICAgIHJldHVybiBn
ZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRT
aG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhp
cyBjb3JyZWN0PyBUaGUgY29kZSBpbiBjc3NwYXJzZXIuY3BwIGlzIGNvbmZ1c2luZwogICAgICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIH07Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDIpOworICAgICAgICAg
ICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDogewogICAgICAgICAg
ICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICAgICAgICAgIHJldHVybiBn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMik7CisgICAgICAgICAgICByZXR1
cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOiB7CiAgICAgICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luIH07Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDYpOworICAg
ICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOiB7
CiAgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5YLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblog
fTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsK
KyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjogewogICAgICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb25UaW1pbmdGdW5jdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkgfTsK
LSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywg
NCk7CisgICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRp
ZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246
IHsKICAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzddID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbk5hbWUsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25UaW1pbmdGdW5jdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVj
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJl
ZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDcpOworICAgICAgICAgICAgcmV0dXJuIGdldExh
eWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKICAgICAgICAgfQogI2lmIEVOQUJMRShT
VkcpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXI6IHsKQEAgLTI4MywxNSArMjgzLDE1
IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0NFYKICAgICByZXR1cm4g
cmVzOwogfQogCi1TdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldExheWVyZWRT
aG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHVuc2lnbmVkIG51bWJlcikgY29u
c3QKK1N0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0TGF5ZXJlZFNob3J0aGFu
ZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90IHNpemUpIGNvbnN0CiB7CiAgICAg
U3RyaW5nIHJlczsKIAogICAgIC8vIEJlZ2luIGJ5IGNvbGxlY3RpbmcgdGhlIHByb3BlcnRpZXMg
aW50byBhbiBhcnJheS4KLSAgICBWZWN0b3I8IFJlZlB0cjxDU1NWYWx1ZT4gPiB2YWx1ZXMobnVt
YmVyKTsKKyAgICBWZWN0b3I8IFJlZlB0cjxDU1NWYWx1ZT4gPiB2YWx1ZXMoc2l6ZSk7CiAgICAg
c2l6ZV90IG51bUxheWVycyA9IDA7CiAgICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1iZXI7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAg
ICAgICAgIHZhbHVlc1tpXSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7CiAg
ICAgICAgIGlmICh2YWx1ZXNbaV0pIHsKICAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0tPmlzVmFs
dWVMaXN0KCkpIHsKQEAgLTMwOSw3ICszMDksNyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmdldExhCiAgICAgICAgIGJvb2wgdXNlUmVwZWF0WFNob3J0aGFuZCA9IGZhbHNl
OwogICAgICAgICBib29sIHVzZVJlcGVhdFlTaG9ydGhhbmQgPSBmYWxzZTsKICAgICAgICAgYm9v
bCB1c2VTaW5nbGVXb3JkU2hvcnRoYW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgbnVtYmVyOyBqKyspIHsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBz
aXplOyBqKyspIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWU7CiAgICAgICAg
ICAgICBpZiAodmFsdWVzW2pdKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlc1tqXS0+aXNW
YWx1ZUxpc3QoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmdldExhCiAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tqXSA9PSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYICYmIGlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVzW2pd
KSkgewogCiAgICAgICAgICAgICAgICAgLy8gQlVHIDQ5MDU1OiBtYWtlIHN1cmUgdGhlIHZhbHVl
IHdhcyBub3QgcmVzZXQgaW4gdGhlIGxheWVyIGNoZWNrIGp1c3QgYWJvdmUuCi0gICAgICAgICAg
ICAgICAgaWYgKGogPCBudW1iZXIgLSAxICYmIHByb3BlcnRpZXNbaiArIDFdID09IENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFkgJiYgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoaiA8
IHNpemUgLSAxICYmIHByb3BlcnRpZXNbaiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFkgJiYgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB5
VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gbmV4dFZhbHVlID0g
dmFsdWVzW2ogKyAxXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRWYWx1ZS0+aXNWYWx1
ZUxpc3QoKSkKQEAgLTM4NCwxMCArMzg0LDEwIEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0TGEKICAgICByZXR1cm4gcmVzOwogfQogCi1TdHJpbmcgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywg
aW50IG51bWJlcikgY29uc3QKK1N0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6ZSkgY29uc3QK
IHsKICAgICBTdHJpbmcgcmVzOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyOyArK2kp
IHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAo
IWlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVzW2ldKSkgewogICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogcHJvdmlkZSBkZWZhdWx0IHZhbHVlIGlmICF2YWx1ZQpAQCAt
NDAyLDEwICs0MDIsMTAgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRT
aAogfQogCiAvLyBvbmx5IHJldHVybnMgYSBub24tbnVsbCB2YWx1ZSBpZiBhbGwgcHJvcGVydGll
cyBoYXZlIHRoZSBzYW1lLCBub24tbnVsbCB2YWx1ZQotU3RyaW5nIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpnZXRDb21tb25WYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1i
ZXIpIGNvbnN0CitTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldENvbW1vblZh
bHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90IHNpemUpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHJlczsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlcjsgKytpKSB7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7CiAgICAgICAgIGlm
ICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC02NjksNyArNjY5LDcg
QEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjc3NUZQogICAgICAgICBTdHJp
bmcgcG9zaXRpb25WYWx1ZTsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b25ZIH07CiAgICAgICAgIGlmIChwb3NpdGlvblhQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgp
IHx8IHBvc2l0aW9uWVByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIAotICAgICAgICAgICAg
cG9zaXRpb25WYWx1ZSA9IGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAyKTsK
KyAgICAgICAgICAgIHBvc2l0aW9uVmFsdWUgPSBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJv
cGVydGllcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uVmFsdWUgPSBwb3Np
dGlvblhQcm9wLT52YWx1ZSgpLT5jc3NUZXh0KCkgKyAiICIgKyBwb3NpdGlvbllQcm9wLT52YWx1
ZSgpLT5jc3NUZXh0KCk7CiAgICAgICAgIHJlc3VsdCArPSAiYmFja2dyb3VuZC1wb3NpdGlvbjog
IiArIHBvc2l0aW9uVmFsdWUgKyAocG9zaXRpb25YUHJvcC0+aXNJbXBvcnRhbnQoKSA/ICIgIWlt
cG9ydGFudCIgOiAiIikgKyAiOyAiOwpAQCAtNjg1LDcgKzY4NSw3IEBAIFN0cmluZyBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3NzVGUKICAgICAgICAgU3RyaW5nIHJlcGVhdFZhbHVlOwog
ICAgICAgICBjb25zdCBpbnQgcmVwZWF0UHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwogICAgICAgICBp
ZiAocmVwZWF0WFByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgcmVwZWF0WVByb3AtPnZh
bHVlKCktPmlzVmFsdWVMaXN0KCkpIAotICAgICAgICAgICAgcmVwZWF0VmFsdWUgPSBnZXRMYXll
cmVkU2hvcnRoYW5kVmFsdWUocmVwZWF0UHJvcGVydGllcywgMik7CisgICAgICAgICAgICByZXBl
YXRWYWx1ZSA9IGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShyZXBlYXRQcm9wZXJ0aWVzKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmVwZWF0VmFsdWUgPSByZXBlYXRYUHJvcC0+dmFsdWUo
KS0+Y3NzVGV4dCgpICsgIiAiICsgcmVwZWF0WVByb3AtPnZhbHVlKCktPmNzc1RleHQoKTsKICAg
ICAgICAgcmVzdWx0ICs9ICJiYWNrZ3JvdW5kLXJlcGVhdDogIiArIHJlcGVhdFZhbHVlICsgKHJl
cGVhdFhQcm9wLT5pc0ltcG9ydGFudCgpID8gIiAhaW1wb3J0YW50IiA6ICIiKSArICI7ICI7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
aAkocmV2aXNpb24gNzk4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDExICsxNTAsMTUgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCi0gICAgU3RyaW5nIGdldFNo
b3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bWJlcikgY29uc3Q7Ci0g
ICAgU3RyaW5nIGdldENvbW1vblZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bWJl
cikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQq
IHByb3BlcnRpZXMsIHVuc2lnbmVkIG51bWJlcikgY29uc3Q7CisgICAgU3RyaW5nIGdldFNob3J0
aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90KSBjb25zdDsKKyAgICBTdHJp
bmcgZ2V0Q29tbW9uVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0Owor
ICAgIFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVz
LCBzaXplX3QpIGNvbnN0OwogICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IGludCogcHJvcGVy
dGllcykgY29uc3Q7Ci0gICAgCisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IFN0cmluZyBn
ZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQgKCZwcm9wZXJ0aWVzKVtzaXplXSkgY29uc3QgeyBy
ZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgc2l6ZSk7IH0KKyAgICB0ZW1wbGF0
ZSA8c2l6ZV90IHNpemU+IFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBpbnQgKCZwcm9wZXJ0
aWVzKVtzaXplXSkgY29uc3QgeyByZXR1cm4gZ2V0Q29tbW9uVmFsdWUocHJvcGVydGllcywgc2l6
ZSk7IH0KKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IFN0cmluZyBnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUoY29uc3QgaW50ICgmcHJvcGVydGllcylbc2l6ZV0pIGNvbnN0IHsgcmV0dXJuIGdl
dExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCBzaXplKTsgfQorCiAgICAgdm9pZCBz
ZXRQcm9wZXJ0eUludGVybmFsKGNvbnN0IENTU1Byb3BlcnR5JiwgQ1NTUHJvcGVydHkqIHNsb3Qg
PSAwKTsKICAgICBib29sIHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBi
b29sIG5vdGlmeUNoYW5nZWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84915</attachid>
            <date>2011-03-06 20:09:18 -0800</date>
            <delta_ts>2011-03-07 09:57:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55351-20110306200916.patch</filename>
            <type>text/plain</type>
            <size>14901</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDQzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDMtMDYgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0ZW1wbGF0aXplZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0e1Nob3J0aGFuZFZhbHVlLCBDb21tb25WYWx1ZSwgTGF5ZXJlZFNob3J0aGFuZFZhbHVl
fSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTM1
MQorCisgICAgICAgIEJ5IHVzaW5nIHNvbWUgdGVtcGxhdGUgbWFnaWMgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmdldHtTaG9ydGhhbmRWYWx1ZSwgQ29tbW9uVmFsdWUsIExheWVyZWRTaG9y
dGhhbmRWYWx1ZX0oKQorICAgICAgICBjYW4gYmUgY2FsbGVkIG9uIGFuIGFycmF5IEEgd2l0aG91
dCB0aGUgY2FsbGVyIGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGUgc2l6ZSBvZiBBLgorCisgICAg
ICAgIE5vIGZ1bmN0aW9uYWxpdHkgd2FzIGNoYW5nZWQuIFNvIG5vIG5ldyB0ZXN0cy4KKworICAg
ICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZSk6IE1vZGlm
aWVkIHRvIGNhbGwgdGVtcGxhdGl6ZWQgdmFyaWFudHMgb2YKKyAgICAgICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmdldHtTaG9ydGhhbmRWYWx1ZSwgQ29tbW9uVmFsdWUsIExheWVyZWRT
aG9ydGhhbmRWYWx1ZX0oKS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUpOiBSZW5hbWVkIHNlY29uZCBhcmd1bWVu
dCBmcm9tICJudW1iZXIiIHRvICJzaXplIgorICAgICAgICB0byBiZXR0ZXIgcmVmbGVjdCBpdHMg
cHVycG9zZSAtIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBwYXNzZWQgYXJyYXkuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U2hvcnRoYW5kVmFsdWUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRD
b21tb25WYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNzc1RleHQpOiBNb2RpZmllZCB0byBjYWxsIHRlbXBsYXRpemVkIHZhcmlhbnQg
b2YgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFNob3J0aGFuZFZhbHVlKCkuCisgICAg
ICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U2hvcnRoYW5kVmFsdWUpOiBBZGRlZCB0
ZW1wbGF0aXplZCBmdW5jdGlvbiB0aGF0IGNhbiBkZXRlcm1pbmUKKyAgICAgICAgdGhlIHNpemUg
b2YgYSBwYXNzZWQgYXJyYXkuIENoYW5nZWQgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQgdG8gc2l6
ZV90IHNpbmNlIGl0IHJlcHJlc2VudHMgdGhlIHNpemUgb2YKKyAgICAgICAgYW4gYXJyYXkuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q29tbW9uVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUpOiBEaXR0by4KKwogMjAxMS0wMy0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
bnR0aSBLb2l2aXN0by4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gODA0NDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjksMTEgKzEyOSwxMSBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFBy
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246IHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/IFRoZSBjb2RlIGluIGNzc3BhcnNlci5jcHAg
aXMgY29uZnVzaW5nCiAgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blkgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVy
dGllcywgMik7CisgICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHBy
b3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0OiB7CiAgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9Owot
ICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAy
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGll
cyk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKICAg
ICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzldID0geyBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciwKQEAgLTE0NSw3ICsxNDUsNyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmdldFByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiB9OyAK
LSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywg
OSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRp
ZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKICAgICAg
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdWzRdID0ge3sgQ1NTUHJvcGVydHlCb3JkZXJU
b3BXaWR0aCwKQEAgLTE2Miw3ICsxNjIsNyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmdldFByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH19OwogICAgICAgICAgICAgU3RyaW5nIHJlczsK
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChwcm9w
ZXJ0aWVzKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gZ2V0Q29tbW9u
VmFsdWUocHJvcGVydGllc1tpXSwgNCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0g
Z2V0Q29tbW9uVmFsdWUocHJvcGVydGllc1tpXSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc051bGwoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcy5pc051bGwoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAiICI7CkBAIC0xNzQsMjcgKzE3NCwyNyBAQCBT
dHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFByCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3A6IHsKICAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNd
ID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3J9OwotICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3Bl
cnRpZXMsIDMpOworICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRp
ZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDogewog
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcn07Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMyk7CisgICAg
ICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbTogewogICAgICAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcn07Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMyk7CisgICAgICAgICAgICByZXR1
cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6IHsKICAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0U3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3J9OwotICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZh
bHVlKHByb3BlcnRpZXMsIDMpOworICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVl
KHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
OiB7CiAgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlP
dXRsaW5lV2lkdGgsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMyk7CisgICAgICAgICAg
ICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOiB7CiAgICAgICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodENvbG9yLApAQCAtMjE4LDcgKzIxOCw3IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHIKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3c6IHsKICAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQ
cm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kgfTsKLSAgICAgICAgICAgIHJl
dHVybiBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzLCAyKTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZzogewogICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7
IENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsCkBAIC0yMjgs
NDAgKzIyOCw0MCBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFByCiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6IHsKICAgICAgICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1Byb3BlcnR5
TGlzdFN0eWxlUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSB9OwotICAgICAgICAgICAgcmV0dXJuIGdldFNo
b3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDMpOworICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0
aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb246IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNv
cnJlY3Q/IFRoZSBjb2RlIGluIGNzc3BhcnNlci5jcHAgaXMgY29uZnVzaW5nCiAgICAgICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkgfTsKLSAgICAgICAgICAgIHJldHVy
biBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMik7CisgICAgICAgICAgICBy
ZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OiB7CiAgICAgICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OwotICAgICAgICAgICAgcmV0dXJuIGdldExh
eWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAyKTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6IHsKICAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b24sIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4gfTsKLSAgICAgICAgICAg
IHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgNik7CisgICAgICAg
ICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46IHsKICAg
ICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiB9Owot
ICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDMpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOiB7CiAgICAgICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
UHJvcGVydHksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
blRpbWluZ0Z1bmN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSB9OwotICAg
ICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCA0KTsK
KyAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjogewog
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbN10gPSB7IENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uTmFtZSwgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRmlsbE1vZGUgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hv
cnRoYW5kVmFsdWUocHJvcGVydGllcywgNyk7CisgICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJl
ZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFNWRykK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjogewpAQCAtMzE3LDE1ICszMTcsMTUgQEAg
U3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXQ0VgogICAgIHJldHVybiByZXM7
CiB9CiAKLVN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0TGF5ZXJlZFNob3J0
aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgdW5zaWduZWQgbnVtYmVyKSBjb25zdAor
U3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6ZSkgY29uc3QKIHsKICAgICBTdHJp
bmcgcmVzOwogCiAgICAgLy8gQmVnaW4gYnkgY29sbGVjdGluZyB0aGUgcHJvcGVydGllcyBpbnRv
IGFuIGFycmF5LgotICAgIFZlY3RvcjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlcyhudW1iZXIp
OworICAgIFZlY3RvcjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlcyhzaXplKTsKICAgICBzaXpl
X3QgbnVtTGF5ZXJzID0gMDsKICAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
cjsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAg
ICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldKTsKICAgICAg
ICAgaWYgKHZhbHVlc1tpXSkgewogICAgICAgICAgICAgaWYgKHZhbHVlc1tpXS0+aXNWYWx1ZUxp
c3QoKSkgewpAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0TGEKICAgICAgICAgYm9vbCB1c2VSZXBlYXRYU2hvcnRoYW5kID0gZmFsc2U7CiAg
ICAgICAgIGJvb2wgdXNlUmVwZWF0WVNob3J0aGFuZCA9IGZhbHNlOwogICAgICAgICBib29sIHVz
ZVNpbmdsZVdvcmRTaG9ydGhhbmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBudW1iZXI7IGorKykgeworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHNpemU7
IGorKykgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZTsKICAgICAgICAgICAg
IGlmICh2YWx1ZXNbal0pIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWVzW2pdLT5pc1ZhbHVl
TGlzdCgpKQpAQCAtMzY2LDcgKzM2Niw3IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0TGEKICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2pdID09IENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFggJiYgaXNQcm9wZXJ0eUltcGxpY2l0KHByb3BlcnRpZXNbal0pKSB7
CiAKICAgICAgICAgICAgICAgICAvLyBCVUcgNDkwNTU6IG1ha2Ugc3VyZSB0aGUgdmFsdWUgd2Fz
IG5vdCByZXNldCBpbiB0aGUgbGF5ZXIgY2hlY2sganVzdCBhYm92ZS4KLSAgICAgICAgICAgICAg
ICBpZiAoaiA8IG51bWJlciAtIDEgJiYgcHJvcGVydGllc1tqICsgMV0gPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WSAmJiB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChqIDwgc2l6
ZSAtIDEgJiYgcHJvcGVydGllc1tqICsgMV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WSAmJiB2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHlWYWx1
ZTsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBuZXh0VmFsdWUgPSB2YWx1
ZXNbaiArIDFdOwogICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFZhbHVlLT5pc1ZhbHVlTGlz
dCgpKQpAQCAtNDE4LDEwICs0MTgsMTAgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpnZXRMYQogICAgIHJldHVybiByZXM7CiB9CiAKLVN0cmluZyBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQg
bnVtYmVyKSBjb25zdAorU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRTaG9y
dGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCBzaXplKSBjb25zdAogewog
ICAgIFN0cmluZyByZXM7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXI7ICsraSkgewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghaXNQ
cm9wZXJ0eUltcGxpY2l0KHByb3BlcnRpZXNbaV0pKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBwcm92aWRlIGRlZmF1bHQgdmFsdWUgaWYgIXZhbHVlCkBAIC00MzYs
MTAgKzQzNiwxMCBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFNoCiB9
CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9wZXJ0aWVzIGhh
dmUgdGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmdldENvbW1vblZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bWJlcikg
Y29uc3QKK1N0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q29tbW9uVmFsdWUo
Y29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6ZSkgY29uc3QKIHsKICAgICBTdHJpbmcg
cmVzOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyOyArK2kpIHsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldKTsKICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTcwMyw3ICs3MDMsNyBAQCBT
dHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNzc1RlCiAgICAgICAgIFN0cmluZyBw
b3NpdGlvblZhbHVlOwogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkg
fTsKICAgICAgICAgaWYgKHBvc2l0aW9uWFByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwg
cG9zaXRpb25ZUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgCi0gICAgICAgICAgICBwb3Np
dGlvblZhbHVlID0gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDIpOworICAg
ICAgICAgICAgcG9zaXRpb25WYWx1ZSA9IGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0
aWVzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zaXRpb25WYWx1ZSA9IHBvc2l0aW9u
WFByb3AtPnZhbHVlKCktPmNzc1RleHQoKSArICIgIiArIHBvc2l0aW9uWVByb3AtPnZhbHVlKCkt
PmNzc1RleHQoKTsKICAgICAgICAgcmVzdWx0ICs9ICJiYWNrZ3JvdW5kLXBvc2l0aW9uOiAiICsg
cG9zaXRpb25WYWx1ZSArIChwb3NpdGlvblhQcm9wLT5pc0ltcG9ydGFudCgpID8gIiAhaW1wb3J0
YW50IiA6ICIiKSArICI7ICI7CkBAIC03MTksNyArNzE5LDcgQEAgU3RyaW5nIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjc3NUZQogICAgICAgICBTdHJpbmcgcmVwZWF0VmFsdWU7CiAgICAg
ICAgIGNvbnN0IGludCByZXBlYXRQcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07CiAgICAgICAgIGlmIChy
ZXBlYXRYUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSB8fCByZXBlYXRZUHJvcC0+dmFsdWUo
KS0+aXNWYWx1ZUxpc3QoKSkgCi0gICAgICAgICAgICByZXBlYXRWYWx1ZSA9IGdldExheWVyZWRT
aG9ydGhhbmRWYWx1ZShyZXBlYXRQcm9wZXJ0aWVzLCAyKTsKKyAgICAgICAgICAgIHJlcGVhdFZh
bHVlID0gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHJlcGVhdFByb3BlcnRpZXMpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICByZXBlYXRWYWx1ZSA9IHJlcGVhdFhQcm9wLT52YWx1ZSgpLT5j
c3NUZXh0KCkgKyAiICIgKyByZXBlYXRZUHJvcC0+dmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgICAg
ICByZXN1bHQgKz0gImJhY2tncm91bmQtcmVwZWF0OiAiICsgcmVwZWF0VmFsdWUgKyAocmVwZWF0
WFByb3AtPmlzSW1wb3J0YW50KCkgPyAiICFpbXBvcnRhbnQiIDogIiIpICsgIjsgIjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oCShy
ZXZpc2lvbiA4MDQ0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsMTIgKzE1MiwxNiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBTdHJpbmcgZ2V0U2hvcnRo
YW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtYmVyKSBjb25zdDsKLSAgICBT
dHJpbmcgZ2V0Q29tbW9uVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtYmVyKSBj
b25zdDsKLSAgICBTdHJpbmcgZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJv
cGVydGllcywgdW5zaWduZWQgbnVtYmVyKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0U2hvcnRoYW5k
VmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0OworICAgIFN0cmluZyBn
ZXRDb21tb25WYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCkgY29uc3Q7CisgICAg
U3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNp
emVfdCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldDRWYWx1ZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVz
KSBjb25zdDsKICAgICBTdHJpbmcgYm9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IGludCBwcm9wZXJ0
aWVzWzJdKSBjb25zdDsKLSAgICAKKworICAgIHRlbXBsYXRlIDxzaXplX3Qgc2l6ZT4gU3RyaW5n
IGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCAoJnByb3BlcnRpZXMpW3NpemVdKSBjb25zdCB7
IHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCBzaXplKTsgfQorICAgIHRlbXBs
YXRlIDxzaXplX3Qgc2l6ZT4gU3RyaW5nIGdldENvbW1vblZhbHVlKGNvbnN0IGludCAoJnByb3Bl
cnRpZXMpW3NpemVdKSBjb25zdCB7IHJldHVybiBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzLCBz
aXplKTsgfQorICAgIHRlbXBsYXRlIDxzaXplX3Qgc2l6ZT4gU3RyaW5nIGdldExheWVyZWRTaG9y
dGhhbmRWYWx1ZShjb25zdCBpbnQgKCZwcm9wZXJ0aWVzKVtzaXplXSkgY29uc3QgeyByZXR1cm4g
Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIHNpemUpOyB9CisKICAgICB2b2lk
IHNldFByb3BlcnR5SW50ZXJuYWwoY29uc3QgQ1NTUHJvcGVydHkmLCBDU1NQcm9wZXJ0eSogc2xv
dCA9IDApOwogICAgIGJvb2wgcmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoaW50IHByb3BlcnR5SUQs
IGJvb2wgbm90aWZ5Q2hhbmdlZCk7CiAK
</data>
<flag name="review"
          id="76962"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>