<?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>139616</bug_id>
          
          <creation_ts>2014-12-13 00:00:29 -0800</creation_ts>
          <short_desc>AX: Recursive crash at WebCore::accessibleNameForNode</short_desc>
          <delta_ts>2014-12-18 15:52:27 -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>Accessibility</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1055395</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-12-13 00:00:29 -0800</bug_when>
    <thetext>&gt;  1 com.apple.WebCore              0x7fff8d7e90fc WebCore::AXObjectCache::get(WebCore::Node*) + 0xc
   2 com.apple.WebCore              0x7fff8d7e8b6f WebCore::AXObjectCache::getOrCreate(WebCore::Node*) + 0x2f
   3 com.apple.WebCore              0x7fff8d7f7a0a WebCore::accessibleNameForNode(WebCore::Node*) + 0x16a
   4 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
   5 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
   6 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
   7 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
   8 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
   9 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  10 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  11 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  12 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  13 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  14 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  15 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  16 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  17 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  18 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  19 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  20 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  21 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  22 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  23 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  24 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  25 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  26 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  27 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  28 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  29 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  30 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  31 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  32 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  33 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  34 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  35 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  36 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  37 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  38 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  39 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  40 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  41 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  42 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  43 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  44 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  45 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  46 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  47 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  48 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  49 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  50 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  51 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  52 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  53 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  54 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  55 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  56 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  57 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  58 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  59 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  60 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  61 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  62 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  63 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  64 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  65 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  66 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  67 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  68 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  69 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  70 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  71 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  72 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407
  73 com.apple.WebCore              0x7fff8d7f7ace WebCore::accessibleNameForNode(WebCore::Node*) + 0x22e
  74 com.apple.WebCore              0x7fff8d7fa5ab WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector&lt;WebCore::Element*, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x7b
  75 com.apple.WebCore              0x7fff8d7fa94f WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() const + 0x3f
  76 com.apple.WebCore              0x7fff8d7f72a1 WebCore::AccessibilityNodeObject::ariaLabeledByText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0x31
  77 com.apple.WebCore              0x7fff8d7f5ab2 WebCore::AccessibilityNodeObject::alternativeText(WTF::Vector&lt;WebCore::AccessibilityText, 0ul, WTF::CrashOnOverflow&gt;&amp;) const + 0xf2
  78 com.apple.WebCore              0x7fff8d7f9b00 WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x300
  79 com.apple.WebCore              0x7fff8d804b17 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 0x407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055396</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-12-13 00:00:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/19064918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055399</commentid>
    <comment_count>2</comment_count>
      <attachid>243249</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-12-13 00:03:08 -0800</bug_when>
    <thetext>Created attachment 243249
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055400</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-13 00:05:10 -0800</bug_when>
    <thetext>Attachment 243249 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityObject.h:264:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055402</commentid>
    <comment_count>4</comment_count>
      <attachid>243250</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-12-13 00:07:56 -0800</bug_when>
    <thetext>Created attachment 243250
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056872</commentid>
    <comment_count>5</comment_count>
      <attachid>243250</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-12-18 13:12:39 -0800</bug_when>
    <thetext>Comment on attachment 243250
patch

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

Looks good to me, just one minor comment for consideration before landing.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1846
&gt; +static String accessibleNameForNode(Node* node, Node* labelledbyNode)

If you declare a default value for the new parameter (as in Node* labelledbyNode == nullptr), you can get rid of the calls to accessibleNameForObject passing nullptr explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056911</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-12-18 15:01:11 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 243250 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243250&amp;action=review
&gt; 
&gt; Looks good to me, just one minor comment for consideration before landing.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1846
&gt; &gt; +static String accessibleNameForNode(Node* node, Node* labelledbyNode)
&gt; 
&gt; If you declare a default value for the new parameter (as in Node*
&gt; labelledbyNode == nullptr), you can get rid of the calls to
&gt; accessibleNameForObject passing nullptr explicitly.

Will do. thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056932</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-12-18 15:52:27 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/177537</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243249</attachid>
            <date>2014-12-13 00:03:08 -0800</date>
            <delta_ts>2014-12-13 00:07:56 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7502</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTEyLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFJlY3Vyc2l2ZSBj
cmFzaCBhdCBXZWJDb3JlOjphY2Nlc3NpYmxlTmFtZUZvck5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTYxNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuIGltYWdlIHRoYXQgdXNlcyBhcmlhLWxh
YmVsbGVkYnkgdG8gcmVmZXJlbmNlIGl0cyBvd24gcGFyZW50IGNhbiBsZWFkIHRvIGEgcmVjdXJz
aW9uIGNyYXNoLgorICAgICAgICBUaGVyZSBuZWVkcyB0byBiZSBzb21lIGluZm9ybWF0aW9uIHdl
IGNhbiBwYXNzIHRocm91Z2ggdGhlc2UgbWV0aG9kcyB0byBlbnN1cmUgd2UgZG9uJ3QgaGl0IHRo
aXMgY2FzZS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktZGVz
Y3JpcHRpb24tY3Jhc2guaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6YWx0ZXJuYXRpdmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2li
bGVOYW1lRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uRm9yRWxlbWVudHMpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVu
dE1vZGUpOgorCiAyMDE0LTEyLTEyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW01hY10gV29yayBhcm91bmQgYSBidWcgaW4gZHN5bXV0aWwgb24gb2xkZXIgT1MgdmVy
c2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAxNzY5MDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODksNyArODksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci1zdGF0aWMgU3RyaW5nIGFjY2Vzc2libGVOYW1lRm9yTm9kZShOb2RlKik7CitzdGF0aWMgU3Ry
aW5nIGFjY2Vzc2libGVOYW1lRm9yTm9kZShOb2RlKiwgTm9kZSopOwogCiBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoTm9kZSogbm9kZSkKICAgICA6IEFj
Y2Vzc2liaWxpdHlPYmplY3QoKQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAKICAgICBpZiAoaXM8SFRN
TEZpZWxkU2V0RWxlbWVudD4oKm5vZGUpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG93bmNhc3Q8SFRNTEZpZWxk
U2V0RWxlbWVudD4oKm5vZGUpLmxlZ2VuZCgpKTsKICAgICAgICAgaWYgKG9iamVjdCAmJiAhb2Jq
ZWN0LT5pc0hpZGRlbigpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0LT5ub2RlKCkpLCBBbHRlcm5hdGl2
ZVRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQo
YWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpLCBudWxscHRyKSwgQWx0ZXJuYXRp
dmVUZXh0KSk7CiAgICAgfQogICAgIAogICAgIC8vIFNWRyBlbGVtZW50cyBhbGwgY2FuIGhhdmUg
YSA8c3ZnOnRpdGxlPiBlbGVtZW50IGluc2lkZSB3aGljaCBzaG91bGQgYWN0IGFzIHRoZSBkZXNj
cmlwdGl2ZSB0ZXh0LgpAQCAtMTY2NSwxMCArMTY2NSwxMiBAQAogCiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlm
IChtb2RlLmlnbm9yZWRDaGlsZE5vZGUgJiYgY2hpbGQtPm5vZGUoKSA9PSBtb2RlLmlnbm9yZWRD
aGlsZE5vZGUpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
c2hvdWxkRGVyaXZlTmFtZUZyb21BdXRob3IgPSAobW9kZS5jaGlsZHJlbkluY2x1c2lvbiA9PSBB
Y2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGU6OlRleHRVbmRlckVsZW1lbnRNb2RlSW5j
bHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiAmJiAhY2hpbGQtPmFjY2Vzc2libGVOYW1lRGVy
aXZlc0Zyb21Db250ZW50KCkpOwogICAgICAgICBpZiAoc2hvdWxkRGVyaXZlTmFtZUZyb21BdXRo
b3IpIHsKLSAgICAgICAgICAgIGFwcGVuZE5hbWVUb1N0cmluZ0J1aWxkZXIoYnVpbGRlciwgYWNj
ZXNzaWJsZU5hbWVGb3JOb2RlKGNoaWxkLT5ub2RlKCkpKTsKKyAgICAgICAgICAgIGFwcGVuZE5h
bWVUb1N0cmluZ0J1aWxkZXIoYnVpbGRlciwgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKGNoaWxkLT5u
b2RlKCksIG51bGxwdHIpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMTg0MSw3ICsxODQzLDcgQEAKIAogLy8gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRz
IHRoZSBBUklBIGFjY2Vzc2libGUgbmFtZSBhcyBkZXNjcmliZWQgYnkgdGhlIE1vemlsbGEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAvLyBBUklBIEltcGxlbWVudGVy
J3MgR3VpZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXN0YXRpYyBTdHJp
bmcgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKE5vZGUqIG5vZGUpCitzdGF0aWMgU3RyaW5nIGFjY2Vz
c2libGVOYW1lRm9yTm9kZShOb2RlKiBub2RlLCBOb2RlKiBsYWJlbGxlZGJ5Tm9kZSkKIHsKICAg
ICBBU1NFUlQobm9kZSk7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTE4NzEsNyAr
MTg3Myw3IEBACiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGF4T2JqZWN0KSB7CiAgICAgICAg
IGlmIChheE9iamVjdC0+YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSkKLSAgICAg
ICAgICAgIHRleHQgPSBheE9iamVjdC0+dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4
dFVuZGVyRWxlbWVudE1vZGUoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlOjpUZXh0
VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4sIHRydWUpKTsK
KyAgICAgICAgICAgIHRleHQgPSBheE9iamVjdC0+dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmls
aXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
OjpUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4sIHRy
dWUsIGxhYmVsbGVkYnlOb2RlKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHRleHQgPSBlbGVtZW50
LmlubmVyVGV4dCgpOwogCkBAIC0xODkwLDcgKzE4OTIsNyBAQAogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKICAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGFwcGVuZE5hbWVUb1N0cmlu
Z0J1aWxkZXIoYnVpbGRlciwgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKGVsZW1lbnRzW2ldKSk7Cisg
ICAgICAgIGFwcGVuZE5hbWVUb1N0cmluZ0J1aWxkZXIoYnVpbGRlciwgYWNjZXNzaWJsZU5hbWVG
b3JOb2RlKGVsZW1lbnRzW2ldLCBub2RlKCkpKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTc2OTA0KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
NiwxMCArMjU2LDEyIEBACiAgICAgCiAgICAgQ2hpbGRyZW5JbmNsdXNpb24gY2hpbGRyZW5JbmNs
dXNpb247CiAgICAgYm9vbCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudDsKKyAgICBOb2RlKiBpZ25v
cmVkQ2hpbGROb2RlOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZShDaGlsZHJlbkluY2x1c2lvbiBjID0gVGV4dFVuZGVyRWxlbWVudE1vZGVTa2lwSWdub3JlZENo
aWxkcmVuLCBib29sIGkgPSBmYWxzZSkKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVu
dE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9IFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9y
ZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2UsIE5vZGUqIGlnbm9yZWQgPSBudWxscHRyKQogICAg
IDogY2hpbGRyZW5JbmNsdXNpb24oYykKICAgICAsIGluY2x1ZGVGb2N1c2FibGVDb250ZW50KGkp
CisgICAgLCBpZ25vcmVkQ2hpbGROb2RlKGlnbm9yZWQpCiAgICAgeyB9CiB9OwogICAgIApJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTc3MjU1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMTItMTMgIENocmlzIEZsZWl6YWNoICA8Y2Zs
ZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogUmVjdXJzaXZlIGNyYXNoIGF0IFdlYkNv
cmU6OmFjY2Vzc2libGVOYW1lRm9yTm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktZGVzY3JpcHRp
b24tY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fj
Y2Vzc2liaWxpdHktZGVzY3JpcHRpb24tY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTQtMTItMTIg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBU
ZXh0dXJlIHNpemUgdGVzdHMgZmFpbHVyZXMKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYWNjZXNzaWJpbGl0eS1kZXNjcmlwdGlvbi1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWRlc2NyaXB0aW9u
LWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYWNjZXNzaWJpbGl0eS1kZXNjcmlwdGlvbi1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorYSAgYgorTWFrZSBzdXJlIHRoYXQgaWYgYW4gaW1h
Z2UgcmVmZXJlbmNlcyBpdHMgcGFyZW50IGFzIHRoZSBhcmlhLWxhYmVsbGVkYnkgd2UgZG8gbm90
IGNyYXNoIGR1ZSB0byB0aGUgc2VsZi1yZWZlcmVuY2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitJbWFnZSBkZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlvbjogYSBiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWRlc2NyaXB0aW9uLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWRl
c2NyaXB0aW9uLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FjY2Vzc2liaWxpdHktZGVzY3JpcHRpb24tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKworPGRp
diBpZD0iY29udGVudCI+CithIDxpbWcgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIGFyaWEtbGFi
ZWxsZWRieT0iY29udGVudCIgaWQ9ImltYWdlIj4gYgorPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBk
ZXNjcmlwdGlvbigiTWFrZSBzdXJlIHRoYXQgaWYgYW4gaW1hZ2UgcmVmZXJlbmNlcyBpdHMgcGFy
ZW50IGFzIHRoZSBhcmlhLWxhYmVsbGVkYnkgd2UgZG8gbm90IGNyYXNoIGR1ZSB0byB0aGUgc2Vs
Zi1yZWZlcmVuY2UuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgICAgIGRlYnVnKCJJbWFnZSBkZXNjcmlwdGlvbjogIiArIGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiaW1hZ2UiKS5kZXNjcmlwdGlvbik7Cisg
ICAgfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243250</attachid>
            <date>2014-12-13 00:07:56 -0800</date>
            <delta_ts>2014-12-18 13:12:39 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7622</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTEyLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFJlY3Vyc2l2ZSBj
cmFzaCBhdCBXZWJDb3JlOjphY2Nlc3NpYmxlTmFtZUZvck5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTYxNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuIGltYWdlIHRoYXQgdXNlcyBhcmlhLWxh
YmVsbGVkYnkgdG8gcmVmZXJlbmNlIGl0cyBvd24gcGFyZW50IGNhbiBsZWFkIHRvIGEgcmVjdXJz
aW9uIGNyYXNoLgorICAgICAgICBUaGVyZSBuZWVkcyB0byBiZSBzb21lIGluZm9ybWF0aW9uIHdl
IGNhbiBwYXNzIHRocm91Z2ggdGhlc2UgbWV0aG9kcyB0byBlbnN1cmUgd2UgZG9uJ3QgaGl0IHRo
aXMgY2FzZS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktZGVz
Y3JpcHRpb24tY3Jhc2guaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6YWx0ZXJuYXRpdmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2li
bGVOYW1lRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uRm9yRWxlbWVudHMpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVu
dE1vZGUpOgorCiAyMDE0LTEyLTEyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW01hY10gV29yayBhcm91bmQgYSBidWcgaW4gZHN5bXV0aWwgb24gb2xkZXIgT1MgdmVy
c2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAxNzY5MDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODksNyArODksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci1zdGF0aWMgU3RyaW5nIGFjY2Vzc2libGVOYW1lRm9yTm9kZShOb2RlKik7CitzdGF0aWMgU3Ry
aW5nIGFjY2Vzc2libGVOYW1lRm9yTm9kZShOb2RlKiwgTm9kZSopOwogCiBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoTm9kZSogbm9kZSkKICAgICA6IEFj
Y2Vzc2liaWxpdHlPYmplY3QoKQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAKICAgICBpZiAoaXM8SFRN
TEZpZWxkU2V0RWxlbWVudD4oKm5vZGUpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG93bmNhc3Q8SFRNTEZpZWxk
U2V0RWxlbWVudD4oKm5vZGUpLmxlZ2VuZCgpKTsKICAgICAgICAgaWYgKG9iamVjdCAmJiAhb2Jq
ZWN0LT5pc0hpZGRlbigpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0LT5ub2RlKCkpLCBBbHRlcm5hdGl2
ZVRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQo
YWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpLCBudWxscHRyKSwgQWx0ZXJuYXRp
dmVUZXh0KSk7CiAgICAgfQogICAgIAogICAgIC8vIFNWRyBlbGVtZW50cyBhbGwgY2FuIGhhdmUg
YSA8c3ZnOnRpdGxlPiBlbGVtZW50IGluc2lkZSB3aGljaCBzaG91bGQgYWN0IGFzIHRoZSBkZXNj
cmlwdGl2ZSB0ZXh0LgpAQCAtMTY2NSwxMCArMTY2NSwxMiBAQAogCiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlm
IChtb2RlLmlnbm9yZWRDaGlsZE5vZGUgJiYgY2hpbGQtPm5vZGUoKSA9PSBtb2RlLmlnbm9yZWRD
aGlsZE5vZGUpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
c2hvdWxkRGVyaXZlTmFtZUZyb21BdXRob3IgPSAobW9kZS5jaGlsZHJlbkluY2x1c2lvbiA9PSBB
Y2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGU6OlRleHRVbmRlckVsZW1lbnRNb2RlSW5j
bHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiAmJiAhY2hpbGQtPmFjY2Vzc2libGVOYW1lRGVy
aXZlc0Zyb21Db250ZW50KCkpOwogICAgICAgICBpZiAoc2hvdWxkRGVyaXZlTmFtZUZyb21BdXRo
b3IpIHsKLSAgICAgICAgICAgIGFwcGVuZE5hbWVUb1N0cmluZ0J1aWxkZXIoYnVpbGRlciwgYWNj
ZXNzaWJsZU5hbWVGb3JOb2RlKGNoaWxkLT5ub2RlKCkpKTsKKyAgICAgICAgICAgIGFwcGVuZE5h
bWVUb1N0cmluZ0J1aWxkZXIoYnVpbGRlciwgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKGNoaWxkLT5u
b2RlKCksIG51bGxwdHIpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMTg0MSw3ICsxODQzLDcgQEAKIAogLy8gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRz
IHRoZSBBUklBIGFjY2Vzc2libGUgbmFtZSBhcyBkZXNjcmliZWQgYnkgdGhlIE1vemlsbGEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAvLyBBUklBIEltcGxlbWVudGVy
J3MgR3VpZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXN0YXRpYyBTdHJp
bmcgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKE5vZGUqIG5vZGUpCitzdGF0aWMgU3RyaW5nIGFjY2Vz
c2libGVOYW1lRm9yTm9kZShOb2RlKiBub2RlLCBOb2RlKiBsYWJlbGxlZGJ5Tm9kZSkKIHsKICAg
ICBBU1NFUlQobm9kZSk7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTE4NzEsNyAr
MTg3Myw3IEBACiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGF4T2JqZWN0KSB7CiAgICAgICAg
IGlmIChheE9iamVjdC0+YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSkKLSAgICAg
ICAgICAgIHRleHQgPSBheE9iamVjdC0+dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4
dFVuZGVyRWxlbWVudE1vZGUoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlOjpUZXh0
VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4sIHRydWUpKTsK
KyAgICAgICAgICAgIHRleHQgPSBheE9iamVjdC0+dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmls
aXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
OjpUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4sIHRy
dWUsIGxhYmVsbGVkYnlOb2RlKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHRleHQgPSBlbGVtZW50
LmlubmVyVGV4dCgpOwogCkBAIC0xODkwLDcgKzE4OTIsNyBAQAogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKICAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGFwcGVuZE5hbWVUb1N0cmlu
Z0J1aWxkZXIoYnVpbGRlciwgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKGVsZW1lbnRzW2ldKSk7Cisg
ICAgICAgIGFwcGVuZE5hbWVUb1N0cmluZ0J1aWxkZXIoYnVpbGRlciwgYWNjZXNzaWJsZU5hbWVG
b3JOb2RlKGVsZW1lbnRzW2ldLCBub2RlKCkpKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTc2OTA0KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
NiwxMSArMjU2LDEzIEBACiAgICAgCiAgICAgQ2hpbGRyZW5JbmNsdXNpb24gY2hpbGRyZW5JbmNs
dXNpb247CiAgICAgYm9vbCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudDsKKyAgICBOb2RlKiBpZ25v
cmVkQ2hpbGROb2RlOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZShDaGlsZHJlbkluY2x1c2lvbiBjID0gVGV4dFVuZGVyRWxlbWVudE1vZGVTa2lwSWdub3JlZENo
aWxkcmVuLCBib29sIGkgPSBmYWxzZSkKLSAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMpCi0gICAg
LCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudChpKQotICAgIHsgfQorICAgIEFjY2Vzc2liaWxpdHlU
ZXh0VW5kZXJFbGVtZW50TW9kZShDaGlsZHJlbkluY2x1c2lvbiBjID0gVGV4dFVuZGVyRWxlbWVu
dE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLCBib29sIGkgPSBmYWxzZSwgTm9kZSogaWdub3JlZCA9
IG51bGxwdHIpCisgICAgICAgIDogY2hpbGRyZW5JbmNsdXNpb24oYykKKyAgICAgICAgLCBpbmNs
dWRlRm9jdXNhYmxlQ29udGVudChpKQorICAgICAgICAsIGlnbm9yZWRDaGlsZE5vZGUoaWdub3Jl
ZCkKKyAgICAgICAgeyB9CiB9OwogICAgIAogZW51bSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24g
ewpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTc3MjU1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMTItMTMgIENocmlzIEZsZWl6YWNo
ICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogUmVjdXJzaXZlIGNyYXNoIGF0
IFdlYkNvcmU6OmFjY2Vzc2libGVOYW1lRm9yTm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktZGVz
Y3JpcHRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2FjY2Vzc2liaWxpdHktZGVzY3JpcHRpb24tY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTQt
MTItMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkdMXSBUZXh0dXJlIHNpemUgdGVzdHMgZmFpbHVyZXMKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYWNjZXNzaWJpbGl0eS1kZXNjcmlwdGlvbi1jcmFzaC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWRlc2Ny
aXB0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1kZXNjcmlwdGlvbi1jcmFzaC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorYSAgYgorTWFrZSBzdXJlIHRoYXQgaWYg
YW4gaW1hZ2UgcmVmZXJlbmNlcyBpdHMgcGFyZW50IGFzIHRoZSBhcmlhLWxhYmVsbGVkYnkgd2Ug
ZG8gbm90IGNyYXNoIGR1ZSB0byB0aGUgc2VsZi1yZWZlcmVuY2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitJbWFnZSBkZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlvbjogYSBiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWRlc2NyaXB0aW9uLWNyYXNo
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmls
aXR5LWRlc2NyaXB0aW9uLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktZGVzY3JpcHRpb24tY3Jhc2guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisK
KworPGRpdiBpZD0iY29udGVudCI+CithIDxpbWcgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIGFy
aWEtbGFiZWxsZWRieT0iY29udGVudCIgaWQ9ImltYWdlIj4gYgorPC9kaXY+CisKKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisK
KyAgICBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIHRoYXQgaWYgYW4gaW1hZ2UgcmVmZXJlbmNlcyBp
dHMgcGFyZW50IGFzIHRoZSBhcmlhLWxhYmVsbGVkYnkgd2UgZG8gbm90IGNyYXNoIGR1ZSB0byB0
aGUgc2VsZi1yZWZlcmVuY2UuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7CisgICAgICAgIGRlYnVnKCJJbWFnZSBkZXNjcmlwdGlvbjogIiArIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiaW1hZ2UiKS5kZXNjcmlwdGlv
bik7CisgICAgfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="268107"
          type_id="1"
          status="+"
          setter="mario"
    />
          </attachment>
      

    </bug>

</bugzilla>